aboutsummaryrefslogtreecommitdiff
path: root/SOURCES
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES')
-rw-r--r--SOURCES/0001-add-revoke_all-ioctl-to-release-event-and-joy-nodes-.patch208
-rw-r--r--SOURCES/0001-amd-pstate.patch734
-rw-r--r--SOURCES/0001-ntsync.patch3089
-rw-r--r--SOURCES/0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch22
-rw-r--r--SOURCES/Module.kabi_dup_riscv640
-rw-r--r--SOURCES/Module.kabi_riscv640
-rw-r--r--SOURCES/OpenRGB.patch703
-rw-r--r--SOURCES/Patchlist.changelog197
-rw-r--r--SOURCES/cachy-bbr3.patch3386
-rw-r--r--SOURCES/cachy-bore.patch1046
-rw-r--r--SOURCES/dracut-virt.conf10
-rw-r--r--SOURCES/fsync.patch166
-rw-r--r--SOURCES/gating.yaml7
-rw-r--r--SOURCES/hdr-config.patch118
-rw-r--r--SOURCES/kernel-aarch64-16k-debug-fedora.config120
-rw-r--r--SOURCES/kernel-aarch64-16k-fedora.config120
-rw-r--r--SOURCES/kernel-aarch64-64k-debug-rhel.config159
-rw-r--r--SOURCES/kernel-aarch64-64k-rhel.config157
-rw-r--r--SOURCES/kernel-aarch64-debug-fedora.config120
-rw-r--r--SOURCES/kernel-aarch64-debug-rhel.config159
-rw-r--r--SOURCES/kernel-aarch64-fedora.config120
-rw-r--r--SOURCES/kernel-aarch64-rhel.config157
-rw-r--r--SOURCES/kernel-aarch64-rt-debug-rhel.config166
-rw-r--r--SOURCES/kernel-aarch64-rt-rhel.config162
-rw-r--r--SOURCES/kernel-ppc64le-debug-fedora.config103
-rw-r--r--SOURCES/kernel-ppc64le-debug-rhel.config138
-rw-r--r--SOURCES/kernel-ppc64le-fedora.config103
-rw-r--r--SOURCES/kernel-ppc64le-rhel.config138
-rw-r--r--SOURCES/kernel-riscv64-debug-fedora.config8607
-rw-r--r--SOURCES/kernel-riscv64-fedora.config8576
-rw-r--r--SOURCES/kernel-s390x-debug-fedora.config99
-rw-r--r--SOURCES/kernel-s390x-debug-rhel.config135
-rw-r--r--SOURCES/kernel-s390x-fedora.config99
-rw-r--r--SOURCES/kernel-s390x-rhel.config135
-rw-r--r--SOURCES/kernel-s390x-zfcpdump-rhel.config131
-rw-r--r--SOURCES/kernel-x86_64-debug-fedora.config102
-rw-r--r--SOURCES/kernel-x86_64-debug-rhel.config134
-rw-r--r--SOURCES/kernel-x86_64-fedora.config102
-rw-r--r--SOURCES/kernel-x86_64-rhel.config134
-rw-r--r--SOURCES/kernel-x86_64-rt-debug-rhel.config141
-rw-r--r--SOURCES/kernel-x86_64-rt-rhel.config139
-rw-r--r--SOURCES/kernel.changelog582
-rw-r--r--SOURCES/lenovo-legion-laptop.patch8
-rw-r--r--SOURCES/linux-surface.patch188
-rw-r--r--SOURCES/mt76:-mt7921:-Disable-powersave-features-by-default.patch42
-rw-r--r--SOURCES/partial-clang-debug-snip.config1
-rw-r--r--SOURCES/partial-clang-snip.config1
-rw-r--r--SOURCES/partial-clang_lto-aarch64-debug-snip.config1
-rw-r--r--SOURCES/partial-clang_lto-aarch64-snip.config1
-rw-r--r--SOURCES/partial-clang_lto-x86_64-debug-snip.config1
-rw-r--r--SOURCES/partial-clang_lto-x86_64-snip.config1
-rw-r--r--SOURCES/patch-6.11-redhat.patch (renamed from SOURCES/patch-6.10-redhat.patch)1570
-rw-r--r--SOURCES/rog-ally-audio-fix.patch65
-rw-r--r--SOURCES/rog-ally-gyro-fix.patch128
-rw-r--r--SOURCES/rpminspect.yaml2
-rw-r--r--SOURCES/scx-kernel.patch4553
-rw-r--r--SOURCES/steam-deck.patch4
-rw-r--r--SOURCES/tkg-misc-additions.patch402
-rw-r--r--SOURCES/tkg-unprivileged-CLONE_NEWUSER.patch151
-rw-r--r--SOURCES/tkg.patch428
-rw-r--r--SOURCES/uki_addons.json12
-rwxr-xr-xSOURCES/uki_create_addons.py151
-rw-r--r--SOURCES/v0-oxp-sensors.patch777
-rw-r--r--SOURCES/v0-speaker-multifix.patch23729
-rw-r--r--SOURCES/v2-ally-suspend-fix.patch913
-rw-r--r--SOURCES/v2-onexplayer.patch126
66 files changed, 27285 insertions, 36694 deletions
diff --git a/SOURCES/0001-add-revoke_all-ioctl-to-release-event-and-joy-nodes-.patch b/SOURCES/0001-add-revoke_all-ioctl-to-release-event-and-joy-nodes-.patch
deleted file mode 100644
index 71d9c59..0000000
--- a/SOURCES/0001-add-revoke_all-ioctl-to-release-event-and-joy-nodes-.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From e24eba6f9ffd2338028116ddc1e14ba5b68b997a Mon Sep 17 00:00:00 2001
-From: antheas <antheas@users.noreply.github.com>
-Date: Wed, 17 Jul 2024 17:14:06 +0300
-Subject: [PATCH] add revoke_all ioctl to release event and joy nodes after
- hiding
-
----
- drivers/input/evdev.c | 24 ++++++++++++++++
- drivers/input/joydev.c | 54 ++++++++++++++++++++++++++++++-----
- include/uapi/linux/input.h | 1 +
- include/uapi/linux/joystick.h | 4 +++
- 4 files changed, 76 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
-index 51e0c4954600..87226069d076 100644
---- a/drivers/input/evdev.c
-+++ b/drivers/input/evdev.c
-@@ -951,6 +951,21 @@ static int evdev_revoke(struct evdev *evdev, struct evdev_client *client,
- return 0;
- }
-
-+static int evdev_revoke_all(struct evdev *evdev, struct file *file)
-+{
-+ struct evdev_client *client;
-+ input_flush_device(&evdev->handle, file);
-+
-+ spin_lock(&evdev->client_lock);
-+ list_for_each_entry(client, &evdev->client_list, node) {
-+ client->revoked = true;
-+ evdev_ungrab(evdev, client);
-+ wake_up_interruptible_poll(&client->wait, EPOLLHUP | EPOLLERR);
-+ }
-+ spin_unlock(&evdev->client_lock);
-+ return 0;
-+}
-+
- /* must be called with evdev-mutex held */
- static int evdev_set_mask(struct evdev_client *client,
- unsigned int type,
-@@ -1094,6 +1109,15 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd,
- return -EINVAL;
- else
- return evdev_revoke(evdev, client, file);
-+
-+ case EVIOCREVOKEALL:
-+ if (!capable(CAP_SYS_ADMIN))
-+ return -EACCES;
-+
-+ if (p)
-+ return -EINVAL;
-+ else
-+ return evdev_revoke_all(evdev, file);
-
- case EVIOCGMASK: {
- void __user *codes_ptr;
-diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
-index 5824bca02e5a..3bdf3a1971f7 100644
---- a/drivers/input/joydev.c
-+++ b/drivers/input/joydev.c
-@@ -63,8 +63,29 @@ struct joydev_client {
- struct fasync_struct *fasync;
- struct joydev *joydev;
- struct list_head node;
-+ bool revoked;
- };
-
-+static int joydev_revoke(struct joydev *joydev, struct joydev_client *client)
-+{
-+ client->revoked = true;
-+ wake_up_interruptible(&joydev->wait);
-+ return 0;
-+}
-+
-+static int joydev_revoke_all(struct joydev *joydev)
-+{
-+ struct joydev_client *client;
-+
-+ spin_lock(&joydev->client_lock);
-+ list_for_each_entry(client, &joydev->client_list, node) {
-+ client->revoked = true;
-+ }
-+ spin_unlock(&joydev->client_lock);
-+ wake_up_interruptible(&joydev->wait);
-+ return 0;
-+}
-+
- static int joydev_correct(int value, struct js_corr *corr)
- {
- switch (corr->type) {
-@@ -89,6 +110,9 @@ static void joydev_pass_event(struct joydev_client *client,
- struct js_event *event)
- {
- struct joydev *joydev = client->joydev;
-+
-+ if (client->revoked)
-+ return;
-
- /*
- * IRQs already disabled, just acquire the lock
-@@ -345,6 +369,9 @@ static ssize_t joydev_0x_read(struct joydev_client *client,
- struct JS_DATA_TYPE data;
- int i;
-
-+ if (client->revoked)
-+ return -ENODEV;
-+
- spin_lock_irq(&input->event_lock);
-
- /*
-@@ -402,7 +429,7 @@ static ssize_t joydev_read(struct file *file, char __user *buf,
- return -EAGAIN;
-
- retval = wait_event_interruptible(joydev->wait,
-- !joydev->exist || joydev_data_pending(client));
-+ !joydev->exist || client->revoked || joydev_data_pending(client));
- if (retval)
- return retval;
-
-@@ -438,7 +465,7 @@ static __poll_t joydev_poll(struct file *file, poll_table *wait)
-
- poll_wait(file, &joydev->wait, wait);
- return (joydev_data_pending(client) ? (EPOLLIN | EPOLLRDNORM) : 0) |
-- (joydev->exist ? 0 : (EPOLLHUP | EPOLLERR));
-+ (joydev->exist && !client->revoked ? 0 : (EPOLLHUP | EPOLLERR));
- }
-
- static int joydev_handle_JSIOCSAXMAP(struct joydev *joydev,
-@@ -506,9 +533,8 @@ static int joydev_handle_JSIOCSBTNMAP(struct joydev *joydev,
- return retval;
- }
-
--
--static int joydev_ioctl_common(struct joydev *joydev,
-- unsigned int cmd, void __user *argp)
-+static int joydev_ioctl_common(struct joydev *joydev, struct joydev_client *client,
-+ unsigned int cmd, void __user *argp)
- {
- struct input_dev *dev = joydev->handle.dev;
- size_t len;
-@@ -556,6 +582,20 @@ static int joydev_ioctl_common(struct joydev *joydev,
- return copy_to_user(argp, joydev->corr,
- sizeof(joydev->corr[0]) * joydev->nabs) ? -EFAULT : 0;
-
-+ case JSIOCREVOKE:
-+ if (argp)
-+ return -EINVAL;
-+ else
-+ return joydev_revoke(joydev, client);
-+
-+ case JSIOCREVOKEALL:
-+ if (!capable(CAP_SYS_ADMIN))
-+ return -EACCES;
-+
-+ if (argp)
-+ return -EINVAL;
-+ else
-+ return joydev_revoke_all(joydev);
- }
-
- /*
-@@ -649,7 +689,7 @@ static long joydev_compat_ioctl(struct file *file,
- break;
-
- default:
-- retval = joydev_ioctl_common(joydev, cmd, argp);
-+ retval = joydev_ioctl_common(joydev, client, cmd, argp);
- break;
- }
-
-@@ -699,7 +739,7 @@ static long joydev_ioctl(struct file *file,
- break;
-
- default:
-- retval = joydev_ioctl_common(joydev, cmd, argp);
-+ retval = joydev_ioctl_common(joydev, client, cmd, argp);
- break;
- }
- out:
-diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
-index 2557eb7b0561..38bfac937add 100644
---- a/include/uapi/linux/input.h
-+++ b/include/uapi/linux/input.h
-@@ -185,6 +185,7 @@ struct input_mask {
-
- #define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
- #define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
-+#define EVIOCREVOKEALL _IOW('E', 0x94, int) /* Revoke device access from all clients. Requires CAP_SYS_ADMIN. */
-
- /**
- * EVIOCGMASK - Retrieve current event mask
-diff --git a/include/uapi/linux/joystick.h b/include/uapi/linux/joystick.h
-index 192bf2cf182d..543b004802f3 100644
---- a/include/uapi/linux/joystick.h
-+++ b/include/uapi/linux/joystick.h
-@@ -66,6 +66,10 @@ struct js_event {
- #define JSIOCSBTNMAP _IOW('j', 0x33, __u16[KEY_MAX - BTN_MISC + 1]) /* set button mapping */
- #define JSIOCGBTNMAP _IOR('j', 0x34, __u16[KEY_MAX - BTN_MISC + 1]) /* get button mapping */
-
-+#define JSIOCREVOKE _IOW('j', 0x91, int) /* Revoke device access */
-+#define JSIOCREVOKEALL _IOW('j', 0x94, int) /* Revoke device access from all clients. Requires CAP_SYS_ADMIN. */
-+
-+
- /*
- * Types and constants for get/set correction
- */
---
-2.45.2
-
diff --git a/SOURCES/0001-amd-pstate.patch b/SOURCES/0001-amd-pstate.patch
deleted file mode 100644
index c865d00..0000000
--- a/SOURCES/0001-amd-pstate.patch
+++ /dev/null
@@ -1,734 +0,0 @@
-From 06c02d91fcfeb0fde264f03f0e364161b11a678d Mon Sep 17 00:00:00 2001
-From: Peter Jung <admin@ptr1337.dev>
-Date: Sat, 3 Aug 2024 09:32:45 +0200
-Subject: [PATCH 01/12] amd-pstate
-
-Signed-off-by: Peter Jung <admin@ptr1337.dev>
----
- Documentation/admin-guide/pm/amd-pstate.rst | 18 +-
- arch/x86/include/asm/cpufeatures.h | 1 +
- arch/x86/include/asm/msr-index.h | 2 +
- arch/x86/kernel/cpu/scattered.c | 1 +
- drivers/cpufreq/Kconfig.x86 | 1 +
- drivers/cpufreq/acpi-cpufreq.c | 3 +-
- drivers/cpufreq/amd-pstate.c | 307 ++++++++++++++------
- drivers/cpufreq/amd-pstate.h | 2 +
- drivers/cpufreq/cpufreq.c | 11 +-
- 9 files changed, 251 insertions(+), 95 deletions(-)
-
-diff --git a/Documentation/admin-guide/pm/amd-pstate.rst b/Documentation/admin-guide/pm/amd-pstate.rst
-index 1e0d101b020a..d0324d44f548 100644
---- a/Documentation/admin-guide/pm/amd-pstate.rst
-+++ b/Documentation/admin-guide/pm/amd-pstate.rst
-@@ -281,6 +281,22 @@ integer values defined between 0 to 255 when EPP feature is enabled by platform
- firmware, if EPP feature is disabled, driver will ignore the written value
- This attribute is read-write.
-
-+``boost``
-+The `boost` sysfs attribute provides control over the CPU core
-+performance boost, allowing users to manage the maximum frequency limitation
-+of the CPU. This attribute can be used to enable or disable the boost feature
-+on individual CPUs.
-+
-+When the boost feature is enabled, the CPU can dynamically increase its frequency
-+beyond the base frequency, providing enhanced performance for demanding workloads.
-+On the other hand, disabling the boost feature restricts the CPU to operate at the
-+base frequency, which may be desirable in certain scenarios to prioritize power
-+efficiency or manage temperature.
-+
-+To manipulate the `boost` attribute, users can write a value of `0` to disable the
-+boost or `1` to enable it, for the respective CPU using the sysfs path
-+`/sys/devices/system/cpu/cpuX/cpufreq/boost`, where `X` represents the CPU number.
-+
- Other performance and frequency values can be read back from
- ``/sys/devices/system/cpu/cpuX/acpi_cppc/``, see :ref:`cppc_sysfs`.
-
-@@ -406,7 +422,7 @@ control its functionality at the system level. They are located in the
- ``/sys/devices/system/cpu/amd_pstate/`` directory and affect all CPUs.
-
- ``status``
-- Operation mode of the driver: "active", "passive" or "disable".
-+ Operation mode of the driver: "active", "passive", "guided" or "disable".
-
- "active"
- The driver is functional and in the ``active mode``
-diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
-index 3c7434329661..6c128d463a14 100644
---- a/arch/x86/include/asm/cpufeatures.h
-+++ b/arch/x86/include/asm/cpufeatures.h
-@@ -470,6 +470,7 @@
- #define X86_FEATURE_BHI_CTRL (21*32+ 2) /* "" BHI_DIS_S HW control available */
- #define X86_FEATURE_CLEAR_BHB_HW (21*32+ 3) /* "" BHI_DIS_S HW control enabled */
- #define X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT (21*32+ 4) /* "" Clear branch history at vmexit using SW loop */
-+#define X86_FEATURE_FAST_CPPC (21*32 + 5) /* "" AMD Fast CPPC */
-
- /*
- * BUG word(s)
-diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
-index e022e6eb766c..384739d592af 100644
---- a/arch/x86/include/asm/msr-index.h
-+++ b/arch/x86/include/asm/msr-index.h
-@@ -781,6 +781,8 @@
- #define MSR_K7_HWCR_IRPERF_EN BIT_ULL(MSR_K7_HWCR_IRPERF_EN_BIT)
- #define MSR_K7_FID_VID_CTL 0xc0010041
- #define MSR_K7_FID_VID_STATUS 0xc0010042
-+#define MSR_K7_HWCR_CPB_DIS_BIT 25
-+#define MSR_K7_HWCR_CPB_DIS BIT_ULL(MSR_K7_HWCR_CPB_DIS_BIT)
-
- /* K6 MSRs */
- #define MSR_K6_WHCR 0xc0000082
-diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c
-index af5aa2c754c2..c84c30188fdf 100644
---- a/arch/x86/kernel/cpu/scattered.c
-+++ b/arch/x86/kernel/cpu/scattered.c
-@@ -45,6 +45,7 @@ static const struct cpuid_bit cpuid_bits[] = {
- { X86_FEATURE_HW_PSTATE, CPUID_EDX, 7, 0x80000007, 0 },
- { X86_FEATURE_CPB, CPUID_EDX, 9, 0x80000007, 0 },
- { X86_FEATURE_PROC_FEEDBACK, CPUID_EDX, 11, 0x80000007, 0 },
-+ { X86_FEATURE_FAST_CPPC, CPUID_EDX, 15, 0x80000007, 0 },
- { X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 },
- { X86_FEATURE_SMBA, CPUID_EBX, 2, 0x80000020, 0 },
- { X86_FEATURE_BMEC, CPUID_EBX, 3, 0x80000020, 0 },
-diff --git a/drivers/cpufreq/Kconfig.x86 b/drivers/cpufreq/Kconfig.x86
-index 438c9e75a04d..97c2d4f15d76 100644
---- a/drivers/cpufreq/Kconfig.x86
-+++ b/drivers/cpufreq/Kconfig.x86
-@@ -71,6 +71,7 @@ config X86_AMD_PSTATE_DEFAULT_MODE
- config X86_AMD_PSTATE_UT
- tristate "selftest for AMD Processor P-State driver"
- depends on X86 && ACPI_PROCESSOR
-+ depends on X86_AMD_PSTATE
- default n
- help
- This kernel module is used for testing. It's safe to say M here.
-diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
-index 4ac3a35dcd98..f4f8587c4ea0 100644
---- a/drivers/cpufreq/acpi-cpufreq.c
-+++ b/drivers/cpufreq/acpi-cpufreq.c
-@@ -50,8 +50,6 @@ enum {
- #define AMD_MSR_RANGE (0x7)
- #define HYGON_MSR_RANGE (0x7)
-
--#define MSR_K7_HWCR_CPB_DIS (1ULL << 25)
--
- struct acpi_cpufreq_data {
- unsigned int resume;
- unsigned int cpu_feature;
-@@ -139,6 +137,7 @@ static int set_boost(struct cpufreq_policy *policy, int val)
- (void *)(long)val, 1);
- pr_debug("CPU %*pbl: Core Boosting %s.\n",
- cpumask_pr_args(policy->cpus), str_enabled_disabled(val));
-+ policy->boost_enabled = val;
-
- return 0;
- }
-diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
-index a092b13ffbc2..804fab4ebb26 100644
---- a/drivers/cpufreq/amd-pstate.c
-+++ b/drivers/cpufreq/amd-pstate.c
-@@ -51,6 +51,7 @@
-
- #define AMD_PSTATE_TRANSITION_LATENCY 20000
- #define AMD_PSTATE_TRANSITION_DELAY 1000
-+#define AMD_PSTATE_FAST_CPPC_TRANSITION_DELAY 600
- #define CPPC_HIGHEST_PERF_PERFORMANCE 196
- #define CPPC_HIGHEST_PERF_DEFAULT 166
-
-@@ -85,15 +86,6 @@ struct quirk_entry {
- u32 lowest_freq;
- };
-
--/*
-- * TODO: We need more time to fine tune processors with shared memory solution
-- * with community together.
-- *
-- * There are some performance drops on the CPU benchmarks which reports from
-- * Suse. We are co-working with them to fine tune the shared memory solution. So
-- * we disable it by default to go acpi-cpufreq on these processors and add a
-- * module parameter to be able to enable it manually for debugging.
-- */
- static struct cpufreq_driver *current_pstate_driver;
- static struct cpufreq_driver amd_pstate_driver;
- static struct cpufreq_driver amd_pstate_epp_driver;
-@@ -157,7 +149,7 @@ static int __init dmi_matched_7k62_bios_bug(const struct dmi_system_id *dmi)
- * broken BIOS lack of nominal_freq and lowest_freq capabilities
- * definition in ACPI tables
- */
-- if (boot_cpu_has(X86_FEATURE_ZEN2)) {
-+ if (cpu_feature_enabled(X86_FEATURE_ZEN2)) {
- quirks = dmi->driver_data;
- pr_info("Overriding nominal and lowest frequencies for %s\n", dmi->ident);
- return 1;
-@@ -199,7 +191,7 @@ static s16 amd_pstate_get_epp(struct amd_cpudata *cpudata, u64 cppc_req_cached)
- u64 epp;
- int ret;
-
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- if (!cppc_req_cached) {
- epp = rdmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ,
- &cppc_req_cached);
-@@ -272,7 +264,7 @@ static int amd_pstate_set_epp(struct amd_cpudata *cpudata, u32 epp)
- int ret;
- struct cppc_perf_ctrls perf_ctrls;
-
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- u64 value = READ_ONCE(cpudata->cppc_req_cached);
-
- value &= ~GENMASK_ULL(31, 24);
-@@ -524,7 +514,10 @@ static inline bool amd_pstate_sample(struct amd_cpudata *cpudata)
- static void amd_pstate_update(struct amd_cpudata *cpudata, u32 min_perf,
- u32 des_perf, u32 max_perf, bool fast_switch, int gov_flags)
- {
-+ unsigned long max_freq;
-+ struct cpufreq_policy *policy = cpufreq_cpu_get(cpudata->cpu);
- u64 prev = READ_ONCE(cpudata->cppc_req_cached);
-+ u32 nominal_perf = READ_ONCE(cpudata->nominal_perf);
- u64 value = prev;
-
- min_perf = clamp_t(unsigned long, min_perf, cpudata->min_limit_perf,
-@@ -533,6 +526,9 @@ static void amd_pstate_update(struct amd_cpudata *cpudata, u32 min_perf,
- cpudata->max_limit_perf);
- des_perf = clamp_t(unsigned long, des_perf, min_perf, max_perf);
-
-+ max_freq = READ_ONCE(cpudata->max_limit_freq);
-+ policy->cur = div_u64(des_perf * max_freq, max_perf);
-+
- if ((cppc_state == AMD_PSTATE_GUIDED) && (gov_flags & CPUFREQ_GOV_DYNAMIC_SWITCHING)) {
- min_perf = des_perf;
- des_perf = 0;
-@@ -544,6 +540,10 @@ static void amd_pstate_update(struct amd_cpudata *cpudata, u32 min_perf,
- value &= ~AMD_CPPC_DES_PERF(~0L);
- value |= AMD_CPPC_DES_PERF(des_perf);
-
-+ /* limit the max perf when core performance boost feature is disabled */
-+ if (!cpudata->boost_supported)
-+ max_perf = min_t(unsigned long, nominal_perf, max_perf);
-+
- value &= ~AMD_CPPC_MAX_PERF(~0L);
- value |= AMD_CPPC_MAX_PERF(max_perf);
-
-@@ -654,10 +654,9 @@ static void amd_pstate_adjust_perf(unsigned int cpu,
- unsigned long capacity)
- {
- unsigned long max_perf, min_perf, des_perf,
-- cap_perf, lowest_nonlinear_perf, max_freq;
-+ cap_perf, lowest_nonlinear_perf;
- struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
- struct amd_cpudata *cpudata = policy->driver_data;
-- unsigned int target_freq;
-
- if (policy->min != cpudata->min_limit_freq || policy->max != cpudata->max_limit_freq)
- amd_pstate_update_min_max_limit(policy);
-@@ -665,7 +664,6 @@ static void amd_pstate_adjust_perf(unsigned int cpu,
-
- cap_perf = READ_ONCE(cpudata->highest_perf);
- lowest_nonlinear_perf = READ_ONCE(cpudata->lowest_nonlinear_perf);
-- max_freq = READ_ONCE(cpudata->max_freq);
-
- des_perf = cap_perf;
- if (target_perf < capacity)
-@@ -683,51 +681,111 @@ static void amd_pstate_adjust_perf(unsigned int cpu,
- max_perf = min_perf;
-
- des_perf = clamp_t(unsigned long, des_perf, min_perf, max_perf);
-- target_freq = div_u64(des_perf * max_freq, max_perf);
-- policy->cur = target_freq;
-
- amd_pstate_update(cpudata, min_perf, des_perf, max_perf, true,
- policy->governor->flags);
- cpufreq_cpu_put(policy);
- }
-
--static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state)
-+static int amd_pstate_cpu_boost_update(struct cpufreq_policy *policy, bool on)
- {
- struct amd_cpudata *cpudata = policy->driver_data;
-+ struct cppc_perf_ctrls perf_ctrls;
-+ u32 highest_perf, nominal_perf, nominal_freq, max_freq;
- int ret;
-
-- if (!cpudata->boost_supported) {
-- pr_err("Boost mode is not supported by this processor or SBIOS\n");
-- return -EINVAL;
-+ highest_perf = READ_ONCE(cpudata->highest_perf);
-+ nominal_perf = READ_ONCE(cpudata->nominal_perf);
-+ nominal_freq = READ_ONCE(cpudata->nominal_freq);
-+ max_freq = READ_ONCE(cpudata->max_freq);
-+
-+ if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ u64 value = READ_ONCE(cpudata->cppc_req_cached);
-+
-+ value &= ~GENMASK_ULL(7, 0);
-+ value |= on ? highest_perf : nominal_perf;
-+ WRITE_ONCE(cpudata->cppc_req_cached, value);
-+
-+ wrmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ, value);
-+ } else {
-+ perf_ctrls.max_perf = on ? highest_perf : nominal_perf;
-+ ret = cppc_set_perf(cpudata->cpu, &perf_ctrls);
-+ if (ret) {
-+ cpufreq_cpu_release(policy);
-+ pr_debug("Failed to set max perf on CPU:%d. ret:%d\n",
-+ cpudata->cpu, ret);
-+ return ret;
-+ }
- }
-
-- if (state)
-- policy->cpuinfo.max_freq = cpudata->max_freq;
-- else
-- policy->cpuinfo.max_freq = cpudata->nominal_freq * 1000;
-+ if (on)
-+ policy->cpuinfo.max_freq = max_freq;
-+ else if (policy->cpuinfo.max_freq > nominal_freq * 1000)
-+ policy->cpuinfo.max_freq = nominal_freq * 1000;
-
- policy->max = policy->cpuinfo.max_freq;
-
-- ret = freq_qos_update_request(&cpudata->req[1],
-- policy->cpuinfo.max_freq);
-- if (ret < 0)
-- return ret;
-+ if (cppc_state == AMD_PSTATE_PASSIVE) {
-+ ret = freq_qos_update_request(&cpudata->req[1], policy->cpuinfo.max_freq);
-+ if (ret < 0)
-+ pr_debug("Failed to update freq constraint: CPU%d\n", cpudata->cpu);
-+ }
-
-- return 0;
-+ return ret < 0 ? ret : 0;
- }
-
--static void amd_pstate_boost_init(struct amd_cpudata *cpudata)
-+static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state)
- {
-- u32 highest_perf, nominal_perf;
-+ struct amd_cpudata *cpudata = policy->driver_data;
-+ int ret;
-
-- highest_perf = READ_ONCE(cpudata->highest_perf);
-- nominal_perf = READ_ONCE(cpudata->nominal_perf);
-+ if (!cpudata->boost_supported) {
-+ pr_err("Boost mode is not supported by this processor or SBIOS\n");
-+ return -EOPNOTSUPP;
-+ }
-+ mutex_lock(&amd_pstate_driver_lock);
-+ ret = amd_pstate_cpu_boost_update(policy, state);
-+ WRITE_ONCE(cpudata->boost_state, !ret ? state : false);
-+ policy->boost_enabled = !ret ? state : false;
-+ refresh_frequency_limits(policy);
-+ mutex_unlock(&amd_pstate_driver_lock);
-
-- if (highest_perf <= nominal_perf)
-- return;
-+ return ret;
-+}
-
-- cpudata->boost_supported = true;
-+static int amd_pstate_init_boost_support(struct amd_cpudata *cpudata)
-+{
-+ u64 boost_val;
-+ int ret = -1;
-+
-+ /*
-+ * If platform has no CPB support or disable it, initialize current driver
-+ * boost_enabled state to be false, it is not an error for cpufreq core to handle.
-+ */
-+ if (!cpu_feature_enabled(X86_FEATURE_CPB)) {
-+ pr_debug_once("Boost CPB capabilities not present in the processor\n");
-+ ret = 0;
-+ goto exit_err;
-+ }
-+
-+ /* at least one CPU supports CPB, even if others fail later on to set up */
- current_pstate_driver->boost_enabled = true;
-+
-+ ret = rdmsrl_on_cpu(cpudata->cpu, MSR_K7_HWCR, &boost_val);
-+ if (ret) {
-+ pr_err_once("failed to read initial CPU boost state!\n");
-+ ret = -EIO;
-+ goto exit_err;
-+ }
-+
-+ if (!(boost_val & MSR_K7_HWCR_CPB_DIS))
-+ cpudata->boost_supported = true;
-+
-+ return 0;
-+
-+exit_err:
-+ cpudata->boost_supported = false;
-+ return ret;
- }
-
- static void amd_perf_ctl_reset(unsigned int cpu)
-@@ -756,7 +814,7 @@ static int amd_pstate_get_highest_perf(int cpu, u32 *highest_perf)
- {
- int ret;
-
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- u64 cap1;
-
- ret = rdmsrl_safe_on_cpu(cpu, MSR_AMD_CPPC_CAP1, &cap1);
-@@ -852,8 +910,12 @@ static u32 amd_pstate_get_transition_delay_us(unsigned int cpu)
- u32 transition_delay_ns;
-
- transition_delay_ns = cppc_get_transition_latency(cpu);
-- if (transition_delay_ns == CPUFREQ_ETERNAL)
-- return AMD_PSTATE_TRANSITION_DELAY;
-+ if (transition_delay_ns == CPUFREQ_ETERNAL) {
-+ if (cpu_feature_enabled(X86_FEATURE_FAST_CPPC))
-+ return AMD_PSTATE_FAST_CPPC_TRANSITION_DELAY;
-+ else
-+ return AMD_PSTATE_TRANSITION_DELAY;
-+ }
-
- return transition_delay_ns / NSEC_PER_USEC;
- }
-@@ -924,12 +986,30 @@ static int amd_pstate_init_freq(struct amd_cpudata *cpudata)
- WRITE_ONCE(cpudata->nominal_freq, nominal_freq);
- WRITE_ONCE(cpudata->max_freq, max_freq);
-
-+ /**
-+ * Below values need to be initialized correctly, otherwise driver will fail to load
-+ * max_freq is calculated according to (nominal_freq * highest_perf)/nominal_perf
-+ * lowest_nonlinear_freq is a value between [min_freq, nominal_freq]
-+ * Check _CPC in ACPI table objects if any values are incorrect
-+ */
-+ if (min_freq <= 0 || max_freq <= 0 || nominal_freq <= 0 || min_freq > max_freq) {
-+ pr_err("min_freq(%d) or max_freq(%d) or nominal_freq(%d) value is incorrect\n",
-+ min_freq, max_freq, nominal_freq * 1000);
-+ return -EINVAL;
-+ }
-+
-+ if (lowest_nonlinear_freq <= min_freq || lowest_nonlinear_freq > nominal_freq * 1000) {
-+ pr_err("lowest_nonlinear_freq(%d) value is out of range [min_freq(%d), nominal_freq(%d)]\n",
-+ lowest_nonlinear_freq, min_freq, nominal_freq * 1000);
-+ return -EINVAL;
-+ }
-+
- return 0;
- }
-
- static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
- {
-- int min_freq, max_freq, nominal_freq, ret;
-+ int min_freq, max_freq, ret;
- struct device *dev;
- struct amd_cpudata *cpudata;
-
-@@ -958,18 +1038,12 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
- if (ret)
- goto free_cpudata1;
-
-+ ret = amd_pstate_init_boost_support(cpudata);
-+ if (ret)
-+ goto free_cpudata1;
-+
- min_freq = READ_ONCE(cpudata->min_freq);
- max_freq = READ_ONCE(cpudata->max_freq);
-- nominal_freq = READ_ONCE(cpudata->nominal_freq);
--
-- if (min_freq <= 0 || max_freq <= 0 ||
-- nominal_freq <= 0 || min_freq > max_freq) {
-- dev_err(dev,
-- "min_freq(%d) or max_freq(%d) or nominal_freq (%d) value is incorrect, check _CPC in ACPI tables\n",
-- min_freq, max_freq, nominal_freq);
-- ret = -EINVAL;
-- goto free_cpudata1;
-- }
-
- policy->cpuinfo.transition_latency = amd_pstate_get_transition_latency(policy->cpu);
- policy->transition_delay_us = amd_pstate_get_transition_delay_us(policy->cpu);
-@@ -980,10 +1054,12 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
- policy->cpuinfo.min_freq = min_freq;
- policy->cpuinfo.max_freq = max_freq;
-
-+ policy->boost_enabled = READ_ONCE(cpudata->boost_supported);
-+
- /* It will be updated by governor */
- policy->cur = policy->cpuinfo.min_freq;
-
-- if (boot_cpu_has(X86_FEATURE_CPPC))
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC))
- policy->fast_switch_possible = true;
-
- ret = freq_qos_add_request(&policy->constraints, &cpudata->req[0],
-@@ -1005,7 +1081,6 @@ static int amd_pstate_cpu_init(struct cpufreq_policy *policy)
-
- policy->driver_data = cpudata;
-
-- amd_pstate_boost_init(cpudata);
- if (!current_pstate_driver->adjust_perf)
- current_pstate_driver->adjust_perf = amd_pstate_adjust_perf;
-
-@@ -1216,7 +1291,7 @@ static int amd_pstate_change_mode_without_dvr_change(int mode)
-
- cppc_state = mode;
-
-- if (boot_cpu_has(X86_FEATURE_CPPC) || cppc_state == AMD_PSTATE_ACTIVE)
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC) || cppc_state == AMD_PSTATE_ACTIVE)
- return 0;
-
- for_each_present_cpu(cpu) {
-@@ -1389,7 +1464,7 @@ static bool amd_pstate_acpi_pm_profile_undefined(void)
-
- static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
- {
-- int min_freq, max_freq, nominal_freq, ret;
-+ int min_freq, max_freq, ret;
- struct amd_cpudata *cpudata;
- struct device *dev;
- u64 value;
-@@ -1420,17 +1495,12 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
- if (ret)
- goto free_cpudata1;
-
-+ ret = amd_pstate_init_boost_support(cpudata);
-+ if (ret)
-+ goto free_cpudata1;
-+
- min_freq = READ_ONCE(cpudata->min_freq);
- max_freq = READ_ONCE(cpudata->max_freq);
-- nominal_freq = READ_ONCE(cpudata->nominal_freq);
-- if (min_freq <= 0 || max_freq <= 0 ||
-- nominal_freq <= 0 || min_freq > max_freq) {
-- dev_err(dev,
-- "min_freq(%d) or max_freq(%d) or nominal_freq(%d) value is incorrect, check _CPC in ACPI tables\n",
-- min_freq, max_freq, nominal_freq);
-- ret = -EINVAL;
-- goto free_cpudata1;
-- }
-
- policy->cpuinfo.min_freq = min_freq;
- policy->cpuinfo.max_freq = max_freq;
-@@ -1439,11 +1509,13 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
-
- policy->driver_data = cpudata;
-
- cpudata->epp_cached = cpudata->epp_default = amd_pstate_get_epp(cpudata, 0);
-
- policy->min = policy->cpuinfo.min_freq;
- policy->max = policy->cpuinfo.max_freq;
-
-+ policy->boost_enabled = READ_ONCE(cpudata->boost_supported);
-+
- /*
- * Set the policy to provide a valid fallback value in case
- * the default cpufreq governor is neither powersave nor performance.
-@@ -1454,7 +1526,7 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
- else
- policy->policy = CPUFREQ_POLICY_POWERSAVE;
-
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- ret = rdmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ, &value);
- if (ret)
- return ret;
-@@ -1465,7 +1537,6 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
- return ret;
- WRITE_ONCE(cpudata->cppc_cap1_cached, value);
- }
-- amd_pstate_boost_init(cpudata);
-
- return 0;
-
-@@ -1544,7 +1615,7 @@ static void amd_pstate_epp_update_limit(struct cpufreq_policy *policy)
- epp = 0;
-
- /* Set initial EPP value */
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- value &= ~GENMASK_ULL(31, 24);
- value |= (u64)epp << 24;
- }
-@@ -1567,6 +1638,12 @@ static int amd_pstate_epp_set_policy(struct cpufreq_policy *policy)
-
- amd_pstate_epp_update_limit(policy);
-
-+ /*
-+ * policy->cur is never updated with the amd_pstate_epp driver, but it
-+ * is used as a stale frequency value. So, keep it within limits.
-+ */
-+ policy->cur = policy->min;
-+
- return 0;
- }
-
-@@ -1583,7 +1660,7 @@ static void amd_pstate_epp_reenable(struct amd_cpudata *cpudata)
- value = READ_ONCE(cpudata->cppc_req_cached);
- max_perf = READ_ONCE(cpudata->highest_perf);
-
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- wrmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ, value);
- } else {
- perf_ctrls.max_perf = max_perf;
-@@ -1617,7 +1694,7 @@ static void amd_pstate_epp_offline(struct cpufreq_policy *policy)
- value = READ_ONCE(cpudata->cppc_req_cached);
-
- mutex_lock(&amd_pstate_limits_lock);
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- cpudata->epp_policy = CPUFREQ_POLICY_UNKNOWN;
-
- /* Set max perf same as min perf */
-@@ -1721,6 +1798,7 @@ static struct cpufreq_driver amd_pstate_epp_driver = {
- .suspend = amd_pstate_epp_suspend,
- .resume = amd_pstate_epp_resume,
- .update_limits = amd_pstate_update_limits,
-+ .set_boost = amd_pstate_set_boost,
- .name = "amd-pstate-epp",
- .attr = amd_pstate_epp_attr,
- };
-@@ -1744,6 +1822,46 @@ static int __init amd_pstate_set_driver(int mode_idx)
- return -EINVAL;
- }
-
-+/**
-+ * CPPC function is not supported for family ID 17H with model_ID ranging from 0x10 to 0x2F.
-+ * show the debug message that helps to check if the CPU has CPPC support for loading issue.
-+ */
-+static bool amd_cppc_supported(void)
-+{
-+ struct cpuinfo_x86 *c = &cpu_data(0);
-+ bool warn = false;
-+
-+ if ((boot_cpu_data.x86 == 0x17) && (boot_cpu_data.x86_model < 0x30)) {
-+ pr_debug_once("CPPC feature is not supported by the processor\n");
-+ return false;
-+ }
-+
-+ /*
-+ * If the CPPC feature is disabled in the BIOS for processors that support MSR-based CPPC,
-+ * the AMD Pstate driver may not function correctly.
-+ * Check the CPPC flag and display a warning message if the platform supports CPPC.
-+ * Note: below checking code will not abort the driver registeration process because of
-+ * the code is added for debugging purposes.
-+ */
-+ if (!cpu_feature_enabled(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_ZEN1) || cpu_feature_enabled(X86_FEATURE_ZEN2)) {
-+ if (c->x86_model > 0x60 && c->x86_model < 0xaf)
-+ warn = true;
-+ } else if (cpu_feature_enabled(X86_FEATURE_ZEN3) || cpu_feature_enabled(X86_FEATURE_ZEN4)) {
-+ if ((c->x86_model > 0x10 && c->x86_model < 0x1F) ||
-+ (c->x86_model > 0x40 && c->x86_model < 0xaf))
-+ warn = true;
-+ } else if (cpu_feature_enabled(X86_FEATURE_ZEN5)) {
-+ warn = true;
-+ }
-+ }
-+
-+ if (warn)
-+ pr_warn_once("The CPPC feature is supported but currently disabled by the BIOS.\n"
-+ "Please enable it if your BIOS has the CPPC option.\n");
-+ return true;
-+}
-+
- static int __init amd_pstate_init(void)
- {
- struct device *dev_root;
-@@ -1752,6 +1870,11 @@ static int __init amd_pstate_init(void)
- if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
- return -ENODEV;
-
-+ /* show debug message only if CPPC is not supported */
-+ if (!amd_cppc_supported())
-+ return -EOPNOTSUPP;
-+
-+ /* show warning message when BIOS broken or ACPI disabled */
- if (!acpi_cpc_valid()) {
- pr_warn_once("the _CPC object is not present in SBIOS or ACPI disabled\n");
- return -ENODEV;
-@@ -1774,11 +1899,9 @@ static int __init amd_pstate_init(void)
- /* Disable on the following configs by default:
- * 1. Undefined platforms
- * 2. Server platforms
-- * 3. Shared memory designs
- */
- if (amd_pstate_acpi_pm_profile_undefined() ||
-- amd_pstate_acpi_pm_profile_server() ||
-- !boot_cpu_has(X86_FEATURE_CPPC)) {
-+ amd_pstate_acpi_pm_profile_server()) {
- pr_info("driver load is disabled, boot with specific mode to enable this\n");
- return -ENODEV;
- }
-@@ -1802,7 +1925,7 @@ static int __init amd_pstate_init(void)
- }
-
- /* capability check */
-- if (boot_cpu_has(X86_FEATURE_CPPC)) {
-+ if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
- pr_debug("AMD CPPC MSR based functionality is supported\n");
- if (cppc_state != AMD_PSTATE_ACTIVE)
- current_pstate_driver->adjust_perf = amd_pstate_adjust_perf;
-@@ -1821,8 +1944,10 @@ static int __init amd_pstate_init(void)
- }
-
- ret = cpufreq_register_driver(current_pstate_driver);
-- if (ret)
-+ if (ret) {
- pr_err("failed to register with return %d\n", ret);
-+ goto disable_driver;
-+ }
-
- dev_root = bus_get_dev_root(&cpu_subsys);
- if (dev_root) {
-@@ -1830,6 +1963,8 @@ static int __init amd_pstate_init(void)
-
- global_attr_free:
- cpufreq_unregister_driver(current_pstate_driver);
-+disable_driver:
-+ amd_pstate_enable(false);
- return ret;
- }
- device_initcall(amd_pstate_init);
-diff --git a/drivers/cpufreq/amd-pstate.h b/drivers/cpufreq/amd-pstate.h
-index e6a28e7f4dbf..cc8bb2bc325a 100644
---- a/drivers/cpufreq/amd-pstate.h
-+++ b/drivers/cpufreq/amd-pstate.h
-@@ -99,7 +99,8 @@ struct amd_cpudata {
- u32 policy;
- u64 cppc_cap1_cached;
- bool suspended;
- s16 epp_default;
-+ bool boost_state;
- };
-
- #endif /* _LINUX_AMD_PSTATE_H */
-diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
-index 9e5060b27864..270ea04fb616 100644
---- a/drivers/cpufreq/cpufreq.c
-+++ b/drivers/cpufreq/cpufreq.c
-@@ -614,10 +614,9 @@ static ssize_t show_boost(struct kobject *kobj,
- static ssize_t store_boost(struct kobject *kobj, struct kobj_attribute *attr,
- const char *buf, size_t count)
- {
-- int ret, enable;
-+ bool enable;
-
-- ret = sscanf(buf, "%d", &enable);
-- if (ret != 1 || enable < 0 || enable > 1)
-+ if (kstrtobool(buf, &enable))
- return -EINVAL;
-
- if (cpufreq_boost_trigger_state(enable)) {
-@@ -641,10 +640,10 @@ static ssize_t show_local_boost(struct cpufreq_policy *policy, char *buf)
- static ssize_t store_local_boost(struct cpufreq_policy *policy,
- const char *buf, size_t count)
- {
-- int ret, enable;
-+ int ret;
-+ bool enable;
-
-- ret = kstrtoint(buf, 10, &enable);
-- if (ret || enable < 0 || enable > 1)
-+ if (kstrtobool(buf, &enable))
- return -EINVAL;
-
- if (!cpufreq_driver->boost_enabled)
---
-2.46.0.rc1
-
diff --git a/SOURCES/0001-ntsync.patch b/SOURCES/0001-ntsync.patch
deleted file mode 100644
index 4a16758..0000000
--- a/SOURCES/0001-ntsync.patch
+++ /dev/null
@@ -1,3089 +0,0 @@
-From 36ef0070410e229e52c9de58d6021df36a4b1707 Mon Sep 17 00:00:00 2001
-From: Peter Jung <admin@ptr1337.dev>
-Date: Sat, 3 Aug 2024 09:34:15 +0200
-Subject: [PATCH 09/12] ntsync
-
-Signed-off-by: Peter Jung <admin@ptr1337.dev>
----
- Documentation/userspace-api/index.rst | 1 +
- Documentation/userspace-api/ntsync.rst | 398 +++++
- MAINTAINERS | 9 +
- drivers/misc/Kconfig | 1 -
- drivers/misc/ntsync.c | 989 +++++++++++-
- include/uapi/linux/ntsync.h | 39 +
- tools/testing/selftests/Makefile | 1 +
- .../selftests/drivers/ntsync/.gitignore | 1 +
- .../testing/selftests/drivers/ntsync/Makefile | 7 +
- tools/testing/selftests/drivers/ntsync/config | 1 +
- .../testing/selftests/drivers/ntsync/ntsync.c | 1407 +++++++++++++++++
- 11 files changed, 2850 insertions(+), 4 deletions(-)
- create mode 100644 Documentation/userspace-api/ntsync.rst
- create mode 100644 tools/testing/selftests/drivers/ntsync/.gitignore
- create mode 100644 tools/testing/selftests/drivers/ntsync/Makefile
- create mode 100644 tools/testing/selftests/drivers/ntsync/config
- create mode 100644 tools/testing/selftests/drivers/ntsync/ntsync.c
-
-diff --git a/Documentation/userspace-api/index.rst b/Documentation/userspace-api/index.rst
-index 8a251d71fa6e..02bea81fb4bf 100644
---- a/Documentation/userspace-api/index.rst
-+++ b/Documentation/userspace-api/index.rst
-@@ -64,6 +64,7 @@ Everything else
- vduse
- futex2
- perf_ring_buffer
-+ ntsync
-
- .. only:: subproject and html
-
-diff --git a/Documentation/userspace-api/ntsync.rst b/Documentation/userspace-api/ntsync.rst
-new file mode 100644
-index 000000000000..767844637a7d
---- /dev/null
-+++ b/Documentation/userspace-api/ntsync.rst
-@@ -0,0 +1,398 @@
-+===================================
-+NT synchronization primitive driver
-+===================================
-+
-+This page documents the user-space API for the ntsync driver.
-+
-+ntsync is a support driver for emulation of NT synchronization
-+primitives by user-space NT emulators. It exists because implementation
-+in user-space, using existing tools, cannot match Windows performance
-+while offering accurate semantics. It is implemented entirely in
-+software, and does not drive any hardware device.
-+
-+This interface is meant as a compatibility tool only, and should not
-+be used for general synchronization. Instead use generic, versatile
-+interfaces such as futex(2) and poll(2).
-+
-+Synchronization primitives
-+==========================
-+
-+The ntsync driver exposes three types of synchronization primitives:
-+semaphores, mutexes, and events.
-+
-+A semaphore holds a single volatile 32-bit counter, and a static 32-bit
-+integer denoting the maximum value. It is considered signaled (that is,
-+can be acquired without contention, or will wake up a waiting thread)
-+when the counter is nonzero. The counter is decremented by one when a
-+wait is satisfied. Both the initial and maximum count are established
-+when the semaphore is created.
-+
-+A mutex holds a volatile 32-bit recursion count, and a volatile 32-bit
-+identifier denoting its owner. A mutex is considered signaled when its
-+owner is zero (indicating that it is not owned). The recursion count is
-+incremented when a wait is satisfied, and ownership is set to the given
-+identifier.
-+
-+A mutex also holds an internal flag denoting whether its previous owner
-+has died; such a mutex is said to be abandoned. Owner death is not
-+tracked automatically based on thread death, but rather must be
-+communicated using ``NTSYNC_IOC_MUTEX_KILL``. An abandoned mutex is
-+inherently considered unowned.
-+
-+Except for the "unowned" semantics of zero, the actual value of the
-+owner identifier is not interpreted by the ntsync driver at all. The
-+intended use is to store a thread identifier; however, the ntsync
-+driver does not actually validate that a calling thread provides
-+consistent or unique identifiers.
-+
-+An event is similar to a semaphore with a maximum count of one. It holds
-+a volatile boolean state denoting whether it is signaled or not. There
-+are two types of events, auto-reset and manual-reset. An auto-reset
-+event is designaled when a wait is satisfied; a manual-reset event is
-+not. The event type is specified when the event is created.
-+
-+Unless specified otherwise, all operations on an object are atomic and
-+totally ordered with respect to other operations on the same object.
-+
-+Objects are represented by files. When all file descriptors to an
-+object are closed, that object is deleted.
-+
-+Char device
-+===========
-+
-+The ntsync driver creates a single char device /dev/ntsync. Each file
-+description opened on the device represents a unique instance intended
-+to back an individual NT virtual machine. Objects created by one ntsync
-+instance may only be used with other objects created by the same
-+instance.
-+
-+ioctl reference
-+===============
-+
-+All operations on the device are done through ioctls. There are four
-+structures used in ioctl calls::
-+
-+ struct ntsync_sem_args {
-+ __u32 sem;
-+ __u32 count;
-+ __u32 max;
-+ };
-+
-+ struct ntsync_mutex_args {
-+ __u32 mutex;
-+ __u32 owner;
-+ __u32 count;
-+ };
-+
-+ struct ntsync_event_args {
-+ __u32 event;
-+ __u32 signaled;
-+ __u32 manual;
-+ };
-+
-+ struct ntsync_wait_args {
-+ __u64 timeout;
-+ __u64 objs;
-+ __u32 count;
-+ __u32 owner;
-+ __u32 index;
-+ __u32 alert;
-+ __u32 flags;
-+ __u32 pad;
-+ };
-+
-+Depending on the ioctl, members of the structure may be used as input,
-+output, or not at all. All ioctls return 0 on success.
-+
-+The ioctls on the device file are as follows:
-+
-+.. c:macro:: NTSYNC_IOC_CREATE_SEM
-+
-+ Create a semaphore object. Takes a pointer to struct
-+ :c:type:`ntsync_sem_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``sem``
-+ - On output, contains a file descriptor to the created semaphore.
-+ * - ``count``
-+ - Initial count of the semaphore.
-+ * - ``max``
-+ - Maximum count of the semaphore.
-+
-+ Fails with ``EINVAL`` if ``count`` is greater than ``max``.
-+
-+.. c:macro:: NTSYNC_IOC_CREATE_MUTEX
-+
-+ Create a mutex object. Takes a pointer to struct
-+ :c:type:`ntsync_mutex_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``mutex``
-+ - On output, contains a file descriptor to the created mutex.
-+ * - ``count``
-+ - Initial recursion count of the mutex.
-+ * - ``owner``
-+ - Initial owner of the mutex.
-+
-+ If ``owner`` is nonzero and ``count`` is zero, or if ``owner`` is
-+ zero and ``count`` is nonzero, the function fails with ``EINVAL``.
-+
-+.. c:macro:: NTSYNC_IOC_CREATE_EVENT
-+
-+ Create an event object. Takes a pointer to struct
-+ :c:type:`ntsync_event_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``event``
-+ - On output, contains a file descriptor to the created event.
-+ * - ``signaled``
-+ - If nonzero, the event is initially signaled, otherwise
-+ nonsignaled.
-+ * - ``manual``
-+ - If nonzero, the event is a manual-reset event, otherwise
-+ auto-reset.
-+
-+The ioctls on the individual objects are as follows:
-+
-+.. c:macro:: NTSYNC_IOC_SEM_POST
-+
-+ Post to a semaphore object. Takes a pointer to a 32-bit integer,
-+ which on input holds the count to be added to the semaphore, and on
-+ output contains its previous count.
-+
-+ If adding to the semaphore's current count would raise the latter
-+ past the semaphore's maximum count, the ioctl fails with
-+ ``EOVERFLOW`` and the semaphore is not affected. If raising the
-+ semaphore's count causes it to become signaled, eligible threads
-+ waiting on this semaphore will be woken and the semaphore's count
-+ decremented appropriately.
-+
-+.. c:macro:: NTSYNC_IOC_MUTEX_UNLOCK
-+
-+ Release a mutex object. Takes a pointer to struct
-+ :c:type:`ntsync_mutex_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``mutex``
-+ - Ignored.
-+ * - ``owner``
-+ - Specifies the owner trying to release this mutex.
-+ * - ``count``
-+ - On output, contains the previous recursion count.
-+
-+ If ``owner`` is zero, the ioctl fails with ``EINVAL``. If ``owner``
-+ is not the current owner of the mutex, the ioctl fails with
-+ ``EPERM``.
-+
-+ The mutex's count will be decremented by one. If decrementing the
-+ mutex's count causes it to become zero, the mutex is marked as
-+ unowned and signaled, and eligible threads waiting on it will be
-+ woken as appropriate.
-+
-+.. c:macro:: NTSYNC_IOC_SET_EVENT
-+
-+ Signal an event object. Takes a pointer to a 32-bit integer, which on
-+ output contains the previous state of the event.
-+
-+ Eligible threads will be woken, and auto-reset events will be
-+ designaled appropriately.
-+
-+.. c:macro:: NTSYNC_IOC_RESET_EVENT
-+
-+ Designal an event object. Takes a pointer to a 32-bit integer, which
-+ on output contains the previous state of the event.
-+
-+.. c:macro:: NTSYNC_IOC_PULSE_EVENT
-+
-+ Wake threads waiting on an event object while leaving it in an
-+ unsignaled state. Takes a pointer to a 32-bit integer, which on
-+ output contains the previous state of the event.
-+
-+ A pulse operation can be thought of as a set followed by a reset,
-+ performed as a single atomic operation. If two threads are waiting on
-+ an auto-reset event which is pulsed, only one will be woken. If two
-+ threads are waiting a manual-reset event which is pulsed, both will
-+ be woken. However, in both cases, the event will be unsignaled
-+ afterwards, and a simultaneous read operation will always report the
-+ event as unsignaled.
-+
-+.. c:macro:: NTSYNC_IOC_READ_SEM
-+
-+ Read the current state of a semaphore object. Takes a pointer to
-+ struct :c:type:`ntsync_sem_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``sem``
-+ - Ignored.
-+ * - ``count``
-+ - On output, contains the current count of the semaphore.
-+ * - ``max``
-+ - On output, contains the maximum count of the semaphore.
-+
-+.. c:macro:: NTSYNC_IOC_READ_MUTEX
-+
-+ Read the current state of a mutex object. Takes a pointer to struct
-+ :c:type:`ntsync_mutex_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``mutex``
-+ - Ignored.
-+ * - ``owner``
-+ - On output, contains the current owner of the mutex, or zero
-+ if the mutex is not currently owned.
-+ * - ``count``
-+ - On output, contains the current recursion count of the mutex.
-+
-+ If the mutex is marked as abandoned, the function fails with
-+ ``EOWNERDEAD``. In this case, ``count`` and ``owner`` are set to
-+ zero.
-+
-+.. c:macro:: NTSYNC_IOC_READ_EVENT
-+
-+ Read the current state of an event object. Takes a pointer to struct
-+ :c:type:`ntsync_event_args`, which is used as follows:
-+
-+ .. list-table::
-+
-+ * - ``event``
-+ - Ignored.
-+ * - ``signaled``
-+ - On output, contains the current state of the event.
-+ * - ``manual``
-+ - On output, contains 1 if the event is a manual-reset event,
-+ and 0 otherwise.
-+
-+.. c:macro:: NTSYNC_IOC_KILL_OWNER
-+
-+ Mark a mutex as unowned and abandoned if it is owned by the given
-+ owner. Takes an input-only pointer to a 32-bit integer denoting the
-+ owner. If the owner is zero, the ioctl fails with ``EINVAL``. If the
-+ owner does not own the mutex, the function fails with ``EPERM``.
-+
-+ Eligible threads waiting on the mutex will be woken as appropriate
-+ (and such waits will fail with ``EOWNERDEAD``, as described below).
-+
-+.. c:macro:: NTSYNC_IOC_WAIT_ANY
-+
-+ Poll on any of a list of objects, atomically acquiring at most one.
-+ Takes a pointer to struct :c:type:`ntsync_wait_args`, which is
-+ used as follows:
-+
-+ .. list-table::
-+
-+ * - ``timeout``
-+ - Absolute timeout in nanoseconds. If ``NTSYNC_WAIT_REALTIME``
-+ is set, the timeout is measured against the REALTIME clock;
-+ otherwise it is measured against the MONOTONIC clock. If the
-+ timeout is equal to or earlier than the current time, the
-+ function returns immediately without sleeping. If ``timeout``
-+ is U64_MAX, the function will sleep until an object is
-+ signaled, and will not fail with ``ETIMEDOUT``.
-+ * - ``objs``
-+ - Pointer to an array of ``count`` file descriptors
-+ (specified as an integer so that the structure has the same
-+ size regardless of architecture). If any object is
-+ invalid, the function fails with ``EINVAL``.
-+ * - ``count``
-+ - Number of objects specified in the ``objs`` array.
-+ If greater than ``NTSYNC_MAX_WAIT_COUNT``, the function fails
-+ with ``EINVAL``.
-+ * - ``owner``
-+ - Mutex owner identifier. If any object in ``objs`` is a mutex,
-+ the ioctl will attempt to acquire that mutex on behalf of
-+ ``owner``. If ``owner`` is zero, the ioctl fails with
-+ ``EINVAL``.
-+ * - ``index``
-+ - On success, contains the index (into ``objs``) of the object
-+ which was signaled. If ``alert`` was signaled instead,
-+ this contains ``count``.
-+ * - ``alert``
-+ - Optional event object file descriptor. If nonzero, this
-+ specifies an "alert" event object which, if signaled, will
-+ terminate the wait. If nonzero, the identifier must point to a
-+ valid event.
-+ * - ``flags``
-+ - Zero or more flags. Currently the only flag is
-+ ``NTSYNC_WAIT_REALTIME``, which causes the timeout to be
-+ measured against the REALTIME clock instead of MONOTONIC.
-+ * - ``pad``
-+ - Unused, must be set to zero.
-+
-+ This function attempts to acquire one of the given objects. If unable
-+ to do so, it sleeps until an object becomes signaled, subsequently
-+ acquiring it, or the timeout expires. In the latter case the ioctl
-+ fails with ``ETIMEDOUT``. The function only acquires one object, even
-+ if multiple objects are signaled.
-+
-+ A semaphore is considered to be signaled if its count is nonzero, and
-+ is acquired by decrementing its count by one. A mutex is considered
-+ to be signaled if it is unowned or if its owner matches the ``owner``
-+ argument, and is acquired by incrementing its recursion count by one
-+ and setting its owner to the ``owner`` argument. An auto-reset event
-+ is acquired by designaling it; a manual-reset event is not affected
-+ by acquisition.
-+
-+ Acquisition is atomic and totally ordered with respect to other
-+ operations on the same object. If two wait operations (with different
-+ ``owner`` identifiers) are queued on the same mutex, only one is
-+ signaled. If two wait operations are queued on the same semaphore,
-+ and a value of one is posted to it, only one is signaled.
-+
-+ If an abandoned mutex is acquired, the ioctl fails with
-+ ``EOWNERDEAD``. Although this is a failure return, the function may
-+ otherwise be considered successful. The mutex is marked as owned by
-+ the given owner (with a recursion count of 1) and as no longer
-+ abandoned, and ``index`` is still set to the index of the mutex.
-+
-+ The ``alert`` argument is an "extra" event which can terminate the
-+ wait, independently of all other objects.
-+
-+ It is valid to pass the same object more than once, including by
-+ passing the same event in the ``objs`` array and in ``alert``. If a
-+ wakeup occurs due to that object being signaled, ``index`` is set to
-+ the lowest index corresponding to that object.
-+
-+ The function may fail with ``EINTR`` if a signal is received.
-+
-+.. c:macro:: NTSYNC_IOC_WAIT_ALL
-+
-+ Poll on a list of objects, atomically acquiring all of them. Takes a
-+ pointer to struct :c:type:`ntsync_wait_args`, which is used
-+ identically to ``NTSYNC_IOC_WAIT_ANY``, except that ``index`` is
-+ always filled with zero on success if not woken via alert.
-+
-+ This function attempts to simultaneously acquire all of the given
-+ objects. If unable to do so, it sleeps until all objects become
-+ simultaneously signaled, subsequently acquiring them, or the timeout
-+ expires. In the latter case the ioctl fails with ``ETIMEDOUT`` and no
-+ objects are modified.
-+
-+ Objects may become signaled and subsequently designaled (through
-+ acquisition by other threads) while this thread is sleeping. Only
-+ once all objects are simultaneously signaled does the ioctl acquire
-+ them and return. The entire acquisition is atomic and totally ordered
-+ with respect to other operations on any of the given objects.
-+
-+ If an abandoned mutex is acquired, the ioctl fails with
-+ ``EOWNERDEAD``. Similarly to ``NTSYNC_IOC_WAIT_ANY``, all objects are
-+ nevertheless marked as acquired. Note that if multiple mutex objects
-+ are specified, there is no way to know which were marked as
-+ abandoned.
-+
-+ As with "any" waits, the ``alert`` argument is an "extra" event which
-+ can terminate the wait. Critically, however, an "all" wait will
-+ succeed if all members in ``objs`` are signaled, *or* if ``alert`` is
-+ signaled. In the latter case ``index`` will be set to ``count``. As
-+ with "any" waits, if both conditions are filled, the former takes
-+ priority, and objects in ``objs`` will be acquired.
-+
-+ Unlike ``NTSYNC_IOC_WAIT_ANY``, it is not valid to pass the same
-+ object more than once, nor is it valid to pass the same object in
-+ ``objs`` and in ``alert``. If this is attempted, the function fails
-+ with ``EINVAL``.
-diff --git a/MAINTAINERS b/MAINTAINERS
-index b27470be2e6a..4112729fc23a 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -15983,6 +15983,15 @@ T: git https://github.com/Paragon-Software-Group/linux-ntfs3.git
- F: Documentation/filesystems/ntfs3.rst
- F: fs/ntfs3/
-
-+NTSYNC SYNCHRONIZATION PRIMITIVE DRIVER
-+M: Elizabeth Figura <zfigura@codeweavers.com>
-+L: wine-devel@winehq.org
-+S: Supported
-+F: Documentation/userspace-api/ntsync.rst
-+F: drivers/misc/ntsync.c
-+F: include/uapi/linux/ntsync.h
-+F: tools/testing/selftests/drivers/ntsync/
-+
- NUBUS SUBSYSTEM
- M: Finn Thain <fthain@linux-m68k.org>
- L: linux-m68k@lists.linux-m68k.org
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index faf983680040..2907b5c23368 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -507,7 +507,6 @@ config OPEN_DICE
-
- config NTSYNC
- tristate "NT synchronization primitive emulation"
-- depends on BROKEN
- help
- This module provides kernel support for emulation of Windows NT
- synchronization primitives. It is not a hardware driver.
-diff --git a/drivers/misc/ntsync.c b/drivers/misc/ntsync.c
-index 3c2f743c58b0..87a24798a5c7 100644
---- a/drivers/misc/ntsync.c
-+++ b/drivers/misc/ntsync.c
-@@ -6,11 +6,17 @@
- */
-
- #include <linux/anon_inodes.h>
-+#include <linux/atomic.h>
- #include <linux/file.h>
- #include <linux/fs.h>
-+#include <linux/hrtimer.h>
-+#include <linux/ktime.h>
- #include <linux/miscdevice.h>
- #include <linux/module.h>
-+#include <linux/mutex.h>
- #include <linux/overflow.h>
-+#include <linux/sched.h>
-+#include <linux/sched/signal.h>
- #include <linux/slab.h>
- #include <linux/spinlock.h>
- #include <uapi/linux/ntsync.h>
-@@ -19,6 +25,8 @@
-
- enum ntsync_type {
- NTSYNC_TYPE_SEM,
-+ NTSYNC_TYPE_MUTEX,
-+ NTSYNC_TYPE_EVENT,
- };
-
- /*
-@@ -30,10 +38,13 @@ enum ntsync_type {
- *
- * Both rely on struct file for reference counting. Individual
- * ntsync_obj objects take a reference to the device when created.
-+ * Wait operations take a reference to each object being waited on for
-+ * the duration of the wait.
- */
-
- struct ntsync_obj {
- spinlock_t lock;
-+ int dev_locked;
-
- enum ntsync_type type;
-
-@@ -46,13 +57,335 @@ struct ntsync_obj {
- __u32 count;
- __u32 max;
- } sem;
-+ struct {
-+ __u32 count;
-+ pid_t owner;
-+ bool ownerdead;
-+ } mutex;
-+ struct {
-+ bool manual;
-+ bool signaled;
-+ } event;
- } u;
-+
-+ /*
-+ * any_waiters is protected by the object lock, but all_waiters is
-+ * protected by the device wait_all_lock.
-+ */
-+ struct list_head any_waiters;
-+ struct list_head all_waiters;
-+
-+ /*
-+ * Hint describing how many tasks are queued on this object in a
-+ * wait-all operation.
-+ *
-+ * Any time we do a wake, we may need to wake "all" waiters as well as
-+ * "any" waiters. In order to atomically wake "all" waiters, we must
-+ * lock all of the objects, and that means grabbing the wait_all_lock
-+ * below (and, due to lock ordering rules, before locking this object).
-+ * However, wait-all is a rare operation, and grabbing the wait-all
-+ * lock for every wake would create unnecessary contention.
-+ * Therefore we first check whether all_hint is zero, and, if it is,
-+ * we skip trying to wake "all" waiters.
-+ *
-+ * Since wait requests must originate from user-space threads, we're
-+ * limited here by PID_MAX_LIMIT, so there's no risk of overflow.
-+ */
-+ atomic_t all_hint;
-+};
-+
-+struct ntsync_q_entry {
-+ struct list_head node;
-+ struct ntsync_q *q;
-+ struct ntsync_obj *obj;
-+ __u32 index;
-+};
-+
-+struct ntsync_q {
-+ struct task_struct *task;
-+ __u32 owner;
-+
-+ /*
-+ * Protected via atomic_try_cmpxchg(). Only the thread that wins the
-+ * compare-and-swap may actually change object states and wake this
-+ * task.
-+ */
-+ atomic_t signaled;
-+
-+ bool all;
-+ bool ownerdead;
-+ __u32 count;
-+ struct ntsync_q_entry entries[];
- };
-
- struct ntsync_device {
-+ /*
-+ * Wait-all operations must atomically grab all objects, and be totally
-+ * ordered with respect to each other and wait-any operations.
-+ * If one thread is trying to acquire several objects, another thread
-+ * cannot touch the object at the same time.
-+ *
-+ * This device-wide lock is used to serialize wait-for-all
-+ * operations, and operations on an object that is involved in a
-+ * wait-for-all.
-+ */
-+ struct mutex wait_all_lock;
-+
- struct file *file;
- };
-
-+/*
-+ * Single objects are locked using obj->lock.
-+ *
-+ * Multiple objects are 'locked' while holding dev->wait_all_lock.
-+ * In this case however, individual objects are not locked by holding
-+ * obj->lock, but by setting obj->dev_locked.
-+ *
-+ * This means that in order to lock a single object, the sequence is slightly
-+ * more complicated than usual. Specifically it needs to check obj->dev_locked
-+ * after acquiring obj->lock, if set, it needs to drop the lock and acquire
-+ * dev->wait_all_lock in order to serialize against the multi-object operation.
-+ */
-+
-+static void dev_lock_obj(struct ntsync_device *dev, struct ntsync_obj *obj)
-+{
-+ lockdep_assert_held(&dev->wait_all_lock);
-+ lockdep_assert(obj->dev == dev);
-+ spin_lock(&obj->lock);
-+ /*
-+ * By setting obj->dev_locked inside obj->lock, it is ensured that
-+ * anyone holding obj->lock must see the value.
-+ */
-+ obj->dev_locked = 1;
-+ spin_unlock(&obj->lock);
-+}
-+
-+static void dev_unlock_obj(struct ntsync_device *dev, struct ntsync_obj *obj)
-+{
-+ lockdep_assert_held(&dev->wait_all_lock);
-+ lockdep_assert(obj->dev == dev);
-+ spin_lock(&obj->lock);
-+ obj->dev_locked = 0;
-+ spin_unlock(&obj->lock);
-+}
-+
-+static void obj_lock(struct ntsync_obj *obj)
-+{
-+ struct ntsync_device *dev = obj->dev;
-+
-+ for (;;) {
-+ spin_lock(&obj->lock);
-+ if (likely(!obj->dev_locked))
-+ break;
-+
-+ spin_unlock(&obj->lock);
-+ mutex_lock(&dev->wait_all_lock);
-+ spin_lock(&obj->lock);
-+ /*
-+ * obj->dev_locked should be set and released under the same
-+ * wait_all_lock section, since we now own this lock, it should
-+ * be clear.
-+ */
-+ lockdep_assert(!obj->dev_locked);
-+ spin_unlock(&obj->lock);
-+ mutex_unlock(&dev->wait_all_lock);
-+ }
-+}
-+
-+static void obj_unlock(struct ntsync_obj *obj)
-+{
-+ spin_unlock(&obj->lock);
-+}
-+
-+static bool ntsync_lock_obj(struct ntsync_device *dev, struct ntsync_obj *obj)
-+{
-+ bool all;
-+
-+ obj_lock(obj);
-+ all = atomic_read(&obj->all_hint);
-+ if (unlikely(all)) {
-+ obj_unlock(obj);
-+ mutex_lock(&dev->wait_all_lock);
-+ dev_lock_obj(dev, obj);
-+ }
-+
-+ return all;
-+}
-+
-+static void ntsync_unlock_obj(struct ntsync_device *dev, struct ntsync_obj *obj, bool all)
-+{
-+ if (all) {
-+ dev_unlock_obj(dev, obj);
-+ mutex_unlock(&dev->wait_all_lock);
-+ } else {
-+ obj_unlock(obj);
-+ }
-+}
-+
-+#define ntsync_assert_held(obj) \
-+ lockdep_assert((lockdep_is_held(&(obj)->lock) != LOCK_STATE_NOT_HELD) || \
-+ ((lockdep_is_held(&(obj)->dev->wait_all_lock) != LOCK_STATE_NOT_HELD) && \
-+ (obj)->dev_locked))
-+
-+static bool is_signaled(struct ntsync_obj *obj, __u32 owner)
-+{
-+ ntsync_assert_held(obj);
-+
-+ switch (obj->type) {
-+ case NTSYNC_TYPE_SEM:
-+ return !!obj->u.sem.count;
-+ case NTSYNC_TYPE_MUTEX:
-+ if (obj->u.mutex.owner && obj->u.mutex.owner != owner)
-+ return false;
-+ return obj->u.mutex.count < UINT_MAX;
-+ case NTSYNC_TYPE_EVENT:
-+ return obj->u.event.signaled;
-+ }
-+
-+ WARN(1, "bad object type %#x\n", obj->type);
-+ return false;
-+}
-+
-+/*
-+ * "locked_obj" is an optional pointer to an object which is already locked and
-+ * should not be locked again. This is necessary so that changing an object's
-+ * state and waking it can be a single atomic operation.
-+ */
-+static void try_wake_all(struct ntsync_device *dev, struct ntsync_q *q,
-+ struct ntsync_obj *locked_obj)
-+{
-+ __u32 count = q->count;
-+ bool can_wake = true;
-+ int signaled = -1;
-+ __u32 i;
-+
-+ lockdep_assert_held(&dev->wait_all_lock);
-+ if (locked_obj)
-+ lockdep_assert(locked_obj->dev_locked);
-+
-+ for (i = 0; i < count; i++) {
-+ if (q->entries[i].obj != locked_obj)
-+ dev_lock_obj(dev, q->entries[i].obj);
-+ }
-+
-+ for (i = 0; i < count; i++) {
-+ if (!is_signaled(q->entries[i].obj, q->owner)) {
-+ can_wake = false;
-+ break;
-+ }
-+ }
-+
-+ if (can_wake && atomic_try_cmpxchg(&q->signaled, &signaled, 0)) {
-+ for (i = 0; i < count; i++) {
-+ struct ntsync_obj *obj = q->entries[i].obj;
-+
-+ switch (obj->type) {
-+ case NTSYNC_TYPE_SEM:
-+ obj->u.sem.count--;
-+ break;
-+ case NTSYNC_TYPE_MUTEX:
-+ if (obj->u.mutex.ownerdead)
-+ q->ownerdead = true;
-+ obj->u.mutex.ownerdead = false;
-+ obj->u.mutex.count++;
-+ obj->u.mutex.owner = q->owner;
-+ break;
-+ case NTSYNC_TYPE_EVENT:
-+ if (!obj->u.event.manual)
-+ obj->u.event.signaled = false;
-+ break;
-+ }
-+ }
-+ wake_up_process(q->task);
-+ }
-+
-+ for (i = 0; i < count; i++) {
-+ if (q->entries[i].obj != locked_obj)
-+ dev_unlock_obj(dev, q->entries[i].obj);
-+ }
-+}
-+
-+static void try_wake_all_obj(struct ntsync_device *dev, struct ntsync_obj *obj)
-+{
-+ struct ntsync_q_entry *entry;
-+
-+ lockdep_assert_held(&dev->wait_all_lock);
-+ lockdep_assert(obj->dev_locked);
-+
-+ list_for_each_entry(entry, &obj->all_waiters, node)
-+ try_wake_all(dev, entry->q, obj);
-+}
-+
-+static void try_wake_any_sem(struct ntsync_obj *sem)
-+{
-+ struct ntsync_q_entry *entry;
-+
-+ ntsync_assert_held(sem);
-+ lockdep_assert(sem->type == NTSYNC_TYPE_SEM);
-+
-+ list_for_each_entry(entry, &sem->any_waiters, node) {
-+ struct ntsync_q *q = entry->q;
-+ int signaled = -1;
-+
-+ if (!sem->u.sem.count)
-+ break;
-+
-+ if (atomic_try_cmpxchg(&q->signaled, &signaled, entry->index)) {
-+ sem->u.sem.count--;
-+ wake_up_process(q->task);
-+ }
-+ }
-+}
-+
-+static void try_wake_any_mutex(struct ntsync_obj *mutex)
-+{
-+ struct ntsync_q_entry *entry;
-+
-+ ntsync_assert_held(mutex);
-+ lockdep_assert(mutex->type == NTSYNC_TYPE_MUTEX);
-+
-+ list_for_each_entry(entry, &mutex->any_waiters, node) {
-+ struct ntsync_q *q = entry->q;
-+ int signaled = -1;
-+
-+ if (mutex->u.mutex.count == UINT_MAX)
-+ break;
-+ if (mutex->u.mutex.owner && mutex->u.mutex.owner != q->owner)
-+ continue;
-+
-+ if (atomic_try_cmpxchg(&q->signaled, &signaled, entry->index)) {
-+ if (mutex->u.mutex.ownerdead)
-+ q->ownerdead = true;
-+ mutex->u.mutex.ownerdead = false;
-+ mutex->u.mutex.count++;
-+ mutex->u.mutex.owner = q->owner;
-+ wake_up_process(q->task);
-+ }
-+ }
-+}
-+
-+static void try_wake_any_event(struct ntsync_obj *event)
-+{
-+ struct ntsync_q_entry *entry;
-+
-+ ntsync_assert_held(event);
-+ lockdep_assert(event->type == NTSYNC_TYPE_EVENT);
-+
-+ list_for_each_entry(entry, &event->any_waiters, node) {
-+ struct ntsync_q *q = entry->q;
-+ int signaled = -1;
-+
-+ if (!event->u.event.signaled)
-+ break;
-+
-+ if (atomic_try_cmpxchg(&q->signaled, &signaled, entry->index)) {
-+ if (!event->u.event.manual)
-+ event->u.event.signaled = false;
-+ wake_up_process(q->task);
-+ }
-+ }
-+}
-+
- /*
- * Actually change the semaphore state, returning -EOVERFLOW if it is made
- * invalid.
-@@ -61,7 +394,7 @@ static int post_sem_state(struct ntsync_obj *sem, __u32 count)
- {
- __u32 sum;
-
-- lockdep_assert_held(&sem->lock);
-+ ntsync_assert_held(sem);
-
- if (check_add_overflow(sem->u.sem.count, count, &sum) ||
- sum > sem->u.sem.max)
-@@ -73,9 +406,11 @@ static int post_sem_state(struct ntsync_obj *sem, __u32 count)
-
- static int ntsync_sem_post(struct ntsync_obj *sem, void __user *argp)
- {
-+ struct ntsync_device *dev = sem->dev;
- __u32 __user *user_args = argp;
- __u32 prev_count;
- __u32 args;
-+ bool all;
- int ret;
-
- if (copy_from_user(&args, argp, sizeof(args)))
-@@ -84,12 +419,17 @@ static int ntsync_sem_post(struct ntsync_obj *sem, void __user *argp)
- if (sem->type != NTSYNC_TYPE_SEM)
- return -EINVAL;
-
-- spin_lock(&sem->lock);
-+ all = ntsync_lock_obj(dev, sem);
-
- prev_count = sem->u.sem.count;
- ret = post_sem_state(sem, args);
-+ if (!ret) {
-+ if (all)
-+ try_wake_all_obj(dev, sem);
-+ try_wake_any_sem(sem);
-+ }
-
-- spin_unlock(&sem->lock);
-+ ntsync_unlock_obj(dev, sem, all);
-
- if (!ret && put_user(prev_count, user_args))
- ret = -EFAULT;
-@@ -97,6 +437,226 @@ static int ntsync_sem_post(struct ntsync_obj *sem, void __user *argp)
- return ret;
- }
-
-+/*
-+ * Actually change the mutex state, returning -EPERM if not the owner.
-+ */
-+static int unlock_mutex_state(struct ntsync_obj *mutex,
-+ const struct ntsync_mutex_args *args)
-+{
-+ ntsync_assert_held(mutex);
-+
-+ if (mutex->u.mutex.owner != args->owner)
-+ return -EPERM;
-+
-+ if (!--mutex->u.mutex.count)
-+ mutex->u.mutex.owner = 0;
-+ return 0;
-+}
-+
-+static int ntsync_mutex_unlock(struct ntsync_obj *mutex, void __user *argp)
-+{
-+ struct ntsync_mutex_args __user *user_args = argp;
-+ struct ntsync_device *dev = mutex->dev;
-+ struct ntsync_mutex_args args;
-+ __u32 prev_count;
-+ bool all;
-+ int ret;
-+
-+ if (copy_from_user(&args, argp, sizeof(args)))
-+ return -EFAULT;
-+ if (!args.owner)
-+ return -EINVAL;
-+
-+ if (mutex->type != NTSYNC_TYPE_MUTEX)
-+ return -EINVAL;
-+
-+ all = ntsync_lock_obj(dev, mutex);
-+
-+ prev_count = mutex->u.mutex.count;
-+ ret = unlock_mutex_state(mutex, &args);
-+ if (!ret) {
-+ if (all)
-+ try_wake_all_obj(dev, mutex);
-+ try_wake_any_mutex(mutex);
-+ }
-+
-+ ntsync_unlock_obj(dev, mutex, all);
-+
-+ if (!ret && put_user(prev_count, &user_args->count))
-+ ret = -EFAULT;
-+
-+ return ret;
-+}
-+
-+/*
-+ * Actually change the mutex state to mark its owner as dead,
-+ * returning -EPERM if not the owner.
-+ */
-+static int kill_mutex_state(struct ntsync_obj *mutex, __u32 owner)
-+{
-+ ntsync_assert_held(mutex);
-+
-+ if (mutex->u.mutex.owner != owner)
-+ return -EPERM;
-+
-+ mutex->u.mutex.ownerdead = true;
-+ mutex->u.mutex.owner = 0;
-+ mutex->u.mutex.count = 0;
-+ return 0;
-+}
-+
-+static int ntsync_mutex_kill(struct ntsync_obj *mutex, void __user *argp)
-+{
-+ struct ntsync_device *dev = mutex->dev;
-+ __u32 owner;
-+ bool all;
-+ int ret;
-+
-+ if (get_user(owner, (__u32 __user *)argp))
-+ return -EFAULT;
-+ if (!owner)
-+ return -EINVAL;
-+
-+ if (mutex->type != NTSYNC_TYPE_MUTEX)
-+ return -EINVAL;
-+
-+ all = ntsync_lock_obj(dev, mutex);
-+
-+ ret = kill_mutex_state(mutex, owner);
-+ if (!ret) {
-+ if (all)
-+ try_wake_all_obj(dev, mutex);
-+ try_wake_any_mutex(mutex);
-+ }
-+
-+ ntsync_unlock_obj(dev, mutex, all);
-+
-+ return ret;
-+}
-+
-+static int ntsync_event_set(struct ntsync_obj *event, void __user *argp, bool pulse)
-+{
-+ struct ntsync_device *dev = event->dev;
-+ __u32 prev_state;
-+ bool all;
-+
-+ if (event->type != NTSYNC_TYPE_EVENT)
-+ return -EINVAL;
-+
-+ all = ntsync_lock_obj(dev, event);
-+
-+ prev_state = event->u.event.signaled;
-+ event->u.event.signaled = true;
-+ if (all)
-+ try_wake_all_obj(dev, event);
-+ try_wake_any_event(event);
-+ if (pulse)
-+ event->u.event.signaled = false;
-+
-+ ntsync_unlock_obj(dev, event, all);
-+
-+ if (put_user(prev_state, (__u32 __user *)argp))
-+ return -EFAULT;
-+
-+ return 0;
-+}
-+
-+static int ntsync_event_reset(struct ntsync_obj *event, void __user *argp)
-+{
-+ struct ntsync_device *dev = event->dev;
-+ __u32 prev_state;
-+ bool all;
-+
-+ if (event->type != NTSYNC_TYPE_EVENT)
-+ return -EINVAL;
-+
-+ all = ntsync_lock_obj(dev, event);
-+
-+ prev_state = event->u.event.signaled;
-+ event->u.event.signaled = false;
-+
-+ ntsync_unlock_obj(dev, event, all);
-+
-+ if (put_user(prev_state, (__u32 __user *)argp))
-+ return -EFAULT;
-+
-+ return 0;
-+}
-+
-+static int ntsync_sem_read(struct ntsync_obj *sem, void __user *argp)
-+{
-+ struct ntsync_sem_args __user *user_args = argp;
-+ struct ntsync_device *dev = sem->dev;
-+ struct ntsync_sem_args args;
-+ bool all;
-+
-+ if (sem->type != NTSYNC_TYPE_SEM)
-+ return -EINVAL;
-+
-+ args.sem = 0;
-+
-+ all = ntsync_lock_obj(dev, sem);
-+
-+ args.count = sem->u.sem.count;
-+ args.max = sem->u.sem.max;
-+
-+ ntsync_unlock_obj(dev, sem, all);
-+
-+ if (copy_to_user(user_args, &args, sizeof(args)))
-+ return -EFAULT;
-+ return 0;
-+}
-+
-+static int ntsync_mutex_read(struct ntsync_obj *mutex, void __user *argp)
-+{
-+ struct ntsync_mutex_args __user *user_args = argp;
-+ struct ntsync_device *dev = mutex->dev;
-+ struct ntsync_mutex_args args;
-+ bool all;
-+ int ret;
-+
-+ if (mutex->type != NTSYNC_TYPE_MUTEX)
-+ return -EINVAL;
-+
-+ args.mutex = 0;
-+
-+ all = ntsync_lock_obj(dev, mutex);
-+
-+ args.count = mutex->u.mutex.count;
-+ args.owner = mutex->u.mutex.owner;
-+ ret = mutex->u.mutex.ownerdead ? -EOWNERDEAD : 0;
-+
-+ ntsync_unlock_obj(dev, mutex, all);
-+
-+ if (copy_to_user(user_args, &args, sizeof(args)))
-+ return -EFAULT;
-+ return ret;
-+}
-+
-+static int ntsync_event_read(struct ntsync_obj *event, void __user *argp)
-+{
-+ struct ntsync_event_args __user *user_args = argp;
-+ struct ntsync_device *dev = event->dev;
-+ struct ntsync_event_args args;
-+ bool all;
-+
-+ if (event->type != NTSYNC_TYPE_EVENT)
-+ return -EINVAL;
-+
-+ args.event = 0;
-+
-+ all = ntsync_lock_obj(dev, event);
-+
-+ args.manual = event->u.event.manual;
-+ args.signaled = event->u.event.signaled;
-+
-+ ntsync_unlock_obj(dev, event, all);
-+
-+ if (copy_to_user(user_args, &args, sizeof(args)))
-+ return -EFAULT;
-+ return 0;
-+}
-+
- static int ntsync_obj_release(struct inode *inode, struct file *file)
- {
- struct ntsync_obj *obj = file->private_data;
-@@ -116,6 +676,22 @@ static long ntsync_obj_ioctl(struct file *file, unsigned int cmd,
- switch (cmd) {
- case NTSYNC_IOC_SEM_POST:
- return ntsync_sem_post(obj, argp);
-+ case NTSYNC_IOC_SEM_READ:
-+ return ntsync_sem_read(obj, argp);
-+ case NTSYNC_IOC_MUTEX_UNLOCK:
-+ return ntsync_mutex_unlock(obj, argp);
-+ case NTSYNC_IOC_MUTEX_KILL:
-+ return ntsync_mutex_kill(obj, argp);
-+ case NTSYNC_IOC_MUTEX_READ:
-+ return ntsync_mutex_read(obj, argp);
-+ case NTSYNC_IOC_EVENT_SET:
-+ return ntsync_event_set(obj, argp, false);
-+ case NTSYNC_IOC_EVENT_RESET:
-+ return ntsync_event_reset(obj, argp);
-+ case NTSYNC_IOC_EVENT_PULSE:
-+ return ntsync_event_set(obj, argp, true);
-+ case NTSYNC_IOC_EVENT_READ:
-+ return ntsync_event_read(obj, argp);
- default:
- return -ENOIOCTLCMD;
- }
-@@ -141,6 +717,9 @@ static struct ntsync_obj *ntsync_alloc_obj(struct ntsync_device *dev,
- obj->dev = dev;
- get_file(dev->file);
- spin_lock_init(&obj->lock);
-+ INIT_LIST_HEAD(&obj->any_waiters);
-+ INIT_LIST_HEAD(&obj->all_waiters);
-+ atomic_set(&obj->all_hint, 0);
-
- return obj;
- }
-@@ -191,6 +770,400 @@ static int ntsync_create_sem(struct ntsync_device *dev, void __user *argp)
- return put_user(fd, &user_args->sem);
- }
-
-+static int ntsync_create_mutex(struct ntsync_device *dev, void __user *argp)
-+{
-+ struct ntsync_mutex_args __user *user_args = argp;
-+ struct ntsync_mutex_args args;
-+ struct ntsync_obj *mutex;
-+ int fd;
-+
-+ if (copy_from_user(&args, argp, sizeof(args)))
-+ return -EFAULT;
-+
-+ if (!args.owner != !args.count)
-+ return -EINVAL;
-+
-+ mutex = ntsync_alloc_obj(dev, NTSYNC_TYPE_MUTEX);
-+ if (!mutex)
-+ return -ENOMEM;
-+ mutex->u.mutex.count = args.count;
-+ mutex->u.mutex.owner = args.owner;
-+ fd = ntsync_obj_get_fd(mutex);
-+ if (fd < 0) {
-+ kfree(mutex);
-+ return fd;
-+ }
-+
-+ return put_user(fd, &user_args->mutex);
-+}
-+
-+static int ntsync_create_event(struct ntsync_device *dev, void __user *argp)
-+{
-+ struct ntsync_event_args __user *user_args = argp;
-+ struct ntsync_event_args args;
-+ struct ntsync_obj *event;
-+ int fd;
-+
-+ if (copy_from_user(&args, argp, sizeof(args)))
-+ return -EFAULT;
-+
-+ event = ntsync_alloc_obj(dev, NTSYNC_TYPE_EVENT);
-+ if (!event)
-+ return -ENOMEM;
-+ event->u.event.manual = args.manual;
-+ event->u.event.signaled = args.signaled;
-+ fd = ntsync_obj_get_fd(event);
-+ if (fd < 0) {
-+ kfree(event);
-+ return fd;
-+ }
-+
-+ return put_user(fd, &user_args->event);
-+}
-+
-+static struct ntsync_obj *get_obj(struct ntsync_device *dev, int fd)
-+{
-+ struct file *file = fget(fd);
-+ struct ntsync_obj *obj;
-+
-+ if (!file)
-+ return NULL;
-+
-+ if (file->f_op != &ntsync_obj_fops) {
-+ fput(file);
-+ return NULL;
-+ }
-+
-+ obj = file->private_data;
-+ if (obj->dev != dev) {
-+ fput(file);
-+ return NULL;
-+ }
-+
-+ return obj;
-+}
-+
-+static void put_obj(struct ntsync_obj *obj)
-+{
-+ fput(obj->file);
-+}
-+
-+static int ntsync_schedule(const struct ntsync_q *q, const struct ntsync_wait_args *args)
-+{
-+ ktime_t timeout = ns_to_ktime(args->timeout);
-+ clockid_t clock = CLOCK_MONOTONIC;
-+ ktime_t *timeout_ptr;
-+ int ret = 0;
-+
-+ timeout_ptr = (args->timeout == U64_MAX ? NULL : &timeout);
-+
-+ if (args->flags & NTSYNC_WAIT_REALTIME)
-+ clock = CLOCK_REALTIME;
-+
-+ do {
-+ if (signal_pending(current)) {
-+ ret = -ERESTARTSYS;
-+ break;
-+ }
-+
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ if (atomic_read(&q->signaled) != -1) {
-+ ret = 0;
-+ break;
-+ }
-+ ret = schedule_hrtimeout_range_clock(timeout_ptr, 0, HRTIMER_MODE_ABS, clock);
-+ } while (ret < 0);
-+ __set_current_state(TASK_RUNNING);
-+
-+ return ret;
-+}
-+
-+/*
-+ * Allocate and initialize the ntsync_q structure, but do not queue us yet.
-+ */
-+static int setup_wait(struct ntsync_device *dev,
-+ const struct ntsync_wait_args *args, bool all,
-+ struct ntsync_q **ret_q)
-+{
-+ int fds[NTSYNC_MAX_WAIT_COUNT + 1];
-+ const __u32 count = args->count;
-+ struct ntsync_q *q;
-+ __u32 total_count;
-+ __u32 i, j;
-+
-+ if (args->pad || (args->flags & ~NTSYNC_WAIT_REALTIME))
-+ return -EINVAL;
-+
-+ if (args->count > NTSYNC_MAX_WAIT_COUNT)
-+ return -EINVAL;
-+
-+ total_count = count;
-+ if (args->alert)
-+ total_count++;
-+
-+ if (copy_from_user(fds, u64_to_user_ptr(args->objs),
-+ array_size(count, sizeof(*fds))))
-+ return -EFAULT;
-+ if (args->alert)
-+ fds[count] = args->alert;
-+
-+ q = kmalloc(struct_size(q, entries, total_count), GFP_KERNEL);
-+ if (!q)
-+ return -ENOMEM;
-+ q->task = current;
-+ q->owner = args->owner;
-+ atomic_set(&q->signaled, -1);
-+ q->all = all;
-+ q->ownerdead = false;
-+ q->count = count;
-+
-+ for (i = 0; i < total_count; i++) {
-+ struct ntsync_q_entry *entry = &q->entries[i];
-+ struct ntsync_obj *obj = get_obj(dev, fds[i]);
-+
-+ if (!obj)
-+ goto err;
-+
-+ if (all) {
-+ /* Check that the objects are all distinct. */
-+ for (j = 0; j < i; j++) {
-+ if (obj == q->entries[j].obj) {
-+ put_obj(obj);
-+ goto err;
-+ }
-+ }
-+ }
-+
-+ entry->obj = obj;
-+ entry->q = q;
-+ entry->index = i;
-+ }
-+
-+ *ret_q = q;
-+ return 0;
-+
-+err:
-+ for (j = 0; j < i; j++)
-+ put_obj(q->entries[j].obj);
-+ kfree(q);
-+ return -EINVAL;
-+}
-+
-+static void try_wake_any_obj(struct ntsync_obj *obj)
-+{
-+ switch (obj->type) {
-+ case NTSYNC_TYPE_SEM:
-+ try_wake_any_sem(obj);
-+ break;
-+ case NTSYNC_TYPE_MUTEX:
-+ try_wake_any_mutex(obj);
-+ break;
-+ case NTSYNC_TYPE_EVENT:
-+ try_wake_any_event(obj);
-+ break;
-+ }
-+}
-+
-+static int ntsync_wait_any(struct ntsync_device *dev, void __user *argp)
-+{
-+ struct ntsync_wait_args args;
-+ __u32 i, total_count;
-+ struct ntsync_q *q;
-+ int signaled;
-+ bool all;
-+ int ret;
-+
-+ if (copy_from_user(&args, argp, sizeof(args)))
-+ return -EFAULT;
-+
-+ ret = setup_wait(dev, &args, false, &q);
-+ if (ret < 0)
-+ return ret;
-+
-+ total_count = args.count;
-+ if (args.alert)
-+ total_count++;
-+
-+ /* queue ourselves */
-+
-+ for (i = 0; i < total_count; i++) {
-+ struct ntsync_q_entry *entry = &q->entries[i];
-+ struct ntsync_obj *obj = entry->obj;
-+
-+ all = ntsync_lock_obj(dev, obj);
-+ list_add_tail(&entry->node, &obj->any_waiters);
-+ ntsync_unlock_obj(dev, obj, all);
-+ }
-+
-+ /*
-+ * Check if we are already signaled.
-+ *
-+ * Note that the API requires that normal objects are checked before
-+ * the alert event. Hence we queue the alert event last, and check
-+ * objects in order.
-+ */
-+
-+ for (i = 0; i < total_count; i++) {
-+ struct ntsync_obj *obj = q->entries[i].obj;
-+
-+ if (atomic_read(&q->signaled) != -1)
-+ break;
-+
-+ all = ntsync_lock_obj(dev, obj);
-+ try_wake_any_obj(obj);
-+ ntsync_unlock_obj(dev, obj, all);
-+ }
-+
-+ /* sleep */
-+
-+ ret = ntsync_schedule(q, &args);
-+
-+ /* and finally, unqueue */
-+
-+ for (i = 0; i < total_count; i++) {
-+ struct ntsync_q_entry *entry = &q->entries[i];
-+ struct ntsync_obj *obj = entry->obj;
-+
-+ all = ntsync_lock_obj(dev, obj);
-+ list_del(&entry->node);
-+ ntsync_unlock_obj(dev, obj, all);
-+
-+ put_obj(obj);
-+ }
-+
-+ signaled = atomic_read(&q->signaled);
-+ if (signaled != -1) {
-+ struct ntsync_wait_args __user *user_args = argp;
-+
-+ /* even if we caught a signal, we need to communicate success */
-+ ret = q->ownerdead ? -EOWNERDEAD : 0;
-+
-+ if (put_user(signaled, &user_args->index))
-+ ret = -EFAULT;
-+ } else if (!ret) {
-+ ret = -ETIMEDOUT;
-+ }
-+
-+ kfree(q);
-+ return ret;
-+}
-+
-+static int ntsync_wait_all(struct ntsync_device *dev, void __user *argp)
-+{
-+ struct ntsync_wait_args args;
-+ struct ntsync_q *q;
-+ int signaled;
-+ __u32 i;
-+ int ret;
-+
-+ if (copy_from_user(&args, argp, sizeof(args)))
-+ return -EFAULT;
-+
-+ ret = setup_wait(dev, &args, true, &q);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* queue ourselves */
-+
-+ mutex_lock(&dev->wait_all_lock);
-+
-+ for (i = 0; i < args.count; i++) {
-+ struct ntsync_q_entry *entry = &q->entries[i];
-+ struct ntsync_obj *obj = entry->obj;
-+
-+ atomic_inc(&obj->all_hint);
-+
-+ /*
-+ * obj->all_waiters is protected by dev->wait_all_lock rather
-+ * than obj->lock, so there is no need to acquire obj->lock
-+ * here.
-+ */
-+ list_add_tail(&entry->node, &obj->all_waiters);
-+ }
-+ if (args.alert) {
-+ struct ntsync_q_entry *entry = &q->entries[args.count];
-+ struct ntsync_obj *obj = entry->obj;
-+
-+ dev_lock_obj(dev, obj);
-+ list_add_tail(&entry->node, &obj->any_waiters);
-+ dev_unlock_obj(dev, obj);
-+ }
-+
-+ /* check if we are already signaled */
-+
-+ try_wake_all(dev, q, NULL);
-+
-+ mutex_unlock(&dev->wait_all_lock);
-+
-+ /*
-+ * Check if the alert event is signaled, making sure to do so only
-+ * after checking if the other objects are signaled.
-+ */
-+
-+ if (args.alert) {
-+ struct ntsync_obj *obj = q->entries[args.count].obj;
-+
-+ if (atomic_read(&q->signaled) == -1) {
-+ bool all = ntsync_lock_obj(dev, obj);
-+ try_wake_any_obj(obj);
-+ ntsync_unlock_obj(dev, obj, all);
-+ }
-+ }
-+
-+ /* sleep */
-+
-+ ret = ntsync_schedule(q, &args);
-+
-+ /* and finally, unqueue */
-+
-+ mutex_lock(&dev->wait_all_lock);
-+
-+ for (i = 0; i < args.count; i++) {
-+ struct ntsync_q_entry *entry = &q->entries[i];
-+ struct ntsync_obj *obj = entry->obj;
-+
-+ /*
-+ * obj->all_waiters is protected by dev->wait_all_lock rather
-+ * than obj->lock, so there is no need to acquire it here.
-+ */
-+ list_del(&entry->node);
-+
-+ atomic_dec(&obj->all_hint);
-+
-+ put_obj(obj);
-+ }
-+
-+ mutex_unlock(&dev->wait_all_lock);
-+
-+ if (args.alert) {
-+ struct ntsync_q_entry *entry = &q->entries[args.count];
-+ struct ntsync_obj *obj = entry->obj;
-+ bool all;
-+
-+ all = ntsync_lock_obj(dev, obj);
-+ list_del(&entry->node);
-+ ntsync_unlock_obj(dev, obj, all);
-+
-+ put_obj(obj);
-+ }
-+
-+ signaled = atomic_read(&q->signaled);
-+ if (signaled != -1) {
-+ struct ntsync_wait_args __user *user_args = argp;
-+
-+ /* even if we caught a signal, we need to communicate success */
-+ ret = q->ownerdead ? -EOWNERDEAD : 0;
-+
-+ if (put_user(signaled, &user_args->index))
-+ ret = -EFAULT;
-+ } else if (!ret) {
-+ ret = -ETIMEDOUT;
-+ }
-+
-+ kfree(q);
-+ return ret;
-+}
-+
- static int ntsync_char_open(struct inode *inode, struct file *file)
- {
- struct ntsync_device *dev;
-@@ -199,6 +1172,8 @@ static int ntsync_char_open(struct inode *inode, struct file *file)
- if (!dev)
- return -ENOMEM;
-
-+ mutex_init(&dev->wait_all_lock);
-+
- file->private_data = dev;
- dev->file = file;
- return nonseekable_open(inode, file);
-@@ -220,8 +1195,16 @@ static long ntsync_char_ioctl(struct file *file, unsigned int cmd,
- void __user *argp = (void __user *)parm;
-
- switch (cmd) {
-+ case NTSYNC_IOC_CREATE_EVENT:
-+ return ntsync_create_event(dev, argp);
-+ case NTSYNC_IOC_CREATE_MUTEX:
-+ return ntsync_create_mutex(dev, argp);
- case NTSYNC_IOC_CREATE_SEM:
- return ntsync_create_sem(dev, argp);
-+ case NTSYNC_IOC_WAIT_ALL:
-+ return ntsync_wait_all(dev, argp);
-+ case NTSYNC_IOC_WAIT_ANY:
-+ return ntsync_wait_any(dev, argp);
- default:
- return -ENOIOCTLCMD;
- }
-diff --git a/include/uapi/linux/ntsync.h b/include/uapi/linux/ntsync.h
-index dcfa38fdc93c..4a8095a3fc34 100644
---- a/include/uapi/linux/ntsync.h
-+++ b/include/uapi/linux/ntsync.h
-@@ -16,8 +16,47 @@ struct ntsync_sem_args {
- __u32 max;
- };
-
-+struct ntsync_mutex_args {
-+ __u32 mutex;
-+ __u32 owner;
-+ __u32 count;
-+};
-+
-+struct ntsync_event_args {
-+ __u32 event;
-+ __u32 manual;
-+ __u32 signaled;
-+};
-+
-+#define NTSYNC_WAIT_REALTIME 0x1
-+
-+struct ntsync_wait_args {
-+ __u64 timeout;
-+ __u64 objs;
-+ __u32 count;
-+ __u32 index;
-+ __u32 flags;
-+ __u32 owner;
-+ __u32 alert;
-+ __u32 pad;
-+};
-+
-+#define NTSYNC_MAX_WAIT_COUNT 64
-+
- #define NTSYNC_IOC_CREATE_SEM _IOWR('N', 0x80, struct ntsync_sem_args)
-+#define NTSYNC_IOC_WAIT_ANY _IOWR('N', 0x82, struct ntsync_wait_args)
-+#define NTSYNC_IOC_WAIT_ALL _IOWR('N', 0x83, struct ntsync_wait_args)
-+#define NTSYNC_IOC_CREATE_MUTEX _IOWR('N', 0x84, struct ntsync_sem_args)
-+#define NTSYNC_IOC_CREATE_EVENT _IOWR('N', 0x87, struct ntsync_event_args)
-
- #define NTSYNC_IOC_SEM_POST _IOWR('N', 0x81, __u32)
-+#define NTSYNC_IOC_MUTEX_UNLOCK _IOWR('N', 0x85, struct ntsync_mutex_args)
-+#define NTSYNC_IOC_MUTEX_KILL _IOW ('N', 0x86, __u32)
-+#define NTSYNC_IOC_EVENT_SET _IOR ('N', 0x88, __u32)
-+#define NTSYNC_IOC_EVENT_RESET _IOR ('N', 0x89, __u32)
-+#define NTSYNC_IOC_EVENT_PULSE _IOR ('N', 0x8a, __u32)
-+#define NTSYNC_IOC_SEM_READ _IOR ('N', 0x8b, struct ntsync_sem_args)
-+#define NTSYNC_IOC_MUTEX_READ _IOR ('N', 0x8c, struct ntsync_mutex_args)
-+#define NTSYNC_IOC_EVENT_READ _IOR ('N', 0x8d, struct ntsync_event_args)
-
- #endif
-diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
-index 9039f3709aff..d5aeaa8fe3ca 100644
---- a/tools/testing/selftests/Makefile
-+++ b/tools/testing/selftests/Makefile
-@@ -16,6 +16,7 @@ TARGETS += damon
- TARGETS += devices
- TARGETS += dmabuf-heaps
- TARGETS += drivers/dma-buf
-+TARGETS += drivers/ntsync
- TARGETS += drivers/s390x/uvdevice
- TARGETS += drivers/net
- TARGETS += drivers/net/bonding
-diff --git a/tools/testing/selftests/drivers/ntsync/.gitignore b/tools/testing/selftests/drivers/ntsync/.gitignore
-new file mode 100644
-index 000000000000..848573a3d3ea
---- /dev/null
-+++ b/tools/testing/selftests/drivers/ntsync/.gitignore
-@@ -0,0 +1 @@
-+ntsync
-diff --git a/tools/testing/selftests/drivers/ntsync/Makefile b/tools/testing/selftests/drivers/ntsync/Makefile
-new file mode 100644
-index 000000000000..dbf2b055c0b2
---- /dev/null
-+++ b/tools/testing/selftests/drivers/ntsync/Makefile
-@@ -0,0 +1,7 @@
-+# SPDX-LICENSE-IDENTIFIER: GPL-2.0-only
-+TEST_GEN_PROGS := ntsync
-+
-+CFLAGS += $(KHDR_INCLUDES)
-+LDLIBS += -lpthread
-+
-+include ../../lib.mk
-diff --git a/tools/testing/selftests/drivers/ntsync/config b/tools/testing/selftests/drivers/ntsync/config
-new file mode 100644
-index 000000000000..60539c826d06
---- /dev/null
-+++ b/tools/testing/selftests/drivers/ntsync/config
-@@ -0,0 +1 @@
-+CONFIG_WINESYNC=y
-diff --git a/tools/testing/selftests/drivers/ntsync/ntsync.c b/tools/testing/selftests/drivers/ntsync/ntsync.c
-new file mode 100644
-index 000000000000..5fa2c9a0768c
---- /dev/null
-+++ b/tools/testing/selftests/drivers/ntsync/ntsync.c
-@@ -0,0 +1,1407 @@
-+// SPDX-License-Identifier: GPL-2.0-or-later
-+/*
-+ * Various unit tests for the "ntsync" synchronization primitive driver.
-+ *
-+ * Copyright (C) 2021-2022 Elizabeth Figura <zfigura@codeweavers.com>
-+ */
-+
-+#define _GNU_SOURCE
-+#include <sys/ioctl.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
-+#include <time.h>
-+#include <pthread.h>
-+#include <linux/ntsync.h>
-+#include "../../kselftest_harness.h"
-+
-+static int read_sem_state(int sem, __u32 *count, __u32 *max)
-+{
-+ struct ntsync_sem_args args;
-+ int ret;
-+
-+ memset(&args, 0xcc, sizeof(args));
-+ ret = ioctl(sem, NTSYNC_IOC_SEM_READ, &args);
-+ *count = args.count;
-+ *max = args.max;
-+ return ret;
-+}
-+
-+#define check_sem_state(sem, count, max) \
-+ ({ \
-+ __u32 __count, __max; \
-+ int ret = read_sem_state((sem), &__count, &__max); \
-+ EXPECT_EQ(0, ret); \
-+ EXPECT_EQ((count), __count); \
-+ EXPECT_EQ((max), __max); \
-+ })
-+
-+static int post_sem(int sem, __u32 *count)
-+{
-+ return ioctl(sem, NTSYNC_IOC_SEM_POST, count);
-+}
-+
-+static int read_mutex_state(int mutex, __u32 *count, __u32 *owner)
-+{
-+ struct ntsync_mutex_args args;
-+ int ret;
-+
-+ memset(&args, 0xcc, sizeof(args));
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_READ, &args);
-+ *count = args.count;
-+ *owner = args.owner;
-+ return ret;
-+}
-+
-+#define check_mutex_state(mutex, count, owner) \
-+ ({ \
-+ __u32 __count, __owner; \
-+ int ret = read_mutex_state((mutex), &__count, &__owner); \
-+ EXPECT_EQ(0, ret); \
-+ EXPECT_EQ((count), __count); \
-+ EXPECT_EQ((owner), __owner); \
-+ })
-+
-+static int unlock_mutex(int mutex, __u32 owner, __u32 *count)
-+{
-+ struct ntsync_mutex_args args;
-+ int ret;
-+
-+ args.owner = owner;
-+ args.count = 0xdeadbeef;
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_UNLOCK, &args);
-+ *count = args.count;
-+ return ret;
-+}
-+
-+static int read_event_state(int event, __u32 *signaled, __u32 *manual)
-+{
-+ struct ntsync_event_args args;
-+ int ret;
-+
-+ memset(&args, 0xcc, sizeof(args));
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_READ, &args);
-+ *signaled = args.signaled;
-+ *manual = args.manual;
-+ return ret;
-+}
-+
-+#define check_event_state(event, signaled, manual) \
-+ ({ \
-+ __u32 __signaled, __manual; \
-+ int ret = read_event_state((event), &__signaled, &__manual); \
-+ EXPECT_EQ(0, ret); \
-+ EXPECT_EQ((signaled), __signaled); \
-+ EXPECT_EQ((manual), __manual); \
-+ })
-+
-+static int wait_objs(int fd, unsigned long request, __u32 count,
-+ const int *objs, __u32 owner, int alert, __u32 *index)
-+{
-+ struct ntsync_wait_args args = {0};
-+ struct timespec timeout;
-+ int ret;
-+
-+ clock_gettime(CLOCK_MONOTONIC, &timeout);
-+
-+ args.timeout = timeout.tv_sec * 1000000000 + timeout.tv_nsec;
-+ args.count = count;
-+ args.objs = (uintptr_t)objs;
-+ args.owner = owner;
-+ args.index = 0xdeadbeef;
-+ args.alert = alert;
-+ ret = ioctl(fd, request, &args);
-+ *index = args.index;
-+ return ret;
-+}
-+
-+static int wait_any(int fd, __u32 count, const int *objs, __u32 owner, __u32 *index)
-+{
-+ return wait_objs(fd, NTSYNC_IOC_WAIT_ANY, count, objs, owner, 0, index);
-+}
-+
-+static int wait_all(int fd, __u32 count, const int *objs, __u32 owner, __u32 *index)
-+{
-+ return wait_objs(fd, NTSYNC_IOC_WAIT_ALL, count, objs, owner, 0, index);
-+}
-+
-+static int wait_any_alert(int fd, __u32 count, const int *objs,
-+ __u32 owner, int alert, __u32 *index)
-+{
-+ return wait_objs(fd, NTSYNC_IOC_WAIT_ANY,
-+ count, objs, owner, alert, index);
-+}
-+
-+static int wait_all_alert(int fd, __u32 count, const int *objs,
-+ __u32 owner, int alert, __u32 *index)
-+{
-+ return wait_objs(fd, NTSYNC_IOC_WAIT_ALL,
-+ count, objs, owner, alert, index);
-+}
-+
-+TEST(semaphore_state)
-+{
-+ struct ntsync_sem_args sem_args;
-+ struct timespec timeout;
-+ __u32 count, index;
-+ int fd, ret, sem;
-+
-+ clock_gettime(CLOCK_MONOTONIC, &timeout);
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 3;
-+ sem_args.max = 2;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ sem_args.count = 2;
-+ sem_args.max = 2;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+ sem = sem_args.sem;
-+ check_sem_state(sem, 2, 2);
-+
-+ count = 0;
-+ ret = post_sem(sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, count);
-+ check_sem_state(sem, 2, 2);
-+
-+ count = 1;
-+ ret = post_sem(sem, &count);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOVERFLOW, errno);
-+ check_sem_state(sem, 2, 2);
-+
-+ ret = wait_any(fd, 1, &sem, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem, 1, 2);
-+
-+ ret = wait_any(fd, 1, &sem, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem, 0, 2);
-+
-+ ret = wait_any(fd, 1, &sem, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ count = 3;
-+ ret = post_sem(sem, &count);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOVERFLOW, errno);
-+ check_sem_state(sem, 0, 2);
-+
-+ count = 2;
-+ ret = post_sem(sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+ check_sem_state(sem, 2, 2);
-+
-+ ret = wait_any(fd, 1, &sem, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ ret = wait_any(fd, 1, &sem, 123, &index);
-+ EXPECT_EQ(0, ret);
-+
-+ count = 1;
-+ ret = post_sem(sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+ check_sem_state(sem, 1, 2);
-+
-+ count = ~0u;
-+ ret = post_sem(sem, &count);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOVERFLOW, errno);
-+ check_sem_state(sem, 1, 2);
-+
-+ close(sem);
-+
-+ close(fd);
-+}
-+
-+TEST(mutex_state)
-+{
-+ struct ntsync_mutex_args mutex_args;
-+ __u32 owner, count, index;
-+ struct timespec timeout;
-+ int fd, ret, mutex;
-+
-+ clock_gettime(CLOCK_MONOTONIC, &timeout);
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ mutex_args.owner = 123;
-+ mutex_args.count = 0;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ mutex_args.owner = 0;
-+ mutex_args.count = 2;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ mutex_args.owner = 123;
-+ mutex_args.count = 2;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+ mutex = mutex_args.mutex;
-+ check_mutex_state(mutex, 2, 123);
-+
-+ ret = unlock_mutex(mutex, 0, &count);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ ret = unlock_mutex(mutex, 456, &count);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EPERM, errno);
-+ check_mutex_state(mutex, 2, 123);
-+
-+ ret = unlock_mutex(mutex, 123, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, count);
-+ check_mutex_state(mutex, 1, 123);
-+
-+ ret = unlock_mutex(mutex, 123, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, count);
-+ check_mutex_state(mutex, 0, 0);
-+
-+ ret = unlock_mutex(mutex, 123, &count);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EPERM, errno);
-+
-+ ret = wait_any(fd, 1, &mutex, 456, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_mutex_state(mutex, 1, 456);
-+
-+ ret = wait_any(fd, 1, &mutex, 456, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_mutex_state(mutex, 2, 456);
-+
-+ ret = unlock_mutex(mutex, 456, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, count);
-+ check_mutex_state(mutex, 1, 456);
-+
-+ ret = wait_any(fd, 1, &mutex, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ owner = 0;
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_KILL, &owner);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ owner = 123;
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_KILL, &owner);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EPERM, errno);
-+ check_mutex_state(mutex, 1, 456);
-+
-+ owner = 456;
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_KILL, &owner);
-+ EXPECT_EQ(0, ret);
-+
-+ memset(&mutex_args, 0xcc, sizeof(mutex_args));
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_READ, &mutex_args);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ EXPECT_EQ(0, mutex_args.count);
-+ EXPECT_EQ(0, mutex_args.owner);
-+
-+ memset(&mutex_args, 0xcc, sizeof(mutex_args));
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_READ, &mutex_args);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ EXPECT_EQ(0, mutex_args.count);
-+ EXPECT_EQ(0, mutex_args.owner);
-+
-+ ret = wait_any(fd, 1, &mutex, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ EXPECT_EQ(0, index);
-+ check_mutex_state(mutex, 1, 123);
-+
-+ owner = 123;
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_KILL, &owner);
-+ EXPECT_EQ(0, ret);
-+
-+ memset(&mutex_args, 0xcc, sizeof(mutex_args));
-+ ret = ioctl(mutex, NTSYNC_IOC_MUTEX_READ, &mutex_args);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ EXPECT_EQ(0, mutex_args.count);
-+ EXPECT_EQ(0, mutex_args.owner);
-+
-+ ret = wait_any(fd, 1, &mutex, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ EXPECT_EQ(0, index);
-+ check_mutex_state(mutex, 1, 123);
-+
-+ close(mutex);
-+
-+ mutex_args.owner = 0;
-+ mutex_args.count = 0;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+ mutex = mutex_args.mutex;
-+ check_mutex_state(mutex, 0, 0);
-+
-+ ret = wait_any(fd, 1, &mutex, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_mutex_state(mutex, 1, 123);
-+
-+ close(mutex);
-+
-+ mutex_args.owner = 123;
-+ mutex_args.count = ~0u;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+ mutex = mutex_args.mutex;
-+ check_mutex_state(mutex, ~0u, 123);
-+
-+ ret = wait_any(fd, 1, &mutex, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ close(mutex);
-+
-+ close(fd);
-+}
-+
-+TEST(manual_event_state)
-+{
-+ struct ntsync_event_args event_args;
-+ __u32 index, signaled;
-+ int fd, event, ret;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ event_args.manual = 1;
-+ event_args.signaled = 0;
-+ event_args.event = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, event_args.event);
-+ event = event_args.event;
-+ check_event_state(event, 0, 1);
-+
-+ signaled = 0xdeadbeef;
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event, 1, 1);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+ check_event_state(event, 1, 1);
-+
-+ ret = wait_any(fd, 1, &event, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_event_state(event, 1, 1);
-+
-+ signaled = 0xdeadbeef;
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+ check_event_state(event, 0, 1);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event, 0, 1);
-+
-+ ret = wait_any(fd, 1, &event, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_PULSE, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+ check_event_state(event, 0, 1);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_PULSE, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event, 0, 1);
-+
-+ close(event);
-+
-+ close(fd);
-+}
-+
-+TEST(auto_event_state)
-+{
-+ struct ntsync_event_args event_args;
-+ __u32 index, signaled;
-+ int fd, event, ret;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ event_args.manual = 0;
-+ event_args.signaled = 1;
-+ event_args.event = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, event_args.event);
-+ event = event_args.event;
-+
-+ check_event_state(event, 1, 0);
-+
-+ signaled = 0xdeadbeef;
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+ check_event_state(event, 1, 0);
-+
-+ ret = wait_any(fd, 1, &event, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_event_state(event, 0, 0);
-+
-+ signaled = 0xdeadbeef;
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event, 0, 0);
-+
-+ ret = wait_any(fd, 1, &event, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_PULSE, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+ check_event_state(event, 0, 0);
-+
-+ ret = ioctl(event, NTSYNC_IOC_EVENT_PULSE, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event, 0, 0);
-+
-+ close(event);
-+
-+ close(fd);
-+}
-+
-+TEST(test_wait_any)
-+{
-+ int objs[NTSYNC_MAX_WAIT_COUNT + 1], fd, ret;
-+ struct ntsync_mutex_args mutex_args = {0};
-+ struct ntsync_sem_args sem_args = {0};
-+ __u32 owner, index, count, i;
-+ struct timespec timeout;
-+
-+ clock_gettime(CLOCK_MONOTONIC, &timeout);
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 2;
-+ sem_args.max = 3;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+
-+ mutex_args.owner = 0;
-+ mutex_args.count = 0;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+
-+ objs[0] = sem_args.sem;
-+ objs[1] = mutex_args.mutex;
-+
-+ ret = wait_any(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 1, 3);
-+ check_mutex_state(mutex_args.mutex, 0, 0);
-+
-+ ret = wait_any(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_mutex_state(mutex_args.mutex, 0, 0);
-+
-+ ret = wait_any(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, index);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_mutex_state(mutex_args.mutex, 1, 123);
-+
-+ count = 1;
-+ ret = post_sem(sem_args.sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+
-+ ret = wait_any(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_mutex_state(mutex_args.mutex, 1, 123);
-+
-+ ret = wait_any(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, index);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_mutex_state(mutex_args.mutex, 2, 123);
-+
-+ ret = wait_any(fd, 2, objs, 456, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ owner = 123;
-+ ret = ioctl(mutex_args.mutex, NTSYNC_IOC_MUTEX_KILL, &owner);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_any(fd, 2, objs, 456, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ EXPECT_EQ(1, index);
-+
-+ ret = wait_any(fd, 2, objs, 456, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, index);
-+
-+ /* test waiting on the same object twice */
-+ count = 2;
-+ ret = post_sem(sem_args.sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+
-+ objs[0] = objs[1] = sem_args.sem;
-+ ret = wait_any(fd, 2, objs, 456, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 1, 3);
-+
-+ ret = wait_any(fd, 0, NULL, 456, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ for (i = 0; i < NTSYNC_MAX_WAIT_COUNT + 1; ++i)
-+ objs[i] = sem_args.sem;
-+
-+ ret = wait_any(fd, NTSYNC_MAX_WAIT_COUNT, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ ret = wait_any(fd, NTSYNC_MAX_WAIT_COUNT + 1, objs, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ ret = wait_any(fd, -1, objs, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ close(sem_args.sem);
-+ close(mutex_args.mutex);
-+
-+ close(fd);
-+}
-+
-+TEST(test_wait_all)
-+{
-+ struct ntsync_event_args event_args = {0};
-+ struct ntsync_mutex_args mutex_args = {0};
-+ struct ntsync_sem_args sem_args = {0};
-+ __u32 owner, index, count;
-+ int objs[2], fd, ret;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 2;
-+ sem_args.max = 3;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+
-+ mutex_args.owner = 0;
-+ mutex_args.count = 0;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+
-+ event_args.manual = true;
-+ event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ objs[0] = sem_args.sem;
-+ objs[1] = mutex_args.mutex;
-+
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 1, 3);
-+ check_mutex_state(mutex_args.mutex, 1, 123);
-+
-+ ret = wait_all(fd, 2, objs, 456, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+ check_sem_state(sem_args.sem, 1, 3);
-+ check_mutex_state(mutex_args.mutex, 1, 123);
-+
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_mutex_state(mutex_args.mutex, 2, 123);
-+
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_mutex_state(mutex_args.mutex, 2, 123);
-+
-+ count = 3;
-+ ret = post_sem(sem_args.sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 2, 3);
-+ check_mutex_state(mutex_args.mutex, 3, 123);
-+
-+ owner = 123;
-+ ret = ioctl(mutex_args.mutex, NTSYNC_IOC_MUTEX_KILL, &owner);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EOWNERDEAD, errno);
-+ check_sem_state(sem_args.sem, 1, 3);
-+ check_mutex_state(mutex_args.mutex, 1, 123);
-+
-+ objs[0] = sem_args.sem;
-+ objs[1] = event_args.event;
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+ check_sem_state(sem_args.sem, 0, 3);
-+ check_event_state(event_args.event, 1, 1);
-+
-+ /* test waiting on the same object twice */
-+ objs[0] = objs[1] = sem_args.sem;
-+ ret = wait_all(fd, 2, objs, 123, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(EINVAL, errno);
-+
-+ close(sem_args.sem);
-+ close(mutex_args.mutex);
-+ close(event_args.event);
-+
-+ close(fd);
-+}
-+
-+struct wake_args {
-+ int fd;
-+ int obj;
-+};
-+
-+struct wait_args {
-+ int fd;
-+ unsigned long request;
-+ struct ntsync_wait_args *args;
-+ int ret;
-+ int err;
-+};
-+
-+static void *wait_thread(void *arg)
-+{
-+ struct wait_args *args = arg;
-+
-+ args->ret = ioctl(args->fd, args->request, args->args);
-+ args->err = errno;
-+ return NULL;
-+}
-+
-+static __u64 get_abs_timeout(unsigned int ms)
-+{
-+ struct timespec timeout;
-+ clock_gettime(CLOCK_MONOTONIC, &timeout);
-+ return (timeout.tv_sec * 1000000000) + timeout.tv_nsec + (ms * 1000000);
-+}
-+
-+static int wait_for_thread(pthread_t thread, unsigned int ms)
-+{
-+ struct timespec timeout;
-+
-+ clock_gettime(CLOCK_REALTIME, &timeout);
-+ timeout.tv_nsec += ms * 1000000;
-+ timeout.tv_sec += (timeout.tv_nsec / 1000000000);
-+ timeout.tv_nsec %= 1000000000;
-+ return pthread_timedjoin_np(thread, NULL, &timeout);
-+}
-+
-+TEST(wake_any)
-+{
-+ struct ntsync_event_args event_args = {0};
-+ struct ntsync_mutex_args mutex_args = {0};
-+ struct ntsync_wait_args wait_args = {0};
-+ struct ntsync_sem_args sem_args = {0};
-+ struct wait_args thread_args;
-+ __u32 count, index, signaled;
-+ int objs[2], fd, ret;
-+ pthread_t thread;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 0;
-+ sem_args.max = 3;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+
-+ mutex_args.owner = 123;
-+ mutex_args.count = 1;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+
-+ objs[0] = sem_args.sem;
-+ objs[1] = mutex_args.mutex;
-+
-+ /* test waking the semaphore */
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ wait_args.objs = (uintptr_t)objs;
-+ wait_args.count = 2;
-+ wait_args.owner = 456;
-+ wait_args.index = 0xdeadbeef;
-+ thread_args.fd = fd;
-+ thread_args.args = &wait_args;
-+ thread_args.request = NTSYNC_IOC_WAIT_ANY;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ count = 1;
-+ ret = post_sem(sem_args.sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+ check_sem_state(sem_args.sem, 0, 3);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(0, wait_args.index);
-+
-+ /* test waking the mutex */
-+
-+ /* first grab it again for owner 123 */
-+ ret = wait_any(fd, 1, &mutex_args.mutex, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ wait_args.owner = 456;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = unlock_mutex(mutex_args.mutex, 123, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, count);
-+
-+ ret = pthread_tryjoin_np(thread, NULL);
-+ EXPECT_EQ(EBUSY, ret);
-+
-+ ret = unlock_mutex(mutex_args.mutex, 123, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, mutex_args.count);
-+ check_mutex_state(mutex_args.mutex, 1, 456);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(1, wait_args.index);
-+
-+ /* test waking events */
-+
-+ event_args.manual = false;
-+ event_args.signaled = false;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ objs[1] = event_args.event;
-+ wait_args.timeout = get_abs_timeout(1000);
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event_args.event, 0, 0);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(1, wait_args.index);
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_PULSE, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event_args.event, 0, 0);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(1, wait_args.index);
-+
-+ close(event_args.event);
-+
-+ event_args.manual = true;
-+ event_args.signaled = false;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ objs[1] = event_args.event;
-+ wait_args.timeout = get_abs_timeout(1000);
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event_args.event, 1, 1);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(1, wait_args.index);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_PULSE, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+ check_event_state(event_args.event, 0, 1);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(1, wait_args.index);
-+
-+ close(event_args.event);
-+
-+ /* delete an object while it's being waited on */
-+
-+ wait_args.timeout = get_abs_timeout(200);
-+ wait_args.owner = 123;
-+ objs[1] = mutex_args.mutex;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ close(sem_args.sem);
-+ close(mutex_args.mutex);
-+
-+ ret = wait_for_thread(thread, 200);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(-1, thread_args.ret);
-+ EXPECT_EQ(ETIMEDOUT, thread_args.err);
-+
-+ close(fd);
-+}
-+
-+TEST(wake_all)
-+{
-+ struct ntsync_event_args manual_event_args = {0};
-+ struct ntsync_event_args auto_event_args = {0};
-+ struct ntsync_mutex_args mutex_args = {0};
-+ struct ntsync_wait_args wait_args = {0};
-+ struct ntsync_sem_args sem_args = {0};
-+ struct wait_args thread_args;
-+ __u32 count, index, signaled;
-+ int objs[4], fd, ret;
-+ pthread_t thread;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 0;
-+ sem_args.max = 3;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+
-+ mutex_args.owner = 123;
-+ mutex_args.count = 1;
-+ mutex_args.mutex = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, mutex_args.mutex);
-+
-+ manual_event_args.manual = true;
-+ manual_event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &manual_event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ auto_event_args.manual = false;
-+ auto_event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &auto_event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ objs[0] = sem_args.sem;
-+ objs[1] = mutex_args.mutex;
-+ objs[2] = manual_event_args.event;
-+ objs[3] = auto_event_args.event;
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ wait_args.objs = (uintptr_t)objs;
-+ wait_args.count = 4;
-+ wait_args.owner = 456;
-+ thread_args.fd = fd;
-+ thread_args.args = &wait_args;
-+ thread_args.request = NTSYNC_IOC_WAIT_ALL;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ count = 1;
-+ ret = post_sem(sem_args.sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+
-+ ret = pthread_tryjoin_np(thread, NULL);
-+ EXPECT_EQ(EBUSY, ret);
-+
-+ check_sem_state(sem_args.sem, 1, 3);
-+
-+ ret = wait_any(fd, 1, &sem_args.sem, 123, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ ret = unlock_mutex(mutex_args.mutex, 123, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, count);
-+
-+ ret = pthread_tryjoin_np(thread, NULL);
-+ EXPECT_EQ(EBUSY, ret);
-+
-+ check_mutex_state(mutex_args.mutex, 0, 0);
-+
-+ ret = ioctl(manual_event_args.event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+
-+ count = 2;
-+ ret = post_sem(sem_args.sem, &count);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, count);
-+ check_sem_state(sem_args.sem, 2, 3);
-+
-+ ret = ioctl(auto_event_args.event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, signaled);
-+
-+ ret = ioctl(manual_event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+
-+ ret = ioctl(auto_event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, signaled);
-+
-+ check_sem_state(sem_args.sem, 1, 3);
-+ check_mutex_state(mutex_args.mutex, 1, 456);
-+ check_event_state(manual_event_args.event, 1, 1);
-+ check_event_state(auto_event_args.event, 0, 0);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+
-+ /* delete an object while it's being waited on */
-+
-+ wait_args.timeout = get_abs_timeout(200);
-+ wait_args.owner = 123;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ close(sem_args.sem);
-+ close(mutex_args.mutex);
-+ close(manual_event_args.event);
-+ close(auto_event_args.event);
-+
-+ ret = wait_for_thread(thread, 200);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(-1, thread_args.ret);
-+ EXPECT_EQ(ETIMEDOUT, thread_args.err);
-+
-+ close(fd);
-+}
-+
-+TEST(alert_any)
-+{
-+ struct ntsync_event_args event_args = {0};
-+ struct ntsync_wait_args wait_args = {0};
-+ struct ntsync_sem_args sem_args = {0};
-+ __u32 index, count, signaled;
-+ struct wait_args thread_args;
-+ int objs[2], fd, ret;
-+ pthread_t thread;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 0;
-+ sem_args.max = 2;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+ objs[0] = sem_args.sem;
-+
-+ sem_args.count = 1;
-+ sem_args.max = 2;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+ objs[1] = sem_args.sem;
-+
-+ event_args.manual = true;
-+ event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_any_alert(fd, 0, NULL, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_any_alert(fd, 0, NULL, 123, event_args.event, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_any_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(1, index);
-+
-+ ret = wait_any_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, index);
-+
-+ /* test wakeup via alert */
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ wait_args.objs = (uintptr_t)objs;
-+ wait_args.count = 2;
-+ wait_args.owner = 123;
-+ wait_args.index = 0xdeadbeef;
-+ wait_args.alert = event_args.event;
-+ thread_args.fd = fd;
-+ thread_args.args = &wait_args;
-+ thread_args.request = NTSYNC_IOC_WAIT_ANY;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(2, wait_args.index);
-+
-+ close(event_args.event);
-+
-+ /* test with an auto-reset event */
-+
-+ event_args.manual = false;
-+ event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ count = 1;
-+ ret = post_sem(objs[0], &count);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_any_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ ret = wait_any_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, index);
-+
-+ ret = wait_any_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ close(event_args.event);
-+
-+ close(objs[0]);
-+ close(objs[1]);
-+
-+ close(fd);
-+}
-+
-+TEST(alert_all)
-+{
-+ struct ntsync_event_args event_args = {0};
-+ struct ntsync_wait_args wait_args = {0};
-+ struct ntsync_sem_args sem_args = {0};
-+ struct wait_args thread_args;
-+ __u32 index, count, signaled;
-+ int objs[2], fd, ret;
-+ pthread_t thread;
-+
-+ fd = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, fd);
-+
-+ sem_args.count = 2;
-+ sem_args.max = 2;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+ objs[0] = sem_args.sem;
-+
-+ sem_args.count = 1;
-+ sem_args.max = 2;
-+ sem_args.sem = 0xdeadbeef;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_SEM, &sem_args);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_NE(0xdeadbeef, sem_args.sem);
-+ objs[1] = sem_args.sem;
-+
-+ event_args.manual = true;
-+ event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_all_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ ret = wait_all_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, index);
-+
-+ /* test wakeup via alert */
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_RESET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ wait_args.timeout = get_abs_timeout(1000);
-+ wait_args.objs = (uintptr_t)objs;
-+ wait_args.count = 2;
-+ wait_args.owner = 123;
-+ wait_args.index = 0xdeadbeef;
-+ wait_args.alert = event_args.event;
-+ thread_args.fd = fd;
-+ thread_args.args = &wait_args;
-+ thread_args.request = NTSYNC_IOC_WAIT_ALL;
-+ ret = pthread_create(&thread, NULL, wait_thread, &thread_args);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(ETIMEDOUT, ret);
-+
-+ ret = ioctl(event_args.event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_for_thread(thread, 100);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, thread_args.ret);
-+ EXPECT_EQ(2, wait_args.index);
-+
-+ close(event_args.event);
-+
-+ /* test with an auto-reset event */
-+
-+ event_args.manual = false;
-+ event_args.signaled = true;
-+ ret = ioctl(fd, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+
-+ count = 2;
-+ ret = post_sem(objs[1], &count);
-+ EXPECT_EQ(0, ret);
-+
-+ ret = wait_all_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(0, index);
-+
-+ ret = wait_all_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(0, ret);
-+ EXPECT_EQ(2, index);
-+
-+ ret = wait_all_alert(fd, 2, objs, 123, event_args.event, &index);
-+ EXPECT_EQ(-1, ret);
-+ EXPECT_EQ(ETIMEDOUT, errno);
-+
-+ close(event_args.event);
-+
-+ close(objs[0]);
-+ close(objs[1]);
-+
-+ close(fd);
-+}
-+
-+#define STRESS_LOOPS 10000
-+#define STRESS_THREADS 4
-+
-+static unsigned int stress_counter;
-+static int stress_device, stress_start_event, stress_mutex;
-+
-+static void *stress_thread(void *arg)
-+{
-+ struct ntsync_wait_args wait_args = {0};
-+ __u32 index, count, i;
-+ int ret;
-+
-+ wait_args.timeout = UINT64_MAX;
-+ wait_args.count = 1;
-+ wait_args.objs = (uintptr_t)&stress_start_event;
-+ wait_args.owner = gettid();
-+ wait_args.index = 0xdeadbeef;
-+
-+ ioctl(stress_device, NTSYNC_IOC_WAIT_ANY, &wait_args);
-+
-+ wait_args.objs = (uintptr_t)&stress_mutex;
-+
-+ for (i = 0; i < STRESS_LOOPS; ++i) {
-+ ioctl(stress_device, NTSYNC_IOC_WAIT_ANY, &wait_args);
-+
-+ ++stress_counter;
-+
-+ unlock_mutex(stress_mutex, wait_args.owner, &count);
-+ }
-+
-+ return NULL;
-+}
-+
-+TEST(stress_wait)
-+{
-+ struct ntsync_event_args event_args;
-+ struct ntsync_mutex_args mutex_args;
-+ pthread_t threads[STRESS_THREADS];
-+ __u32 signaled, i;
-+ int ret;
-+
-+ stress_device = open("/dev/ntsync", O_CLOEXEC | O_RDONLY);
-+ ASSERT_LE(0, stress_device);
-+
-+ mutex_args.owner = 0;
-+ mutex_args.count = 0;
-+ ret = ioctl(stress_device, NTSYNC_IOC_CREATE_MUTEX, &mutex_args);
-+ EXPECT_EQ(0, ret);
-+ stress_mutex = mutex_args.mutex;
-+
-+ event_args.manual = 1;
-+ event_args.signaled = 0;
-+ ret = ioctl(stress_device, NTSYNC_IOC_CREATE_EVENT, &event_args);
-+ EXPECT_EQ(0, ret);
-+ stress_start_event = event_args.event;
-+
-+ for (i = 0; i < STRESS_THREADS; ++i)
-+ pthread_create(&threads[i], NULL, stress_thread, NULL);
-+
-+ ret = ioctl(stress_start_event, NTSYNC_IOC_EVENT_SET, &signaled);
-+ EXPECT_EQ(0, ret);
-+
-+ for (i = 0; i < STRESS_THREADS; ++i) {
-+ ret = pthread_join(threads[i], NULL);
-+ EXPECT_EQ(0, ret);
-+ }
-+
-+ EXPECT_EQ(STRESS_LOOPS * STRESS_THREADS, stress_counter);
-+
-+ close(stress_start_event);
-+ close(stress_mutex);
-+ close(stress_device);
-+}
-+
-+TEST_HARNESS_MAIN
---
-2.46.0.rc1
-
diff --git a/SOURCES/0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch b/SOURCES/0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch
index b91bf1a..a6c9f38 100644
--- a/SOURCES/0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch
+++ b/SOURCES/0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch
@@ -28,31 +28,29 @@ diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_para
index de43048543e8..2c6fe740609e 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
-@@ -134,6 +134,10 @@ i915_param_named_unsafe(lmem_size, uint, 0400,
+@@ -130,6 +130,10 @@
+ "Set the lmem size(in MiB) for each region. (default: 0, all memory)");
i915_param_named_unsafe(lmem_bar_size, uint, 0400,
"Set the lmem bar size(in MiB).");
-
++
+i915_param_named_unsafe(disable_async_page_flip, bool, 0400,
+ "Disable async page flipping"
+ "(0=disabled [default], 1=enabled)");
-+
- static void _param_print_bool(struct drm_printer *p, const char *name,
- bool val)
- {
+
+ #if IS_ENABLED(CONFIG_DRM_I915_REPLAY_GPU_HANGS_API)
+ i915_param_named(enable_debug_only_api, bool, 0400,
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
index 1315d7fac850..53d47b1ef79e 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
-@@ -64,7 +64,8 @@ struct drm_printer;
- /* leave bools at the end to not create holes */ \
+@@ -64,6 +64,7 @@
param(bool, enable_hangcheck, true, 0600) \
param(bool, error_capture, true, IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR) ? 0600 : 0) \
-- param(bool, enable_gvt, false, IS_ENABLED(CONFIG_DRM_I915_GVT) ? 0400 : 0)
-+ param(bool, enable_gvt, false, IS_ENABLED(CONFIG_DRM_I915_GVT) ? 0400 : 0) \
-+ param(bool, disable_async_page_flip, false, 0400)
+ param(bool, enable_gvt, false, IS_ENABLED(CONFIG_DRM_I915_GVT) ? 0400 : 0) \
++ param(bool, disable_async_page_flip, false, 0400) \
+ param(bool, enable_debug_only_api, false, IS_ENABLED(CONFIG_DRM_I915_REPLAY_GPU_HANGS_API) ? 0400 : 0)
#define MEMBER(T, member, ...) T member;
- struct i915_params {
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index e8491979a6f2..4682970746c3 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
diff --git a/SOURCES/Module.kabi_dup_riscv64 b/SOURCES/Module.kabi_dup_riscv64
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/SOURCES/Module.kabi_dup_riscv64
diff --git a/SOURCES/Module.kabi_riscv64 b/SOURCES/Module.kabi_riscv64
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/SOURCES/Module.kabi_riscv64
diff --git a/SOURCES/OpenRGB.patch b/SOURCES/OpenRGB.patch
deleted file mode 100644
index 720345f..0000000
--- a/SOURCES/OpenRGB.patch
+++ /dev/null
@@ -1,703 +0,0 @@
-diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
-index 2ddca08f8a76..72647850f08e 100644
---- a/drivers/i2c/busses/Kconfig
-+++ b/drivers/i2c/busses/Kconfig
-@@ -238,6 +238,15 @@
- combined with a FUSB302 Type-C port-controller as such it is advised
- to also select CONFIG_TYPEC_FUSB302=m.
-
-+config I2C_NCT6775
-+ tristate "Nuvoton NCT6775 and compatible SMBus controller"
-+ help
-+ If you say yes to this option, support will be included for the
-+ Nuvoton NCT6775 and compatible SMBus controllers.
-+
-+ This driver can also be built as a module. If so, the module
-+ will be called i2c-nct6775.
-+
- config I2C_NFORCE2
- tristate "Nvidia nForce2, nForce3 and nForce4"
- depends on PCI && HAS_IOPORT
-diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
-index 25d60889713c..3c2a9b237ac6 100644
---- a/drivers/i2c/busses/Makefile
-+++ b/drivers/i2c/busses/Makefile
-@@ -17,6 +17,7 @@ obj-$(CONFIG_I2C_CHT_WC) += i2c-cht-wc.o
- obj-$(CONFIG_I2C_I801) += i2c-i801.o
- obj-$(CONFIG_I2C_ISCH) += i2c-isch.o
- obj-$(CONFIG_I2C_ISMT) += i2c-ismt.o
-+obj-$(CONFIG_I2C_NCT6775) += i2c-nct6775.o
- obj-$(CONFIG_I2C_NFORCE2) += i2c-nforce2.o
- obj-$(CONFIG_I2C_NFORCE2_S4985) += i2c-nforce2-s4985.o
- obj-$(CONFIG_I2C_NVIDIA_GPU) += i2c-nvidia-gpu.o
-diff --git a/drivers/i2c/busses/i2c-nct6775.c b/drivers/i2c/busses/i2c-nct6775.c
-new file mode 100644
-index 000000000000..0462f0952043
---- /dev/null
-+++ b/drivers/i2c/busses/i2c-nct6775.c
-@@ -0,0 +1,647 @@
-+/*
-+ * i2c-nct6775 - Driver for the SMBus master functionality of
-+ * Nuvoton NCT677x Super-I/O chips
-+ *
-+ * Copyright (C) 2019 Adam Honse <calcprogrammer1@gmail.com>
-+ *
-+ * Derived from nct6775 hwmon driver
-+ * Copyright (C) 2012 Guenter Roeck <linux@roeck-us.net>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/jiffies.h>
-+#include <linux/platform_device.h>
-+#include <linux/hwmon.h>
-+#include <linux/hwmon-sysfs.h>
-+#include <linux/hwmon-vid.h>
-+#include <linux/err.h>
-+#include <linux/mutex.h>
-+#include <linux/delay.h>
-+#include <linux/ioport.h>
-+#include <linux/i2c.h>
-+#include <linux/acpi.h>
-+#include <linux/bitops.h>
-+#include <linux/dmi.h>
-+#include <linux/io.h>
-+#include <linux/nospec.h>
-+
-+#define DRVNAME "i2c-nct6775"
-+
-+/* Nuvoton SMBus address offsets */
-+#define SMBHSTDAT (0 + nuvoton_nct6793d_smba)
-+#define SMBBLKSZ (1 + nuvoton_nct6793d_smba)
-+#define SMBHSTCMD (2 + nuvoton_nct6793d_smba)
-+#define SMBHSTIDX (3 + nuvoton_nct6793d_smba) //Index field is the Command field on other controllers
-+#define SMBHSTCTL (4 + nuvoton_nct6793d_smba)
-+#define SMBHSTADD (5 + nuvoton_nct6793d_smba)
-+#define SMBHSTERR (9 + nuvoton_nct6793d_smba)
-+#define SMBHSTSTS (0xE + nuvoton_nct6793d_smba)
-+
-+/* Command register */
-+#define NCT6793D_READ_BYTE 0
-+#define NCT6793D_READ_WORD 1
-+#define NCT6793D_READ_BLOCK 2
-+#define NCT6793D_BLOCK_WRITE_READ_PROC_CALL 3
-+#define NCT6793D_PROC_CALL 4
-+#define NCT6793D_WRITE_BYTE 8
-+#define NCT6793D_WRITE_WORD 9
-+#define NCT6793D_WRITE_BLOCK 10
-+
-+/* Control register */
-+#define NCT6793D_MANUAL_START 128
-+#define NCT6793D_SOFT_RESET 64
-+
-+/* Error register */
-+#define NCT6793D_NO_ACK 32
-+
-+/* Status register */
-+#define NCT6793D_FIFO_EMPTY 1
-+#define NCT6793D_FIFO_FULL 2
-+#define NCT6793D_MANUAL_ACTIVE 4
-+
-+#define NCT6775_LD_SMBUS 0x0B
-+
-+/* Other settings */
-+#define MAX_RETRIES 400
-+
-+enum kinds { nct6106, nct6775, nct6776, nct6779, nct6791, nct6792, nct6793,
-+ nct6795, nct6796, nct6798 };
-+
-+struct nct6775_sio_data {
-+ int sioreg;
-+ enum kinds kind;
-+};
-+
-+/* used to set data->name = nct6775_device_names[data->sio_kind] */
-+static const char * const nct6775_device_names[] = {
-+ "nct6106",
-+ "nct6775",
-+ "nct6776",
-+ "nct6779",
-+ "nct6791",
-+ "nct6792",
-+ "nct6793",
-+ "nct6795",
-+ "nct6796",
-+ "nct6798",
-+};
-+
-+static const char * const nct6775_sio_names[] __initconst = {
-+ "NCT6106D",
-+ "NCT6775F",
-+ "NCT6776D/F",
-+ "NCT6779D",
-+ "NCT6791D",
-+ "NCT6792D",
-+ "NCT6793D",
-+ "NCT6795D",
-+ "NCT6796D",
-+ "NCT6798D",
-+};
-+
-+#define SIO_REG_LDSEL 0x07 /* Logical device select */
-+#define SIO_REG_DEVID 0x20 /* Device ID (2 bytes) */
-+#define SIO_REG_SMBA 0x62 /* SMBus base address register */
-+
-+#define SIO_NCT6106_ID 0xc450
-+#define SIO_NCT6775_ID 0xb470
-+#define SIO_NCT6776_ID 0xc330
-+#define SIO_NCT6779_ID 0xc560
-+#define SIO_NCT6791_ID 0xc800
-+#define SIO_NCT6792_ID 0xc910
-+#define SIO_NCT6793_ID 0xd120
-+#define SIO_NCT6795_ID 0xd350
-+#define SIO_NCT6796_ID 0xd420
-+#define SIO_NCT6798_ID 0xd428
-+#define SIO_ID_MASK 0xFFF0
-+
-+static inline void
-+superio_outb(int ioreg, int reg, int val)
-+{
-+ outb(reg, ioreg);
-+ outb(val, ioreg + 1);
-+}
-+
-+static inline int
-+superio_inb(int ioreg, int reg)
-+{
-+ outb(reg, ioreg);
-+ return inb(ioreg + 1);
-+}
-+
-+static inline void
-+superio_select(int ioreg, int ld)
-+{
-+ outb(SIO_REG_LDSEL, ioreg);
-+ outb(ld, ioreg + 1);
-+}
-+
-+static inline int
-+superio_enter(int ioreg)
-+{
-+ /*
-+ * Try to reserve <ioreg> and <ioreg + 1> for exclusive access.
-+ */
-+ if (!request_muxed_region(ioreg, 2, DRVNAME))
-+ return -EBUSY;
-+
-+ outb(0x87, ioreg);
-+ outb(0x87, ioreg);
-+
-+ return 0;
-+}
-+
-+static inline void
-+superio_exit(int ioreg)
-+{
-+ outb(0xaa, ioreg);
-+ outb(0x02, ioreg);
-+ outb(0x02, ioreg + 1);
-+ release_region(ioreg, 2);
-+}
-+
-+/*
-+ * ISA constants
-+ */
-+
-+#define IOREGION_ALIGNMENT (~7)
-+#define IOREGION_LENGTH 2
-+#define ADDR_REG_OFFSET 0
-+#define DATA_REG_OFFSET 1
-+
-+#define NCT6775_REG_BANK 0x4E
-+#define NCT6775_REG_CONFIG 0x40
-+
-+static struct i2c_adapter *nct6775_adapter;
-+
-+struct i2c_nct6775_adapdata {
-+ unsigned short smba;
-+};
-+
-+/* Return negative errno on error. */
-+static s32 nct6775_access(struct i2c_adapter * adap, u16 addr,
-+ unsigned short flags, char read_write,
-+ u8 command, int size, union i2c_smbus_data * data)
-+{
-+ struct i2c_nct6775_adapdata *adapdata = i2c_get_adapdata(adap);
-+ unsigned short nuvoton_nct6793d_smba = adapdata->smba;
-+ int i, len, cnt;
-+ union i2c_smbus_data tmp_data;
-+ int timeout = 0;
-+
-+ tmp_data.word = 0;
-+ cnt = 0;
-+ len = 0;
-+
-+ outb_p(NCT6793D_SOFT_RESET, SMBHSTCTL);
-+
-+ switch (size) {
-+ case I2C_SMBUS_QUICK:
-+ outb_p((addr << 1) | read_write,
-+ SMBHSTADD);
-+ break;
-+ case I2C_SMBUS_BYTE_DATA:
-+ tmp_data.byte = data->byte;
-+ case I2C_SMBUS_BYTE:
-+ outb_p((addr << 1) | read_write,
-+ SMBHSTADD);
-+ outb_p(command, SMBHSTIDX);
-+ if (read_write == I2C_SMBUS_WRITE) {
-+ outb_p(tmp_data.byte, SMBHSTDAT);
-+ outb_p(NCT6793D_WRITE_BYTE, SMBHSTCMD);
-+ }
-+ else {
-+ outb_p(NCT6793D_READ_BYTE, SMBHSTCMD);
-+ }
-+ break;
-+ case I2C_SMBUS_WORD_DATA:
-+ outb_p((addr << 1) | read_write,
-+ SMBHSTADD);
-+ outb_p(command, SMBHSTIDX);
-+ if (read_write == I2C_SMBUS_WRITE) {
-+ outb_p(data->word & 0xff, SMBHSTDAT);
-+ outb_p((data->word & 0xff00) >> 8, SMBHSTDAT);
-+ outb_p(NCT6793D_WRITE_WORD, SMBHSTCMD);
-+ }
-+ else {
-+ outb_p(NCT6793D_READ_WORD, SMBHSTCMD);
-+ }
-+ break;
-+ case I2C_SMBUS_BLOCK_DATA:
-+ outb_p((addr << 1) | read_write,
-+ SMBHSTADD);
-+ outb_p(command, SMBHSTIDX);
-+ if (read_write == I2C_SMBUS_WRITE) {
-+ len = data->block[0];
-+ if (len == 0 || len > I2C_SMBUS_BLOCK_MAX)
-+ return -EINVAL;
-+ outb_p(len, SMBBLKSZ);
-+
-+ cnt = 1;
-+ if (len >= 4) {
-+ for (i = cnt; i <= 4; i++) {
-+ outb_p(data->block[i], SMBHSTDAT);
-+ }
-+
-+ len -= 4;
-+ cnt += 4;
-+ }
-+ else {
-+ for (i = cnt; i <= len; i++ ) {
-+ outb_p(data->block[i], SMBHSTDAT);
-+ }
-+
-+ len = 0;
-+ }
-+
-+ outb_p(NCT6793D_WRITE_BLOCK, SMBHSTCMD);
-+ }
-+ else {
-+ return -ENOTSUPP;
-+ }
-+ break;
-+ default:
-+ dev_warn(&adap->dev, "Unsupported transaction %d\n", size);
-+ return -EOPNOTSUPP;
-+ }
-+
-+ outb_p(NCT6793D_MANUAL_START, SMBHSTCTL);
-+
-+ while ((size == I2C_SMBUS_BLOCK_DATA) && (len > 0)) {
-+ if (read_write == I2C_SMBUS_WRITE) {
-+ timeout = 0;
-+ while ((inb_p(SMBHSTSTS) & NCT6793D_FIFO_EMPTY) == 0)
-+ {
-+ if(timeout > MAX_RETRIES)
-+ {
-+ return -ETIMEDOUT;
-+ }
-+ usleep_range(250, 500);
-+ timeout++;
-+ }
-+
-+ //Load more bytes into FIFO
-+ if (len >= 4) {
-+ for (i = cnt; i <= (cnt + 4); i++) {
-+ outb_p(data->block[i], SMBHSTDAT);
-+ }
-+
-+ len -= 4;
-+ cnt += 4;
-+ }
-+ else {
-+ for (i = cnt; i <= (cnt + len); i++) {
-+ outb_p(data->block[i], SMBHSTDAT);
-+ }
-+
-+ len = 0;
-+ }
-+ }
-+ else {
-+ return -ENOTSUPP;
-+ }
-+
-+ }
-+
-+ //wait for manual mode to complete
-+ timeout = 0;
-+ while ((inb_p(SMBHSTSTS) & NCT6793D_MANUAL_ACTIVE) != 0)
-+ {
-+ if(timeout > MAX_RETRIES)
-+ {
-+ return -ETIMEDOUT;
-+ }
-+ usleep_range(250, 500);
-+ timeout++;
-+ }
-+
-+ if ((inb_p(SMBHSTERR) & NCT6793D_NO_ACK) != 0) {
-+ return -ENXIO;
-+ }
-+ else if ((read_write == I2C_SMBUS_WRITE) || (size == I2C_SMBUS_QUICK)) {
-+ return 0;
-+ }
-+
-+ switch (size) {
-+ case I2C_SMBUS_QUICK:
-+ case I2C_SMBUS_BYTE_DATA:
-+ data->byte = inb_p(SMBHSTDAT);
-+ break;
-+ case I2C_SMBUS_WORD_DATA:
-+ data->word = inb_p(SMBHSTDAT) + (inb_p(SMBHSTDAT) << 8);
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static u32 nct6775_func(struct i2c_adapter *adapter)
-+{
-+ return I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE |
-+ I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA |
-+ I2C_FUNC_SMBUS_BLOCK_DATA;
-+}
-+
-+static const struct i2c_algorithm smbus_algorithm = {
-+ .smbus_xfer = nct6775_access,
-+ .functionality = nct6775_func,
-+};
-+
-+static int nct6775_add_adapter(unsigned short smba, const char *name, struct i2c_adapter **padap)
-+{
-+ struct i2c_adapter *adap;
-+ struct i2c_nct6775_adapdata *adapdata;
-+ int retval;
-+
-+ adap = kzalloc(sizeof(*adap), GFP_KERNEL);
-+ if (adap == NULL) {
-+ return -ENOMEM;
-+ }
-+
-+ adap->owner = THIS_MODULE;
-+ adap->class = I2C_CLASS_HWMON;
-+ adap->algo = &smbus_algorithm;
-+
-+ adapdata = kzalloc(sizeof(*adapdata), GFP_KERNEL);
-+ if (adapdata == NULL) {
-+ kfree(adap);
-+ return -ENOMEM;
-+ }
-+
-+ adapdata->smba = smba;
-+
-+ snprintf(adap->name, sizeof(adap->name),
-+ "SMBus NCT67xx adapter%s at %04x", name, smba);
-+
-+ i2c_set_adapdata(adap, adapdata);
-+
-+ retval = i2c_add_adapter(adap);
-+ if (retval) {
-+ kfree(adapdata);
-+ kfree(adap);
-+ return retval;
-+ }
-+
-+ *padap = adap;
-+ return 0;
-+}
-+
-+static void nct6775_remove_adapter(struct i2c_adapter *adap)
-+{
-+ struct i2c_nct6775_adapdata *adapdata = i2c_get_adapdata(adap);
-+
-+ if (adapdata->smba) {
-+ i2c_del_adapter(adap);
-+ kfree(adapdata);
-+ kfree(adap);
-+ }
-+}
-+
-+//static SIMPLE_DEV_PM_OPS(nct6775_dev_pm_ops, nct6775_suspend, nct6775_resume);
-+
-+/*
-+ * when Super-I/O functions move to a separate file, the Super-I/O
-+ * bus will manage the lifetime of the device and this module will only keep
-+ * track of the nct6775 driver. But since we use platform_device_alloc(), we
-+ * must keep track of the device
-+ */
-+static struct platform_device *pdev[2];
-+
-+static int nct6775_probe(struct platform_device *pdev)
-+{
-+ struct device *dev = &pdev->dev;
-+ struct nct6775_sio_data *sio_data = dev_get_platdata(dev);
-+ struct resource *res;
-+
-+ res = platform_get_resource(pdev, IORESOURCE_IO, 0);
-+ if (!devm_request_region(&pdev->dev, res->start, IOREGION_LENGTH,
-+ DRVNAME))
-+ return -EBUSY;
-+
-+ switch (sio_data->kind) {
-+ case nct6791:
-+ case nct6792:
-+ case nct6793:
-+ case nct6795:
-+ case nct6796:
-+ case nct6798:
-+ nct6775_add_adapter(res->start, "", &nct6775_adapter);
-+ break;
-+ default:
-+ return -ENODEV;
-+ }
-+
-+ return 0;
-+}
-+/*
-+static void nct6791_enable_io_mapping(int sioaddr)
-+{
-+ int val;
-+
-+ val = superio_inb(sioaddr, NCT6791_REG_HM_IO_SPACE_LOCK_ENABLE);
-+ if (val & 0x10) {
-+ pr_info("Enabling hardware monitor logical device mappings.\n");
-+ superio_outb(sioaddr, NCT6791_REG_HM_IO_SPACE_LOCK_ENABLE,
-+ val & ~0x10);
-+ }
-+}*/
-+
-+static struct platform_driver i2c_nct6775_driver = {
-+ .driver = {
-+ .name = DRVNAME,
-+// .pm = &nct6775_dev_pm_ops,
-+ },
-+ .probe = nct6775_probe,
-+};
-+
-+static void __exit i2c_nct6775_exit(void)
-+{
-+ int i;
-+
-+ if(nct6775_adapter)
-+ nct6775_remove_adapter(nct6775_adapter);
-+
-+ for (i = 0; i < ARRAY_SIZE(pdev); i++) {
-+ if (pdev[i])
-+ platform_device_unregister(pdev[i]);
-+ }
-+ platform_driver_unregister(&i2c_nct6775_driver);
-+}
-+
-+/* nct6775_find() looks for a '627 in the Super-I/O config space */
-+static int __init nct6775_find(int sioaddr, struct nct6775_sio_data *sio_data)
-+{
-+ u16 val;
-+ int err;
-+ int addr;
-+
-+ err = superio_enter(sioaddr);
-+ if (err)
-+ return err;
-+
-+ val = (superio_inb(sioaddr, SIO_REG_DEVID) << 8) |
-+ superio_inb(sioaddr, SIO_REG_DEVID + 1);
-+
-+ switch (val & SIO_ID_MASK) {
-+ case SIO_NCT6106_ID:
-+ sio_data->kind = nct6106;
-+ break;
-+ case SIO_NCT6775_ID:
-+ sio_data->kind = nct6775;
-+ break;
-+ case SIO_NCT6776_ID:
-+ sio_data->kind = nct6776;
-+ break;
-+ case SIO_NCT6779_ID:
-+ sio_data->kind = nct6779;
-+ break;
-+ case SIO_NCT6791_ID:
-+ sio_data->kind = nct6791;
-+ break;
-+ case SIO_NCT6792_ID:
-+ sio_data->kind = nct6792;
-+ break;
-+ case SIO_NCT6793_ID:
-+ sio_data->kind = nct6793;
-+ break;
-+ case SIO_NCT6795_ID:
-+ sio_data->kind = nct6795;
-+ break;
-+ case SIO_NCT6796_ID:
-+ sio_data->kind = nct6796;
-+ break;
-+ case SIO_NCT6798_ID:
-+ sio_data->kind = nct6798;
-+ break;
-+ default:
-+ if (val != 0xffff)
-+ pr_debug("unsupported chip ID: 0x%04x\n", val);
-+ superio_exit(sioaddr);
-+ return -ENODEV;
-+ }
-+
-+ /* We have a known chip, find the SMBus I/O address */
-+ superio_select(sioaddr, NCT6775_LD_SMBUS);
-+ val = (superio_inb(sioaddr, SIO_REG_SMBA) << 8)
-+ | superio_inb(sioaddr, SIO_REG_SMBA + 1);
-+ addr = val & IOREGION_ALIGNMENT;
-+ if (addr == 0) {
-+ pr_err("Refusing to enable a Super-I/O device with a base I/O port 0\n");
-+ superio_exit(sioaddr);
-+ return -ENODEV;
-+ }
-+
-+ //if (sio_data->kind == nct6791 || sio_data->kind == nct6792 ||
-+ // sio_data->kind == nct6793 || sio_data->kind == nct6795 ||
-+ // sio_data->kind == nct6796)
-+ // nct6791_enable_io_mapping(sioaddr);
-+
-+ superio_exit(sioaddr);
-+ pr_info("Found %s or compatible chip at %#x:%#x\n",
-+ nct6775_sio_names[sio_data->kind], sioaddr, addr);
-+ sio_data->sioreg = sioaddr;
-+
-+ return addr;
-+}
-+
-+static int __init i2c_nct6775_init(void)
-+{
-+ int i, err;
-+ bool found = false;
-+ int address;
-+ struct resource res;
-+ struct nct6775_sio_data sio_data;
-+ int sioaddr[2] = { 0x2e, 0x4e };
-+
-+ err = platform_driver_register(&i2c_nct6775_driver);
-+ if (err)
-+ return err;
-+
-+ /*
-+ * initialize sio_data->kind and sio_data->sioreg.
-+ *
-+ * when Super-I/O functions move to a separate file, the Super-I/O
-+ * driver will probe 0x2e and 0x4e and auto-detect the presence of a
-+ * nct6775 hardware monitor, and call probe()
-+ */
-+ for (i = 0; i < ARRAY_SIZE(pdev); i++) {
-+ address = nct6775_find(sioaddr[i], &sio_data);
-+ if (address <= 0)
-+ continue;
-+
-+ found = true;
-+
-+ pdev[i] = platform_device_alloc(DRVNAME, address);
-+ if (!pdev[i]) {
-+ err = -ENOMEM;
-+ goto exit_device_unregister;
-+ }
-+
-+ err = platform_device_add_data(pdev[i], &sio_data,
-+ sizeof(struct nct6775_sio_data));
-+ if (err)
-+ goto exit_device_put;
-+
-+ memset(&res, 0, sizeof(res));
-+ res.name = DRVNAME;
-+ res.start = address;
-+ res.end = address + IOREGION_LENGTH - 1;
-+ res.flags = IORESOURCE_IO;
-+
-+ err = acpi_check_resource_conflict(&res);
-+ if (err) {
-+ platform_device_put(pdev[i]);
-+ pdev[i] = NULL;
-+ continue;
-+ }
-+
-+ err = platform_device_add_resources(pdev[i], &res, 1);
-+ if (err)
-+ goto exit_device_put;
-+
-+ /* platform_device_add calls probe() */
-+ err = platform_device_add(pdev[i]);
-+ if (err)
-+ goto exit_device_put;
-+ }
-+ if (!found) {
-+ err = -ENODEV;
-+ goto exit_unregister;
-+ }
-+
-+ return 0;
-+
-+exit_device_put:
-+ platform_device_put(pdev[i]);
-+exit_device_unregister:
-+ while (--i >= 0) {
-+ if (pdev[i])
-+ platform_device_unregister(pdev[i]);
-+ }
-+exit_unregister:
-+ platform_driver_unregister(&i2c_nct6775_driver);
-+ return err;
-+}
-+
-+MODULE_AUTHOR("Adam Honse <calcprogrammer1@gmail.com>");
-+MODULE_DESCRIPTION("SMBus driver for NCT6775F and compatible chips");
-+MODULE_LICENSE("GPL");
-+
-+module_init(i2c_nct6775_init);
-+module_exit(i2c_nct6775_exit);
-diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
-index 30ded6422e7b..e25ce84c26af 100644
---- a/drivers/i2c/busses/i2c-piix4.c
-+++ b/drivers/i2c/busses/i2c-piix4.c
-@@ -467,11 +467,11 @@ static int piix4_transaction(struct i2c_adapter *piix4_adapter)
- if (srvrworks_csb5_delay) /* Extra delay for SERVERWORKS_CSB5 */
- usleep_range(2000, 2100);
- else
-- usleep_range(250, 500);
-+ usleep_range(25, 50);
-
- while ((++timeout < MAX_TIMEOUT) &&
- ((temp = inb_p(SMBHSTSTS)) & 0x01))
-- usleep_range(250, 500);
-+ usleep_range(25, 50);
-
- /* If the SMBus is still busy, we give up */
- if (timeout == MAX_TIMEOUT) {
diff --git a/SOURCES/Patchlist.changelog b/SOURCES/Patchlist.changelog
index e388f8c..eb16b5b 100644
--- a/SOURCES/Patchlist.changelog
+++ b/SOURCES/Patchlist.changelog
@@ -1,153 +1,132 @@
-https://gitlab.com/cki-project/kernel-ark/-/commit/7c261c4b600417524d07c5494a381e58abe404b1
- 7c261c4b600417524d07c5494a381e58abe404b1 drm/nouveau/fb: restore init() for ramgp102
+https://gitlab.com/cki-project/kernel-ark/-/commit/37f88e3ca1bde6c898222d6dbd8f4d804c2e9834
+ 37f88e3ca1bde6c898222d6dbd8f4d804c2e9834 media: qcom: camss: Fix ordering of pm_runtime_enable
-https://gitlab.com/cki-project/kernel-ark/-/commit/3b2f4b84968261c49a19cde5a2c01c32c09cc1f8
- 3b2f4b84968261c49a19cde5a2c01c32c09cc1f8 xfs: xfs_finobt_count_blocks() walks the wrong btree
+https://gitlab.com/cki-project/kernel-ark/-/commit/9f2335d9e326af21c4376eec9bece213a512e726
+ 9f2335d9e326af21c4376eec9bece213a512e726 media: qcom: camss: Remove use_count guard in stop_streaming
-https://gitlab.com/cki-project/kernel-ark/-/commit/378f837843ce9ccefbf401f707cda2c10c03b258
- 378f837843ce9ccefbf401f707cda2c10c03b258 Revert the F39 commits which should not have pushed
+https://gitlab.com/cki-project/kernel-ark/-/commit/7e88a0ffc13ab94b37a3d45e1180bf98d5a1ab75
+ 7e88a0ffc13ab94b37a3d45e1180bf98d5a1ab75 arm64: dts: allwinner: a64: Add GPU thermal trips to the SoC dtsi
-https://gitlab.com/cki-project/kernel-ark/-/commit/617f0465246a2629c0ce735529f0addaacba0604
- 617f0465246a2629c0ce735529f0addaacba0604 KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHPKEYR in sync
+https://gitlab.com/cki-project/kernel-ark/-/commit/5b1fd9a9d2bd49e45e3703121c69142a78f75acb
+ 5b1fd9a9d2bd49e45e3703121c69142a78f75acb arm64: dts: rockchip: Raise Pinebook Pro's panel backlight PWM frequency
-https://gitlab.com/cki-project/kernel-ark/-/commit/713ce2b8136985b1a7ff2ec6dc3c75ebbf4e3ddd
- 713ce2b8136985b1a7ff2ec6dc3c75ebbf4e3ddd KVM: PPC: Book3S HV: Add one-reg interface for HASHPKEYR register
+https://gitlab.com/cki-project/kernel-ark/-/commit/1702e478b95131f3004b3c2eb2afd9eb88c69972
+ 1702e478b95131f3004b3c2eb2afd9eb88c69972 arm64: dts: qcom: sc8280xp-x13s: Enable RGB sensor
-https://gitlab.com/cki-project/kernel-ark/-/commit/3a7a0b70797b9e19312547345f0fd84595458302
- 3a7a0b70797b9e19312547345f0fd84595458302 KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHKEYR in sync
+https://gitlab.com/cki-project/kernel-ark/-/commit/eac4ee8c9ca0b44bc1611e735a08a940792f5ef0
+ eac4ee8c9ca0b44bc1611e735a08a940792f5ef0 ARM: dts: bcm2837/bcm2712: adjust local intc node names
-https://gitlab.com/cki-project/kernel-ark/-/commit/aab7db47edcfacd592b7483fa0371bf8d23e8b6f
- aab7db47edcfacd592b7483fa0371bf8d23e8b6f KVM: PPC: Book3S HV: Add one-reg interface for HASHKEYR register
+https://gitlab.com/cki-project/kernel-ark/-/commit/68ca5d3e34a03dffe1ff51bf8a585923d7c985e5
+ 68ca5d3e34a03dffe1ff51bf8a585923d7c985e5 arm64: dts: broadcom: Add minimal support for Raspberry Pi 5
-https://gitlab.com/cki-project/kernel-ark/-/commit/1d5f5405eb8b0023aefe21d56558d742e2b558ea
- 1d5f5405eb8b0023aefe21d56558d742e2b558ea KVM: PPC: Book3S HV nestedv2: Keep nested guest DEXCR in sync
+https://gitlab.com/cki-project/kernel-ark/-/commit/9d4f912ea7ae72beae0943fb93468c93c08d53fd
+ 9d4f912ea7ae72beae0943fb93468c93c08d53fd redhat: include resolve_btfids in kernel-devel
-https://gitlab.com/cki-project/kernel-ark/-/commit/3eec751027838fde380aee0676b2bb9806a01a75
- 3eec751027838fde380aee0676b2bb9806a01a75 KVM: PPC: Book3S HV: Add one-reg interface for DEXCR register
+https://gitlab.com/cki-project/kernel-ark/-/commit/9b332458aa4b5d43c795b8c03e1041956d92e09b
+ 9b332458aa4b5d43c795b8c03e1041956d92e09b redhat: workaround CKI cross compilation for scripts
-https://gitlab.com/cki-project/kernel-ark/-/commit/c3be1c8ba3dc3a70fb65546e836193ce584de02b
- c3be1c8ba3dc3a70fb65546e836193ce584de02b Revert "cpupower: Bump soname version"
+https://gitlab.com/cki-project/kernel-ark/-/commit/1bd2b8b9cdd378bc0bcc46ffb3580b810b22bec5
+ 1bd2b8b9cdd378bc0bcc46ffb3580b810b22bec5 crypto: akcipher - Disable signing and decryption
-https://gitlab.com/cki-project/kernel-ark/-/commit/d42657488c703c24d1fffaecced0b3b82d30b393
- d42657488c703c24d1fffaecced0b3b82d30b393 selinux: revert our use of vma_is_initial_heap()
+https://gitlab.com/cki-project/kernel-ark/-/commit/35655c383bfd88c12f760899ea64659da5a29627
+ 35655c383bfd88c12f760899ea64659da5a29627 crypto: dh - implement FIPS PCT
-https://gitlab.com/cki-project/kernel-ark/-/commit/3a19264d7608d1c0cb6adff9f45883887a30ba29
- 3a19264d7608d1c0cb6adff9f45883887a30ba29 Revert "ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error"
+https://gitlab.com/cki-project/kernel-ark/-/commit/dc99bf18097cb54436cdea0c68844819d2adfe75
+ dc99bf18097cb54436cdea0c68844819d2adfe75 crypto: ecdh - disallow plain "ecdh" usage in FIPS mode
-https://gitlab.com/cki-project/kernel-ark/-/commit/2c6b48dfc4f3aad194a99c23f8d3e604c1a5593f
- 2c6b48dfc4f3aad194a99c23f8d3e604c1a5593f wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion
+https://gitlab.com/cki-project/kernel-ark/-/commit/d684af303ca6e652bcb52c6637f1c49a65f59100
+ d684af303ca6e652bcb52c6637f1c49a65f59100 crypto: seqiv - flag instantiations as FIPS compliant
-https://gitlab.com/cki-project/kernel-ark/-/commit/64905c656dbdbc1a21d838d33e10699e391f185b
- 64905c656dbdbc1a21d838d33e10699e391f185b Bluetooth: hci_event: Fix setting DISCOVERY_FINDING for passive scanning
+https://gitlab.com/cki-project/kernel-ark/-/commit/7c0d780c693acc53b94b27e5a9c72d377b98aab4
+ 7c0d780c693acc53b94b27e5a9c72d377b98aab4 not upstream: drop openssl ENGINE API usage
-https://gitlab.com/cki-project/kernel-ark/-/commit/df97a13dc31a28e5c34e946a9e229c8b0e4c94b7
- df97a13dc31a28e5c34e946a9e229c8b0e4c94b7 not upstream: drop openssl ENGINE API usage
+https://gitlab.com/cki-project/kernel-ark/-/commit/f8e0850f38863ef52f2cd55fdcdb3abaaad9e73e
+ f8e0850f38863ef52f2cd55fdcdb3abaaad9e73e lsm: update security_lock_kernel_down
-https://gitlab.com/cki-project/kernel-ark/-/commit/3454711caea17db89f985e7dff3e99ee6b88c409
- 3454711caea17db89f985e7dff3e99ee6b88c409 media: ipu-bridge: Add HIDs from out of tree IPU6 driver ipu-bridge copy
+https://gitlab.com/cki-project/kernel-ark/-/commit/32ab33b828ef7b77647c69cf192ca42d9f6566e9
+ 32ab33b828ef7b77647c69cf192ca42d9f6566e9 scsi: sd: Add "probe_type" module parameter to allow synchronous probing
-https://gitlab.com/cki-project/kernel-ark/-/commit/be66be71dcf134a103446381d3d3ad7c2f3d1f36
- be66be71dcf134a103446381d3d3ad7c2f3d1f36 media: ipu-bridge: Sort ipu_supported_sensors[] array by ACPI HID
+https://gitlab.com/cki-project/kernel-ark/-/commit/060bc66dee0bd947f7a19240d1059128c39a555b
+ 060bc66dee0bd947f7a19240d1059128c39a555b Revert "Remove EXPERT from ARCH_FORCE_MAX_ORDER for aarch64"
-https://gitlab.com/cki-project/kernel-ark/-/commit/cbbaa28dd511151ef6453ba310d827e8033ec9c0
- cbbaa28dd511151ef6453ba310d827e8033ec9c0 lsm: update security_lock_kernel_down
+https://gitlab.com/cki-project/kernel-ark/-/commit/87bee3c15d593cdf1f4c337d65900cc8639459e2
+ 87bee3c15d593cdf1f4c337d65900cc8639459e2 Enable IO_URING for RHEL
-https://gitlab.com/cki-project/kernel-ark/-/commit/c63e36d30db93dc40db4fe4a9eec03faab3cdc70
- c63e36d30db93dc40db4fe4a9eec03faab3cdc70 random: replace import_single_range() with import_ubuf()
+https://gitlab.com/cki-project/kernel-ark/-/commit/c1791b7d3183881333af9a8fec60565ac55cad61
+ c1791b7d3183881333af9a8fec60565ac55cad61 Remove EXPERT from ARCH_FORCE_MAX_ORDER for aarch64
-https://gitlab.com/cki-project/kernel-ark/-/commit/b9735227d9941ce60606745511251a36fa22a790
- b9735227d9941ce60606745511251a36fa22a790 crypto: rng - Override drivers/char/random in FIPS mode
+https://gitlab.com/cki-project/kernel-ark/-/commit/ad94095fbf83123eeb07fdbf38af75b0f5344f27
+ ad94095fbf83123eeb07fdbf38af75b0f5344f27 redhat: version two of Makefile.rhelver tweaks
-https://gitlab.com/cki-project/kernel-ark/-/commit/65d1b706fca339b0903f4fbfeaf8d178b8172c7e
- 65d1b706fca339b0903f4fbfeaf8d178b8172c7e random: Add hook to override device reads and getrandom(2)
+https://gitlab.com/cki-project/kernel-ark/-/commit/baf728d501a2661e474ebbae11d667849e17d29b
+ baf728d501a2661e474ebbae11d667849e17d29b redhat: adapt to upstream Makefile change
-https://gitlab.com/cki-project/kernel-ark/-/commit/c90965635e3602b0c9e4cc886d676c442dd42258
- c90965635e3602b0c9e4cc886d676c442dd42258 scsi: sd: Add "probe_type" module parameter to allow synchronous probing
+https://gitlab.com/cki-project/kernel-ark/-/commit/472b92a5d9724cbbd0607fd5d82947764c2b972f
+ 472b92a5d9724cbbd0607fd5d82947764c2b972f Change acpi_bus_get_acpi_device to acpi_get_acpi_dev
-https://gitlab.com/cki-project/kernel-ark/-/commit/38785ac0bb912f801fded5a5941d88b04d7d7290
- 38785ac0bb912f801fded5a5941d88b04d7d7290 Revert "Remove EXPERT from ARCH_FORCE_MAX_ORDER for aarch64"
+https://gitlab.com/cki-project/kernel-ark/-/commit/d75c410357fb64130d57d556ff9229139c14a8e8
+ d75c410357fb64130d57d556ff9229139c14a8e8 RHEL: disable io_uring support
-https://gitlab.com/cki-project/kernel-ark/-/commit/afb130da7fa29ace02a6503e9a6ace1a20f308f6
- afb130da7fa29ace02a6503e9a6ace1a20f308f6 Enable IO_URING for RHEL
+https://gitlab.com/cki-project/kernel-ark/-/commit/6e698e13917736eccc5bb20af0bc67490d8528cf
+ 6e698e13917736eccc5bb20af0bc67490d8528cf REDHAT: coresight: etm4x: Disable coresight on HPE Apollo 70
-https://gitlab.com/cki-project/kernel-ark/-/commit/35af8d13f76ff5350cede226edd174d3c0da8746
- 35af8d13f76ff5350cede226edd174d3c0da8746 Remove EXPERT from ARCH_FORCE_MAX_ORDER for aarch64
+https://gitlab.com/cki-project/kernel-ark/-/commit/85626adff3f11ecbdb88472ddbd9ce884ef9e114
+ 85626adff3f11ecbdb88472ddbd9ce884ef9e114 KEYS: Make use of platform keyring for module signature verify
-https://gitlab.com/cki-project/kernel-ark/-/commit/6fc82f934cef12036a096abd8b6c96aaa91caa27
- 6fc82f934cef12036a096abd8b6c96aaa91caa27 redhat: version two of Makefile.rhelver tweaks
+https://gitlab.com/cki-project/kernel-ark/-/commit/ee87b152d9cb9f421259db9bfc8e3904c8d7305f
+ ee87b152d9cb9f421259db9bfc8e3904c8d7305f Input: rmi4 - remove the need for artificial IRQ in case of HID
-https://gitlab.com/cki-project/kernel-ark/-/commit/4514ddff557ce3d0376ba0987caed185f7add413
- 4514ddff557ce3d0376ba0987caed185f7add413 redhat: adapt to upstream Makefile change
+https://gitlab.com/cki-project/kernel-ark/-/commit/1ed5225c5a34662ad010075699d8790f5b7171dc
+ 1ed5225c5a34662ad010075699d8790f5b7171dc ARM: tegra: usb no reset
-https://gitlab.com/cki-project/kernel-ark/-/commit/3070d9bf71f868356d7981c303f905e09db7f181
- 3070d9bf71f868356d7981c303f905e09db7f181 Change acpi_bus_get_acpi_device to acpi_get_acpi_dev
+https://gitlab.com/cki-project/kernel-ark/-/commit/b0ed5d1de8bc342f1620f00d8378a8c7b3f41e26
+ b0ed5d1de8bc342f1620f00d8378a8c7b3f41e26 s390: Lock down the kernel when the IPL secure flag is set
-https://gitlab.com/cki-project/kernel-ark/-/commit/38541e47233d3488faf6e03e3c9766d89594da4c
- 38541e47233d3488faf6e03e3c9766d89594da4c RHEL: disable io_uring support
+https://gitlab.com/cki-project/kernel-ark/-/commit/a2c6c57e2d1d60148bc3e623dbc046aef65eacdb
+ a2c6c57e2d1d60148bc3e623dbc046aef65eacdb efi: Lock down the kernel if booted in secure boot mode
-https://gitlab.com/cki-project/kernel-ark/-/commit/43e1a1bf7e0e75155e871e6073f102fcf2521bf2
- 43e1a1bf7e0e75155e871e6073f102fcf2521bf2 REDHAT: coresight: etm4x: Disable coresight on HPE Apollo 70
+https://gitlab.com/cki-project/kernel-ark/-/commit/c9a7afaa703bfd5c439fcada879031982e1f31a5
+ c9a7afaa703bfd5c439fcada879031982e1f31a5 efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode
-https://gitlab.com/cki-project/kernel-ark/-/commit/60b325a0fe9439e714c086ad9c1953ef336d9c18
- 60b325a0fe9439e714c086ad9c1953ef336d9c18 KEYS: Make use of platform keyring for module signature verify
+https://gitlab.com/cki-project/kernel-ark/-/commit/044abfe144b8f9413327cb5f6de53fa65bee13fa
+ 044abfe144b8f9413327cb5f6de53fa65bee13fa security: lockdown: expose a hook to lock the kernel down
-https://gitlab.com/cki-project/kernel-ark/-/commit/720413433847a69179713f8acc9ddf34b97aa0cc
- 720413433847a69179713f8acc9ddf34b97aa0cc Input: rmi4 - remove the need for artificial IRQ in case of HID
+https://gitlab.com/cki-project/kernel-ark/-/commit/df4dc5c5082636ea3dd0096eae3e113c3b3903d7
+ df4dc5c5082636ea3dd0096eae3e113c3b3903d7 Make get_cert_list() use efi_status_to_str() to print error messages.
-https://gitlab.com/cki-project/kernel-ark/-/commit/1c4d521584814938e16894cedd74fecc7fae4e4d
- 1c4d521584814938e16894cedd74fecc7fae4e4d ARM: tegra: usb no reset
+https://gitlab.com/cki-project/kernel-ark/-/commit/8378c41fcd8c0fadf4d4e3d046870c570855dd5f
+ 8378c41fcd8c0fadf4d4e3d046870c570855dd5f Add efi_status_to_str() and rework efi_status_to_err().
-https://gitlab.com/cki-project/kernel-ark/-/commit/b9ac33fa8da358c7cd9d5fcf81a81e9440c4f4e8
- b9ac33fa8da358c7cd9d5fcf81a81e9440c4f4e8 arm: make CONFIG_HIGHPTE optional without CONFIG_EXPERT
+https://gitlab.com/cki-project/kernel-ark/-/commit/1d98b5d2ef6e9b3bcb2e71e0b89a7777d28b87cb
+ 1d98b5d2ef6e9b3bcb2e71e0b89a7777d28b87cb arm: aarch64: Drop the EXPERT setting from ARM64_FORCE_52BIT
-https://gitlab.com/cki-project/kernel-ark/-/commit/9b433e174c62feee214f54c0c37c6b9ef563c17c
- 9b433e174c62feee214f54c0c37c6b9ef563c17c s390: Lock down the kernel when the IPL secure flag is set
+https://gitlab.com/cki-project/kernel-ark/-/commit/0f01dc56b6690c204e534efead7f833a151668e4
+ 0f01dc56b6690c204e534efead7f833a151668e4 iommu/arm-smmu: workaround DMA mode issues
-https://gitlab.com/cki-project/kernel-ark/-/commit/f12e9938ce152070d1321726f9350ddf45954456
- f12e9938ce152070d1321726f9350ddf45954456 efi: Lock down the kernel if booted in secure boot mode
+https://gitlab.com/cki-project/kernel-ark/-/commit/f4aceb8131752369713f8eedb949c72a6ff6f65b
+ f4aceb8131752369713f8eedb949c72a6ff6f65b ipmi: do not configure ipmi for HPE m400
-https://gitlab.com/cki-project/kernel-ark/-/commit/9a13b2349fb725958f5325ff8523376101ef8383
- 9a13b2349fb725958f5325ff8523376101ef8383 efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode
+https://gitlab.com/cki-project/kernel-ark/-/commit/8097fbfdc958f3b46fae70e593c65221b373626e
+ 8097fbfdc958f3b46fae70e593c65221b373626e ahci: thunderx2: Fix for errata that affects stop engine
-https://gitlab.com/cki-project/kernel-ark/-/commit/0af95004576d1c8c70ddb214f32067d033d6649c
- 0af95004576d1c8c70ddb214f32067d033d6649c security: lockdown: expose a hook to lock the kernel down
+https://gitlab.com/cki-project/kernel-ark/-/commit/50f5d1278d3927a4fe64f52d8f098dc8fd70f1af
+ 50f5d1278d3927a4fe64f52d8f098dc8fd70f1af Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon
-https://gitlab.com/cki-project/kernel-ark/-/commit/66c1104a75fd35975a3fd001a80e6cfe6e4e2e95
- 66c1104a75fd35975a3fd001a80e6cfe6e4e2e95 Make get_cert_list() use efi_status_to_str() to print error messages.
+https://gitlab.com/cki-project/kernel-ark/-/commit/a67c78d8f995bab09b4ba5d440610237472d2e19
+ a67c78d8f995bab09b4ba5d440610237472d2e19 tags.sh: Ignore redhat/rpm
-https://gitlab.com/cki-project/kernel-ark/-/commit/9b009a11be7b5673b633f97dd79bbbb4a2a383d5
- 9b009a11be7b5673b633f97dd79bbbb4a2a383d5 Add efi_status_to_str() and rework efi_status_to_err().
+https://gitlab.com/cki-project/kernel-ark/-/commit/bd765dc97b11b68f772e662df0c03e5ceccdb9d0
+ bd765dc97b11b68f772e662df0c03e5ceccdb9d0 aarch64: acpi scan: Fix regression related to X-Gene UARTs
-https://gitlab.com/cki-project/kernel-ark/-/commit/31acc47a35aa48eb72f286c23bd3dc6170d4679b
- 31acc47a35aa48eb72f286c23bd3dc6170d4679b arm: aarch64: Drop the EXPERT setting from ARM64_FORCE_52BIT
+https://gitlab.com/cki-project/kernel-ark/-/commit/1b14c142506526498b6839daffedb5318e9331d3
+ 1b14c142506526498b6839daffedb5318e9331d3 ACPI / irq: Workaround firmware issue on X-Gene based m400
-https://gitlab.com/cki-project/kernel-ark/-/commit/a1251f95f26d81227f6f9f9c5a6da0ba878c101f
- a1251f95f26d81227f6f9f9c5a6da0ba878c101f iommu/arm-smmu: workaround DMA mode issues
+https://gitlab.com/cki-project/kernel-ark/-/commit/ceadcd821a820a3d4f93125393d6b853f5f8c789
+ ceadcd821a820a3d4f93125393d6b853f5f8c789 ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support
-https://gitlab.com/cki-project/kernel-ark/-/commit/3a9a8d542ceb13c88aec9a01641e622f902966ef
- 3a9a8d542ceb13c88aec9a01641e622f902966ef ipmi: do not configure ipmi for HPE m400
+https://gitlab.com/cki-project/kernel-ark/-/commit/a61ca8bd4bc11f602e04a0263b4a54098f84ceda
+ a61ca8bd4bc11f602e04a0263b4a54098f84ceda Pull the RHEL version defines out of the Makefile
-https://gitlab.com/cki-project/kernel-ark/-/commit/92a98c325754a3b7ac5120be23d44c4b39be2ff4
- 92a98c325754a3b7ac5120be23d44c4b39be2ff4 ahci: thunderx2: Fix for errata that affects stop engine
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/c8e9b8316a520281c415bbcd5d4e79c83ef1efe2
- c8e9b8316a520281c415bbcd5d4e79c83ef1efe2 Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/596ed9913c9baa40872fae05c2b2d25361d9ba5a
- 596ed9913c9baa40872fae05c2b2d25361d9ba5a tags.sh: Ignore redhat/rpm
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/ad9ca98ac11c17c7c0a86150fd39fdb2c5555eae
- ad9ca98ac11c17c7c0a86150fd39fdb2c5555eae aarch64: acpi scan: Fix regression related to X-Gene UARTs
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/51d0866487663784d1cc1665d804f5a7fe62d171
- 51d0866487663784d1cc1665d804f5a7fe62d171 ACPI / irq: Workaround firmware issue on X-Gene based m400
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/301279f0f655f76a7ca1ed8583a483253139a2a9
- 301279f0f655f76a7ca1ed8583a483253139a2a9 ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/9c3c3b074c576933be673f718aa7444273317ab5
- 9c3c3b074c576933be673f718aa7444273317ab5 Pull the RHEL version defines out of the Makefile
-
-https://gitlab.com/cki-project/kernel-ark/-/commit/030267e59ba8d0219857aceb6e41fb9ced3b386f
- 030267e59ba8d0219857aceb6e41fb9ced3b386f [initial commit] Add Red Hat variables in the top level makefile
+https://gitlab.com/cki-project/kernel-ark/-/commit/70cf1cf208f8aa5ef855bda2a5ff8feecee2292c
+ 70cf1cf208f8aa5ef855bda2a5ff8feecee2292c [initial commit] Add Red Hat variables in the top level makefile
diff --git a/SOURCES/cachy-bbr3.patch b/SOURCES/cachy-bbr3.patch
deleted file mode 100644
index 51633e0..0000000
--- a/SOURCES/cachy-bbr3.patch
+++ /dev/null
@@ -1,3386 +0,0 @@
-From b8584936a7a1eb2149d0c10de2ac05ca7acc5c9f Mon Sep 17 00:00:00 2001
-From: Peter Jung <admin@ptr1337.dev>
-Date: Sat, 3 Aug 2024 09:32:56 +0200
-Subject: [PATCH 02/12] bbr3
-
-Signed-off-by: Peter Jung <admin@ptr1337.dev>
----
- include/linux/tcp.h | 4 +-
- include/net/inet_connection_sock.h | 4 +-
- include/net/tcp.h | 72 +-
- include/uapi/linux/inet_diag.h | 23 +
- include/uapi/linux/rtnetlink.h | 4 +-
- include/uapi/linux/tcp.h | 1 +
- net/ipv4/Kconfig | 21 +-
- net/ipv4/bpf_tcp_ca.c | 9 +-
- net/ipv4/tcp.c | 3 +
- net/ipv4/tcp_bbr.c | 2230 +++++++++++++++++++++-------
- net/ipv4/tcp_cong.c | 1 +
- net/ipv4/tcp_input.c | 40 +-
- net/ipv4/tcp_minisocks.c | 2 +
- net/ipv4/tcp_output.c | 48 +-
- net/ipv4/tcp_rate.c | 30 +-
- net/ipv4/tcp_timer.c | 1 +
- 16 files changed, 1940 insertions(+), 553 deletions(-)
-
-diff --git a/include/linux/tcp.h b/include/linux/tcp.h
-index 6a5e08b937b3..27aab715490e 100644
---- a/include/linux/tcp.h
-+++ b/include/linux/tcp.h
-@@ -369,7 +369,9 @@ struct tcp_sock {
- u8 compressed_ack;
- u8 dup_ack_counter:2,
- tlp_retrans:1, /* TLP is a retransmission */
-- unused:5;
-+ fast_ack_mode:2, /* which fast ack mode ? */
-+ tlp_orig_data_app_limited:1, /* app-limited before TLP rtx? */
-+ unused:2;
- u8 thin_lto : 1,/* Use linear timeouts for thin streams */
- fastopen_connect:1, /* FASTOPEN_CONNECT sockopt */
- fastopen_no_cookie:1, /* Allow send/recv SYN+data without a cookie */
-diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
-index c0deaafebfdc..d53f042d936e 100644
---- a/include/net/inet_connection_sock.h
-+++ b/include/net/inet_connection_sock.h
-@@ -137,8 +137,8 @@ struct inet_connection_sock {
- u32 icsk_probes_tstamp;
- u32 icsk_user_timeout;
-
-- u64 icsk_ca_priv[104 / sizeof(u64)];
--#define ICSK_CA_PRIV_SIZE sizeof_field(struct inet_connection_sock, icsk_ca_priv)
-+#define ICSK_CA_PRIV_SIZE (144)
-+ u64 icsk_ca_priv[ICSK_CA_PRIV_SIZE / sizeof(u64)];
- };
-
- #define ICSK_TIME_RETRANS 1 /* Retransmit timer */
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 32815a40dea1..109b8d1ddc31 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -375,6 +375,8 @@ static inline void tcp_dec_quickack_mode(struct sock *sk)
- #define TCP_ECN_QUEUE_CWR 2
- #define TCP_ECN_DEMAND_CWR 4
- #define TCP_ECN_SEEN 8
-+#define TCP_ECN_LOW 16
-+#define TCP_ECN_ECT_PERMANENT 32
-
- enum tcp_tw_status {
- TCP_TW_SUCCESS = 0,
-@@ -779,6 +781,15 @@ static inline void tcp_fast_path_check(struct sock *sk)
-
- u32 tcp_delack_max(const struct sock *sk);
-
-+static inline void tcp_set_ecn_low_from_dst(struct sock *sk,
-+ const struct dst_entry *dst)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+
-+ if (dst_feature(dst, RTAX_FEATURE_ECN_LOW))
-+ tp->ecn_flags |= TCP_ECN_LOW;
-+}
-+
- /* Compute the actual rto_min value */
- static inline u32 tcp_rto_min(const struct sock *sk)
- {
-@@ -884,6 +895,11 @@ static inline u32 tcp_stamp_us_delta(u64 t1, u64 t0)
- return max_t(s64, t1 - t0, 0);
- }
-
-+static inline u32 tcp_stamp32_us_delta(u32 t1, u32 t0)
-+{
-+ return max_t(s32, t1 - t0, 0);
-+}
-+
- /* provide the departure time in us unit */
- static inline u64 tcp_skb_timestamp_us(const struct sk_buff *skb)
- {
-@@ -973,9 +989,14 @@ struct tcp_skb_cb {
- /* pkts S/ACKed so far upon tx of skb, incl retrans: */
- __u32 delivered;
- /* start of send pipeline phase */
-- u64 first_tx_mstamp;
-+ u32 first_tx_mstamp;
- /* when we reached the "delivered" count */
-- u64 delivered_mstamp;
-+ u32 delivered_mstamp;
-+#define TCPCB_IN_FLIGHT_BITS 20
-+#define TCPCB_IN_FLIGHT_MAX ((1U << TCPCB_IN_FLIGHT_BITS) - 1)
-+ u32 in_flight:20, /* packets in flight at transmit */
-+ unused2:12;
-+ u32 lost; /* packets lost so far upon tx of skb */
- } tx; /* only used for outgoing skbs */
- union {
- struct inet_skb_parm h4;
-@@ -1079,6 +1100,7 @@ enum tcp_ca_event {
- CA_EVENT_LOSS, /* loss timeout */
- CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */
- CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */
-+ CA_EVENT_TLP_RECOVERY, /* a lost segment was repaired by TLP probe */
- };
-
- /* Information about inbound ACK, passed to cong_ops->in_ack_event() */
-@@ -1101,7 +1123,11 @@ enum tcp_ca_ack_event_flags {
- #define TCP_CONG_NON_RESTRICTED 0x1
- /* Requires ECN/ECT set on all packets */
- #define TCP_CONG_NEEDS_ECN 0x2
--#define TCP_CONG_MASK (TCP_CONG_NON_RESTRICTED | TCP_CONG_NEEDS_ECN)
-+/* Wants notification of CE events (CA_EVENT_ECN_IS_CE, CA_EVENT_ECN_NO_CE). */
-+#define TCP_CONG_WANTS_CE_EVENTS 0x4
-+#define TCP_CONG_MASK (TCP_CONG_NON_RESTRICTED | \
-+ TCP_CONG_NEEDS_ECN | \
-+ TCP_CONG_WANTS_CE_EVENTS)
-
- union tcp_cc_info;
-
-@@ -1121,10 +1147,13 @@ struct ack_sample {
- */
- struct rate_sample {
- u64 prior_mstamp; /* starting timestamp for interval */
-+ u32 prior_lost; /* tp->lost at "prior_mstamp" */
- u32 prior_delivered; /* tp->delivered at "prior_mstamp" */
- u32 prior_delivered_ce;/* tp->delivered_ce at "prior_mstamp" */
-+ u32 tx_in_flight; /* packets in flight at starting timestamp */
-+ s32 lost; /* number of packets lost over interval */
- s32 delivered; /* number of packets delivered over interval */
-- s32 delivered_ce; /* number of packets delivered w/ CE marks*/
-+ s32 delivered_ce; /* packets delivered w/ CE mark over interval */
- long interval_us; /* time for tp->delivered to incr "delivered" */
- u32 snd_interval_us; /* snd interval for delivered packets */
- u32 rcv_interval_us; /* rcv interval for delivered packets */
-@@ -1135,7 +1164,9 @@ struct rate_sample {
- u32 last_end_seq; /* end_seq of most recently ACKed packet */
- bool is_app_limited; /* is sample from packet with bubble in pipe? */
- bool is_retrans; /* is sample from retransmission? */
-+ bool is_acking_tlp_retrans_seq; /* ACKed a TLP retransmit sequence? */
- bool is_ack_delayed; /* is this (likely) a delayed ACK? */
-+ bool is_ece; /* did this ACK have ECN marked? */
- };
-
- struct tcp_congestion_ops {
-@@ -1159,8 +1190,11 @@ struct tcp_congestion_ops {
- /* hook for packet ack accounting (optional) */
- void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample);
-
-- /* override sysctl_tcp_min_tso_segs */
-- u32 (*min_tso_segs)(struct sock *sk);
-+ /* pick target number of segments per TSO/GSO skb (optional): */
-+ u32 (*tso_segs)(struct sock *sk, unsigned int mss_now);
-+
-+ /* react to a specific lost skb (optional) */
-+ void (*skb_marked_lost)(struct sock *sk, const struct sk_buff *skb);
-
- /* call when packets are delivered to update cwnd and pacing rate,
- * after all the ca_state processing. (optional)
-@@ -1226,6 +1260,14 @@ static inline char *tcp_ca_get_name_by_key(u32 key, char *buffer)
- }
- #endif
-
-+static inline bool tcp_ca_wants_ce_events(const struct sock *sk)
-+{
-+ const struct inet_connection_sock *icsk = inet_csk(sk);
-+
-+ return icsk->icsk_ca_ops->flags & (TCP_CONG_NEEDS_ECN |
-+ TCP_CONG_WANTS_CE_EVENTS);
-+}
-+
- static inline bool tcp_ca_needs_ecn(const struct sock *sk)
- {
- const struct inet_connection_sock *icsk = inet_csk(sk);
-@@ -1245,6 +1287,7 @@ static inline void tcp_ca_event(struct sock *sk, const enum tcp_ca_event event)
- void tcp_set_ca_state(struct sock *sk, const u8 ca_state);
-
- /* From tcp_rate.c */
-+void tcp_set_tx_in_flight(struct sock *sk, struct sk_buff *skb);
- void tcp_rate_skb_sent(struct sock *sk, struct sk_buff *skb);
- void tcp_rate_skb_delivered(struct sock *sk, struct sk_buff *skb,
- struct rate_sample *rs);
-@@ -1257,6 +1300,21 @@ static inline bool tcp_skb_sent_after(u64 t1, u64 t2, u32 seq1, u32 seq2)
- return t1 > t2 || (t1 == t2 && after(seq1, seq2));
- }
-
-+/* If a retransmit failed due to local qdisc congestion or other local issues,
-+ * then we may have called tcp_set_skb_tso_segs() to increase the number of
-+ * segments in the skb without increasing the tx.in_flight. In all other cases,
-+ * the tx.in_flight should be at least as big as the pcount of the sk_buff. We
-+ * do not have the state to know whether a retransmit failed due to local qdisc
-+ * congestion or other local issues, so to avoid spurious warnings we consider
-+ * that any skb marked lost may have suffered that fate.
-+ */
-+static inline bool tcp_skb_tx_in_flight_is_suspicious(u32 skb_pcount,
-+ u32 skb_sacked_flags,
-+ u32 tx_in_flight)
-+{
-+ return (skb_pcount > tx_in_flight) && !(skb_sacked_flags & TCPCB_LOST);
-+}
-+
- /* These functions determine how the current flow behaves in respect of SACK
- * handling. SACK is negotiated with the peer, and therefore it can vary
- * between different flows.
-@@ -2419,7 +2477,7 @@ struct tcp_plb_state {
- u8 consec_cong_rounds:5, /* consecutive congested rounds */
- unused:3;
- u32 pause_until; /* jiffies32 when PLB can resume rerouting */
--};
-+} __attribute__ ((__packed__));
-
- static inline void tcp_plb_init(const struct sock *sk,
- struct tcp_plb_state *plb)
-diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
-index 50655de04c9b..82f8bd8f0d16 100644
---- a/include/uapi/linux/inet_diag.h
-+++ b/include/uapi/linux/inet_diag.h
-@@ -229,6 +229,29 @@ struct tcp_bbr_info {
- __u32 bbr_min_rtt; /* min-filtered RTT in uSec */
- __u32 bbr_pacing_gain; /* pacing gain shifted left 8 bits */
- __u32 bbr_cwnd_gain; /* cwnd gain shifted left 8 bits */
-+ __u32 bbr_bw_hi_lsb; /* lower 32 bits of bw_hi */
-+ __u32 bbr_bw_hi_msb; /* upper 32 bits of bw_hi */
-+ __u32 bbr_bw_lo_lsb; /* lower 32 bits of bw_lo */
-+ __u32 bbr_bw_lo_msb; /* upper 32 bits of bw_lo */
-+ __u8 bbr_mode; /* current bbr_mode in state machine */
-+ __u8 bbr_phase; /* current state machine phase */
-+ __u8 unused1; /* alignment padding; not used yet */
-+ __u8 bbr_version; /* BBR algorithm version */
-+ __u32 bbr_inflight_lo; /* lower short-term data volume bound */
-+ __u32 bbr_inflight_hi; /* higher long-term data volume bound */
-+ __u32 bbr_extra_acked; /* max excess packets ACKed in epoch */
-+};
-+
-+/* TCP BBR congestion control bbr_phase as reported in netlink/ss stats. */
-+enum tcp_bbr_phase {
-+ BBR_PHASE_INVALID = 0,
-+ BBR_PHASE_STARTUP = 1,
-+ BBR_PHASE_DRAIN = 2,
-+ BBR_PHASE_PROBE_RTT = 3,
-+ BBR_PHASE_PROBE_BW_UP = 4,
-+ BBR_PHASE_PROBE_BW_DOWN = 5,
-+ BBR_PHASE_PROBE_BW_CRUISE = 6,
-+ BBR_PHASE_PROBE_BW_REFILL = 7,
- };
-
- union tcp_cc_info {
-diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
-index 3b687d20c9ed..a7c30c243b54 100644
---- a/include/uapi/linux/rtnetlink.h
-+++ b/include/uapi/linux/rtnetlink.h
-@@ -507,12 +507,14 @@ enum {
- #define RTAX_FEATURE_TIMESTAMP (1 << 2) /* unused */
- #define RTAX_FEATURE_ALLFRAG (1 << 3) /* unused */
- #define RTAX_FEATURE_TCP_USEC_TS (1 << 4)
-+#define RTAX_FEATURE_ECN_LOW (1 << 5)
-
- #define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | \
- RTAX_FEATURE_SACK | \
- RTAX_FEATURE_TIMESTAMP | \
- RTAX_FEATURE_ALLFRAG | \
-- RTAX_FEATURE_TCP_USEC_TS)
-+ RTAX_FEATURE_TCP_USEC_TS | \
-+ RTAX_FEATURE_ECN_LOW)
-
- struct rta_session {
- __u8 proto;
-diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
-index dbf896f3146c..4702cd2f1ffc 100644
---- a/include/uapi/linux/tcp.h
-+++ b/include/uapi/linux/tcp.h
-@@ -178,6 +178,7 @@ enum tcp_fastopen_client_fail {
- #define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
- #define TCPI_OPT_SYN_DATA 32 /* SYN-ACK acked data in SYN sent or rcvd */
- #define TCPI_OPT_USEC_TS 64 /* usec timestamps */
-+#define TCPI_OPT_ECN_LOW 128 /* Low-latency ECN configured at init */
-
- /*
- * Sender's congestion state indicating normal or abnormal situations
-diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
-index 8e94ed7c56a0..50dc9970cad2 100644
---- a/net/ipv4/Kconfig
-+++ b/net/ipv4/Kconfig
-@@ -668,15 +668,18 @@ config TCP_CONG_BBR
- default n
- help
-
-- BBR (Bottleneck Bandwidth and RTT) TCP congestion control aims to
-- maximize network utilization and minimize queues. It builds an explicit
-- model of the bottleneck delivery rate and path round-trip propagation
-- delay. It tolerates packet loss and delay unrelated to congestion. It
-- can operate over LAN, WAN, cellular, wifi, or cable modem links. It can
-- coexist with flows that use loss-based congestion control, and can
-- operate with shallow buffers, deep buffers, bufferbloat, policers, or
-- AQM schemes that do not provide a delay signal. It requires the fq
-- ("Fair Queue") pacing packet scheduler.
-+ BBR (Bottleneck Bandwidth and RTT) TCP congestion control is a
-+ model-based congestion control algorithm that aims to maximize
-+ network utilization, keep queues and retransmit rates low, and to be
-+ able to coexist with Reno/CUBIC in common scenarios. It builds an
-+ explicit model of the network path. It tolerates a targeted degree
-+ of random packet loss and delay. It can operate over LAN, WAN,
-+ cellular, wifi, or cable modem links, and can use shallow-threshold
-+ ECN signals. It can coexist to some degree with flows that use
-+ loss-based congestion control, and can operate with shallow buffers,
-+ deep buffers, bufferbloat, policers, or AQM schemes that do not
-+ provide a delay signal. It requires pacing, using either TCP internal
-+ pacing or the fq ("Fair Queue") pacing packet scheduler.
-
- choice
- prompt "Default TCP congestion control"
-diff --git a/net/ipv4/bpf_tcp_ca.c b/net/ipv4/bpf_tcp_ca.c
-index 18227757ec0c..f180befc28bd 100644
---- a/net/ipv4/bpf_tcp_ca.c
-+++ b/net/ipv4/bpf_tcp_ca.c
-@@ -305,11 +305,15 @@ static void bpf_tcp_ca_pkts_acked(struct sock *sk, const struct ack_sample *samp
- {
- }
-
--static u32 bpf_tcp_ca_min_tso_segs(struct sock *sk)
-+static u32 bpf_tcp_ca_tso_segs(struct sock *sk, unsigned int mss_now)
- {
- return 0;
- }
-
-+static void bpf_tcp_ca_skb_marked_lost(struct sock *sk, const struct sk_buff *skb)
-+{
-+}
-+
- static void bpf_tcp_ca_cong_control(struct sock *sk, u32 ack, int flag,
- const struct rate_sample *rs)
- {
-@@ -340,7 +344,8 @@ static struct tcp_congestion_ops __bpf_ops_tcp_congestion_ops = {
- .cwnd_event = bpf_tcp_ca_cwnd_event,
- .in_ack_event = bpf_tcp_ca_in_ack_event,
- .pkts_acked = bpf_tcp_ca_pkts_acked,
-- .min_tso_segs = bpf_tcp_ca_min_tso_segs,
-+ .tso_segs = bpf_tcp_ca_tso_segs,
-+ .skb_marked_lost = bpf_tcp_ca_skb_marked_lost,
- .cong_control = bpf_tcp_ca_cong_control,
- .undo_cwnd = bpf_tcp_ca_undo_cwnd,
- .sndbuf_expand = bpf_tcp_ca_sndbuf_expand,
-diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
-index ec6911034138..df7731a30198 100644
---- a/net/ipv4/tcp.c
-+++ b/net/ipv4/tcp.c
-@@ -3120,6 +3120,7 @@ int tcp_disconnect(struct sock *sk, int flags)
- tp->rx_opt.dsack = 0;
- tp->rx_opt.num_sacks = 0;
- tp->rcv_ooopack = 0;
-+ tp->fast_ack_mode = 0;
-
-
- /* Clean up fastopen related fields */
-@@ -3846,6 +3847,8 @@ void tcp_get_info(struct sock *sk, struct tcp_info *info)
- info->tcpi_options |= TCPI_OPT_ECN;
- if (tp->ecn_flags & TCP_ECN_SEEN)
- info->tcpi_options |= TCPI_OPT_ECN_SEEN;
-+ if (tp->ecn_flags & TCP_ECN_LOW)
-+ info->tcpi_options |= TCPI_OPT_ECN_LOW;
- if (tp->syn_data_acked)
- info->tcpi_options |= TCPI_OPT_SYN_DATA;
- if (tp->tcp_usec_ts)
-diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c
-index 760941e55153..a180fa648d5e 100644
---- a/net/ipv4/tcp_bbr.c
-+++ b/net/ipv4/tcp_bbr.c
-@@ -1,18 +1,19 @@
--/* Bottleneck Bandwidth and RTT (BBR) congestion control
-+/* BBR (Bottleneck Bandwidth and RTT) congestion control
- *
-- * BBR congestion control computes the sending rate based on the delivery
-- * rate (throughput) estimated from ACKs. In a nutshell:
-+ * BBR is a model-based congestion control algorithm that aims for low queues,
-+ * low loss, and (bounded) Reno/CUBIC coexistence. To maintain a model of the
-+ * network path, it uses measurements of bandwidth and RTT, as well as (if they
-+ * occur) packet loss and/or shallow-threshold ECN signals. Note that although
-+ * it can use ECN or loss signals explicitly, it does not require either; it
-+ * can bound its in-flight data based on its estimate of the BDP.
- *
-- * On each ACK, update our model of the network path:
-- * bottleneck_bandwidth = windowed_max(delivered / elapsed, 10 round trips)
-- * min_rtt = windowed_min(rtt, 10 seconds)
-- * pacing_rate = pacing_gain * bottleneck_bandwidth
-- * cwnd = max(cwnd_gain * bottleneck_bandwidth * min_rtt, 4)
-- *
-- * The core algorithm does not react directly to packet losses or delays,
-- * although BBR may adjust the size of next send per ACK when loss is
-- * observed, or adjust the sending rate if it estimates there is a
-- * traffic policer, in order to keep the drop rate reasonable.
-+ * The model has both higher and lower bounds for the operating range:
-+ * lo: bw_lo, inflight_lo: conservative short-term lower bound
-+ * hi: bw_hi, inflight_hi: robust long-term upper bound
-+ * The bandwidth-probing time scale is (a) extended dynamically based on
-+ * estimated BDP to improve coexistence with Reno/CUBIC; (b) bounded by
-+ * an interactive wall-clock time-scale to be more scalable and responsive
-+ * than Reno and CUBIC.
- *
- * Here is a state transition diagram for BBR:
- *
-@@ -65,6 +66,13 @@
- #include <linux/random.h>
- #include <linux/win_minmax.h>
-
-+#include <trace/events/tcp.h>
-+#include "tcp_dctcp.h"
-+
-+#define BBR_VERSION 3
-+
-+#define bbr_param(sk,name) (bbr_ ## name)
-+
- /* Scale factor for rate in pkt/uSec unit to avoid truncation in bandwidth
- * estimation. The rate unit ~= (1500 bytes / 1 usec / 2^24) ~= 715 bps.
- * This handles bandwidths from 0.06pps (715bps) to 256Mpps (3Tbps) in a u32.
-@@ -85,36 +93,41 @@ enum bbr_mode {
- BBR_PROBE_RTT, /* cut inflight to min to probe min_rtt */
- };
-
-+/* How does the incoming ACK stream relate to our bandwidth probing? */
-+enum bbr_ack_phase {
-+ BBR_ACKS_INIT, /* not probing; not getting probe feedback */
-+ BBR_ACKS_REFILLING, /* sending at est. bw to fill pipe */
-+ BBR_ACKS_PROBE_STARTING, /* inflight rising to probe bw */
-+ BBR_ACKS_PROBE_FEEDBACK, /* getting feedback from bw probing */
-+ BBR_ACKS_PROBE_STOPPING, /* stopped probing; still getting feedback */
-+};
-+
- /* BBR congestion control block */
- struct bbr {
- u32 min_rtt_us; /* min RTT in min_rtt_win_sec window */
- u32 min_rtt_stamp; /* timestamp of min_rtt_us */
- u32 probe_rtt_done_stamp; /* end time for BBR_PROBE_RTT mode */
-- struct minmax bw; /* Max recent delivery rate in pkts/uS << 24 */
-- u32 rtt_cnt; /* count of packet-timed rounds elapsed */
-+ u32 probe_rtt_min_us; /* min RTT in probe_rtt_win_ms win */
-+ u32 probe_rtt_min_stamp; /* timestamp of probe_rtt_min_us*/
- u32 next_rtt_delivered; /* scb->tx.delivered at end of round */
- u64 cycle_mstamp; /* time of this cycle phase start */
-- u32 mode:3, /* current bbr_mode in state machine */
-+ u32 mode:2, /* current bbr_mode in state machine */
- prev_ca_state:3, /* CA state on previous ACK */
-- packet_conservation:1, /* use packet conservation? */
- round_start:1, /* start of packet-timed tx->ack round? */
-+ ce_state:1, /* If most recent data has CE bit set */
-+ bw_probe_up_rounds:5, /* cwnd-limited rounds in PROBE_UP */
-+ try_fast_path:1, /* can we take fast path? */
- idle_restart:1, /* restarting after idle? */
- probe_rtt_round_done:1, /* a BBR_PROBE_RTT round at 4 pkts? */
-- unused:13,
-- lt_is_sampling:1, /* taking long-term ("LT") samples now? */
-- lt_rtt_cnt:7, /* round trips in long-term interval */
-- lt_use_bw:1; /* use lt_bw as our bw estimate? */
-- u32 lt_bw; /* LT est delivery rate in pkts/uS << 24 */
-- u32 lt_last_delivered; /* LT intvl start: tp->delivered */
-- u32 lt_last_stamp; /* LT intvl start: tp->delivered_mstamp */
-- u32 lt_last_lost; /* LT intvl start: tp->lost */
-+ init_cwnd:7, /* initial cwnd */
-+ unused_1:10;
- u32 pacing_gain:10, /* current gain for setting pacing rate */
- cwnd_gain:10, /* current gain for setting cwnd */
- full_bw_reached:1, /* reached full bw in Startup? */
- full_bw_cnt:2, /* number of rounds without large bw gains */
-- cycle_idx:3, /* current index in pacing_gain cycle array */
-+ cycle_idx:2, /* current index in pacing_gain cycle array */
- has_seen_rtt:1, /* have we seen an RTT sample yet? */
-- unused_b:5;
-+ unused_2:6;
- u32 prior_cwnd; /* prior cwnd upon entering loss recovery */
- u32 full_bw; /* recent bw, to estimate if pipe is full */
-
-@@ -124,19 +137,67 @@ struct bbr {
- u32 ack_epoch_acked:20, /* packets (S)ACKed in sampling epoch */
- extra_acked_win_rtts:5, /* age of extra_acked, in round trips */
- extra_acked_win_idx:1, /* current index in extra_acked array */
-- unused_c:6;
-+ /* BBR v3 state: */
-+ full_bw_now:1, /* recently reached full bw plateau? */
-+ startup_ecn_rounds:2, /* consecutive hi ECN STARTUP rounds */
-+ loss_in_cycle:1, /* packet loss in this cycle? */
-+ ecn_in_cycle:1, /* ECN in this cycle? */
-+ unused_3:1;
-+ u32 loss_round_delivered; /* scb->tx.delivered ending loss round */
-+ u32 undo_bw_lo; /* bw_lo before latest losses */
-+ u32 undo_inflight_lo; /* inflight_lo before latest losses */
-+ u32 undo_inflight_hi; /* inflight_hi before latest losses */
-+ u32 bw_latest; /* max delivered bw in last round trip */
-+ u32 bw_lo; /* lower bound on sending bandwidth */
-+ u32 bw_hi[2]; /* max recent measured bw sample */
-+ u32 inflight_latest; /* max delivered data in last round trip */
-+ u32 inflight_lo; /* lower bound of inflight data range */
-+ u32 inflight_hi; /* upper bound of inflight data range */
-+ u32 bw_probe_up_cnt; /* packets delivered per inflight_hi incr */
-+ u32 bw_probe_up_acks; /* packets (S)ACKed since inflight_hi incr */
-+ u32 probe_wait_us; /* PROBE_DOWN until next clock-driven probe */
-+ u32 prior_rcv_nxt; /* tp->rcv_nxt when CE state last changed */
-+ u32 ecn_eligible:1, /* sender can use ECN (RTT, handshake)? */
-+ ecn_alpha:9, /* EWMA delivered_ce/delivered; 0..256 */
-+ bw_probe_samples:1, /* rate samples reflect bw probing? */
-+ prev_probe_too_high:1, /* did last PROBE_UP go too high? */
-+ stopped_risky_probe:1, /* last PROBE_UP stopped due to risk? */
-+ rounds_since_probe:8, /* packet-timed rounds since probed bw */
-+ loss_round_start:1, /* loss_round_delivered round trip? */
-+ loss_in_round:1, /* loss marked in this round trip? */
-+ ecn_in_round:1, /* ECN marked in this round trip? */
-+ ack_phase:3, /* bbr_ack_phase: meaning of ACKs */
-+ loss_events_in_round:4,/* losses in STARTUP round */
-+ initialized:1; /* has bbr_init() been called? */
-+ u32 alpha_last_delivered; /* tp->delivered at alpha update */
-+ u32 alpha_last_delivered_ce; /* tp->delivered_ce at alpha update */
-+
-+ u8 unused_4; /* to preserve alignment */
-+ struct tcp_plb_state plb;
- };
-
--#define CYCLE_LEN 8 /* number of phases in a pacing gain cycle */
-+struct bbr_context {
-+ u32 sample_bw;
-+};
-
--/* Window length of bw filter (in rounds): */
--static const int bbr_bw_rtts = CYCLE_LEN + 2;
- /* Window length of min_rtt filter (in sec): */
- static const u32 bbr_min_rtt_win_sec = 10;
- /* Minimum time (in ms) spent at bbr_cwnd_min_target in BBR_PROBE_RTT mode: */
- static const u32 bbr_probe_rtt_mode_ms = 200;
--/* Skip TSO below the following bandwidth (bits/sec): */
--static const int bbr_min_tso_rate = 1200000;
-+/* Window length of probe_rtt_min_us filter (in ms), and consequently the
-+ * typical interval between PROBE_RTT mode entries. The default is 5000ms.
-+ * Note that bbr_probe_rtt_win_ms must be <= bbr_min_rtt_win_sec * MSEC_PER_SEC
-+ */
-+static const u32 bbr_probe_rtt_win_ms = 5000;
-+/* Proportion of cwnd to estimated BDP in PROBE_RTT, in units of BBR_UNIT: */
-+static const u32 bbr_probe_rtt_cwnd_gain = BBR_UNIT * 1 / 2;
-+
-+/* Use min_rtt to help adapt TSO burst size, with smaller min_rtt resulting
-+ * in bigger TSO bursts. We cut the RTT-based allowance in half
-+ * for every 2^9 usec (aka 512 us) of RTT, so that the RTT-based allowance
-+ * is below 1500 bytes after 6 * ~500 usec = 3ms.
-+ */
-+static const u32 bbr_tso_rtt_shift = 9;
-
- /* Pace at ~1% below estimated bw, on average, to reduce queue at bottleneck.
- * In order to help drive the network toward lower queues and low latency while
-@@ -146,13 +207,15 @@ static const int bbr_min_tso_rate = 1200000;
- */
- static const int bbr_pacing_margin_percent = 1;
-
--/* We use a high_gain value of 2/ln(2) because it's the smallest pacing gain
-+/* We use a startup_pacing_gain of 4*ln(2) because it's the smallest value
- * that will allow a smoothly increasing pacing rate that will double each RTT
- * and send the same number of packets per RTT that an un-paced, slow-starting
- * Reno or CUBIC flow would:
- */
--static const int bbr_high_gain = BBR_UNIT * 2885 / 1000 + 1;
--/* The pacing gain of 1/high_gain in BBR_DRAIN is calculated to typically drain
-+static const int bbr_startup_pacing_gain = BBR_UNIT * 277 / 100 + 1;
-+/* The gain for deriving startup cwnd: */
-+static const int bbr_startup_cwnd_gain = BBR_UNIT * 2;
-+/* The pacing gain in BBR_DRAIN is calculated to typically drain
- * the queue created in BBR_STARTUP in a single round:
- */
- static const int bbr_drain_gain = BBR_UNIT * 1000 / 2885;
-@@ -160,13 +223,17 @@ static const int bbr_drain_gain = BBR_UNIT * 1000 / 2885;
- static const int bbr_cwnd_gain = BBR_UNIT * 2;
- /* The pacing_gain values for the PROBE_BW gain cycle, to discover/share bw: */
- static const int bbr_pacing_gain[] = {
-- BBR_UNIT * 5 / 4, /* probe for more available bw */
-- BBR_UNIT * 3 / 4, /* drain queue and/or yield bw to other flows */
-- BBR_UNIT, BBR_UNIT, BBR_UNIT, /* cruise at 1.0*bw to utilize pipe, */
-- BBR_UNIT, BBR_UNIT, BBR_UNIT /* without creating excess queue... */
-+ BBR_UNIT * 5 / 4, /* UP: probe for more available bw */
-+ BBR_UNIT * 91 / 100, /* DOWN: drain queue and/or yield bw */
-+ BBR_UNIT, /* CRUISE: try to use pipe w/ some headroom */
-+ BBR_UNIT, /* REFILL: refill pipe to estimated 100% */
-+};
-+enum bbr_pacing_gain_phase {
-+ BBR_BW_PROBE_UP = 0, /* push up inflight to probe for bw/vol */
-+ BBR_BW_PROBE_DOWN = 1, /* drain excess inflight from the queue */
-+ BBR_BW_PROBE_CRUISE = 2, /* use pipe, w/ headroom in queue/pipe */
-+ BBR_BW_PROBE_REFILL = 3, /* v2: refill the pipe again to 100% */
- };
--/* Randomize the starting gain cycling phase over N phases: */
--static const u32 bbr_cycle_rand = 7;
-
- /* Try to keep at least this many packets in flight, if things go smoothly. For
- * smooth functioning, a sliding window protocol ACKing every other packet
-@@ -174,24 +241,12 @@ static const u32 bbr_cycle_rand = 7;
- */
- static const u32 bbr_cwnd_min_target = 4;
-
--/* To estimate if BBR_STARTUP mode (i.e. high_gain) has filled pipe... */
-+/* To estimate if BBR_STARTUP or BBR_BW_PROBE_UP has filled pipe... */
- /* If bw has increased significantly (1.25x), there may be more bw available: */
- static const u32 bbr_full_bw_thresh = BBR_UNIT * 5 / 4;
- /* But after 3 rounds w/o significant bw growth, estimate pipe is full: */
- static const u32 bbr_full_bw_cnt = 3;
-
--/* "long-term" ("LT") bandwidth estimator parameters... */
--/* The minimum number of rounds in an LT bw sampling interval: */
--static const u32 bbr_lt_intvl_min_rtts = 4;
--/* If lost/delivered ratio > 20%, interval is "lossy" and we may be policed: */
--static const u32 bbr_lt_loss_thresh = 50;
--/* If 2 intervals have a bw ratio <= 1/8, their bw is "consistent": */
--static const u32 bbr_lt_bw_ratio = BBR_UNIT / 8;
--/* If 2 intervals have a bw diff <= 4 Kbit/sec their bw is "consistent": */
--static const u32 bbr_lt_bw_diff = 4000 / 8;
--/* If we estimate we're policed, use lt_bw for this many round trips: */
--static const u32 bbr_lt_bw_max_rtts = 48;
--
- /* Gain factor for adding extra_acked to target cwnd: */
- static const int bbr_extra_acked_gain = BBR_UNIT;
- /* Window length of extra_acked window. */
-@@ -201,8 +256,121 @@ static const u32 bbr_ack_epoch_acked_reset_thresh = 1U << 20;
- /* Time period for clamping cwnd increment due to ack aggregation */
- static const u32 bbr_extra_acked_max_us = 100 * 1000;
-
-+/* Flags to control BBR ECN-related behavior... */
-+
-+/* Ensure ACKs only ACK packets with consistent ECN CE status? */
-+static const bool bbr_precise_ece_ack = true;
-+
-+/* Max RTT (in usec) at which to use sender-side ECN logic.
-+ * Disabled when 0 (ECN allowed at any RTT).
-+ */
-+static const u32 bbr_ecn_max_rtt_us = 5000;
-+
-+/* On losses, scale down inflight and pacing rate by beta scaled by BBR_SCALE.
-+ * No loss response when 0.
-+ */
-+static const u32 bbr_beta = BBR_UNIT * 30 / 100;
-+
-+/* Gain factor for ECN mark ratio samples, scaled by BBR_SCALE (1/16 = 6.25%) */
-+static const u32 bbr_ecn_alpha_gain = BBR_UNIT * 1 / 16;
-+
-+/* The initial value for ecn_alpha; 1.0 allows a flow to respond quickly
-+ * to congestion if the bottleneck is congested when the flow starts up.
-+ */
-+static const u32 bbr_ecn_alpha_init = BBR_UNIT;
-+
-+/* On ECN, cut inflight_lo to (1 - ecn_factor * ecn_alpha) scaled by BBR_SCALE.
-+ * No ECN based bounding when 0.
-+ */
-+static const u32 bbr_ecn_factor = BBR_UNIT * 1 / 3; /* 1/3 = 33% */
-+
-+/* Estimate bw probing has gone too far if CE ratio exceeds this threshold.
-+ * Scaled by BBR_SCALE. Disabled when 0.
-+ */
-+static const u32 bbr_ecn_thresh = BBR_UNIT * 1 / 2; /* 1/2 = 50% */
-+
-+/* If non-zero, if in a cycle with no losses but some ECN marks, after ECN
-+ * clears then make the first round's increment to inflight_hi the following
-+ * fraction of inflight_hi.
-+ */
-+static const u32 bbr_ecn_reprobe_gain = BBR_UNIT * 1 / 2;
-+
-+/* Estimate bw probing has gone too far if loss rate exceeds this level. */
-+static const u32 bbr_loss_thresh = BBR_UNIT * 2 / 100; /* 2% loss */
-+
-+/* Slow down for a packet loss recovered by TLP? */
-+static const bool bbr_loss_probe_recovery = true;
-+
-+/* Exit STARTUP if number of loss marking events in a Recovery round is >= N,
-+ * and loss rate is higher than bbr_loss_thresh.
-+ * Disabled if 0.
-+ */
-+static const u32 bbr_full_loss_cnt = 6;
-+
-+/* Exit STARTUP if number of round trips with ECN mark rate above ecn_thresh
-+ * meets this count.
-+ */
-+static const u32 bbr_full_ecn_cnt = 2;
-+
-+/* Fraction of unutilized headroom to try to leave in path upon high loss. */
-+static const u32 bbr_inflight_headroom = BBR_UNIT * 15 / 100;
-+
-+/* How much do we increase cwnd_gain when probing for bandwidth in
-+ * BBR_BW_PROBE_UP? This specifies the increment in units of
-+ * BBR_UNIT/4. The default is 1, meaning 0.25.
-+ * The min value is 0 (meaning 0.0); max is 3 (meaning 0.75).
-+ */
-+static const u32 bbr_bw_probe_cwnd_gain = 1;
-+
-+/* Max number of packet-timed rounds to wait before probing for bandwidth. If
-+ * we want to tolerate 1% random loss per round, and not have this cut our
-+ * inflight too much, we must probe for bw periodically on roughly this scale.
-+ * If low, limits Reno/CUBIC coexistence; if high, limits loss tolerance.
-+ * We aim to be fair with Reno/CUBIC up to a BDP of at least:
-+ * BDP = 25Mbps * .030sec /(1514bytes) = 61.9 packets
-+ */
-+static const u32 bbr_bw_probe_max_rounds = 63;
-+
-+/* Max amount of randomness to inject in round counting for Reno-coexistence.
-+ */
-+static const u32 bbr_bw_probe_rand_rounds = 2;
-+
-+/* Use BBR-native probe time scale starting at this many usec.
-+ * We aim to be fair with Reno/CUBIC up to an inter-loss time epoch of at least:
-+ * BDP*RTT = 25Mbps * .030sec /(1514bytes) * 0.030sec = 1.9 secs
-+ */
-+static const u32 bbr_bw_probe_base_us = 2 * USEC_PER_SEC; /* 2 secs */
-+
-+/* Use BBR-native probes spread over this many usec: */
-+static const u32 bbr_bw_probe_rand_us = 1 * USEC_PER_SEC; /* 1 secs */
-+
-+/* Use fast path if app-limited, no loss/ECN, and target cwnd was reached? */
-+static const bool bbr_fast_path = true;
-+
-+/* Use fast ack mode? */
-+static const bool bbr_fast_ack_mode = true;
-+
-+static u32 bbr_max_bw(const struct sock *sk);
-+static u32 bbr_bw(const struct sock *sk);
-+static void bbr_exit_probe_rtt(struct sock *sk);
-+static void bbr_reset_congestion_signals(struct sock *sk);
-+static void bbr_run_loss_probe_recovery(struct sock *sk);
-+
- static void bbr_check_probe_rtt_done(struct sock *sk);
-
-+/* This connection can use ECN if both endpoints have signaled ECN support in
-+ * the handshake and the per-route settings indicated this is a
-+ * shallow-threshold ECN environment, meaning both:
-+ * (a) ECN CE marks indicate low-latency/shallow-threshold congestion, and
-+ * (b) TCP endpoints provide precise ACKs that only ACK data segments
-+ * with consistent ECN CE status
-+ */
-+static bool bbr_can_use_ecn(const struct sock *sk)
-+{
-+ return (tcp_sk(sk)->ecn_flags & TCP_ECN_OK) &&
-+ (tcp_sk(sk)->ecn_flags & TCP_ECN_LOW);
-+}
-+
- /* Do we estimate that STARTUP filled the pipe? */
- static bool bbr_full_bw_reached(const struct sock *sk)
- {
-@@ -214,17 +382,17 @@ static bool bbr_full_bw_reached(const struct sock *sk)
- /* Return the windowed max recent bandwidth sample, in pkts/uS << BW_SCALE. */
- static u32 bbr_max_bw(const struct sock *sk)
- {
-- struct bbr *bbr = inet_csk_ca(sk);
-+ const struct bbr *bbr = inet_csk_ca(sk);
-
-- return minmax_get(&bbr->bw);
-+ return max(bbr->bw_hi[0], bbr->bw_hi[1]);
- }
-
- /* Return the estimated bandwidth of the path, in pkts/uS << BW_SCALE. */
- static u32 bbr_bw(const struct sock *sk)
- {
-- struct bbr *bbr = inet_csk_ca(sk);
-+ const struct bbr *bbr = inet_csk_ca(sk);
-
-- return bbr->lt_use_bw ? bbr->lt_bw : bbr_max_bw(sk);
-+ return min(bbr_max_bw(sk), bbr->bw_lo);
- }
-
- /* Return maximum extra acked in past k-2k round trips,
-@@ -241,15 +409,23 @@ static u16 bbr_extra_acked(const struct sock *sk)
- * The order here is chosen carefully to avoid overflow of u64. This should
- * work for input rates of up to 2.9Tbit/sec and gain of 2.89x.
- */
--static u64 bbr_rate_bytes_per_sec(struct sock *sk, u64 rate, int gain)
-+static u64 bbr_rate_bytes_per_sec(struct sock *sk, u64 rate, int gain,
-+ int margin)
- {
- unsigned int mss = tcp_sk(sk)->mss_cache;
-
- rate *= mss;
- rate *= gain;
- rate >>= BBR_SCALE;
-- rate *= USEC_PER_SEC / 100 * (100 - bbr_pacing_margin_percent);
-- return rate >> BW_SCALE;
-+ rate *= USEC_PER_SEC / 100 * (100 - margin);
-+ rate >>= BW_SCALE;
-+ rate = max(rate, 1ULL);
-+ return rate;
-+}
-+
-+static u64 bbr_bw_bytes_per_sec(struct sock *sk, u64 rate)
-+{
-+ return bbr_rate_bytes_per_sec(sk, rate, BBR_UNIT, 0);
- }
-
- /* Convert a BBR bw and gain factor to a pacing rate in bytes per second. */
-@@ -257,12 +433,13 @@ static unsigned long bbr_bw_to_pacing_rate(struct sock *sk, u32 bw, int gain)
- {
- u64 rate = bw;
-
-- rate = bbr_rate_bytes_per_sec(sk, rate, gain);
-+ rate = bbr_rate_bytes_per_sec(sk, rate, gain,
-+ bbr_pacing_margin_percent);
- rate = min_t(u64, rate, READ_ONCE(sk->sk_max_pacing_rate));
- return rate;
- }
-
--/* Initialize pacing rate to: high_gain * init_cwnd / RTT. */
-+/* Initialize pacing rate to: startup_pacing_gain * init_cwnd / RTT. */
- static void bbr_init_pacing_rate_from_rtt(struct sock *sk)
- {
- struct tcp_sock *tp = tcp_sk(sk);
-@@ -279,7 +456,7 @@ static void bbr_init_pacing_rate_from_rtt(struct sock *sk)
- bw = (u64)tcp_snd_cwnd(tp) * BW_UNIT;
- do_div(bw, rtt_us);
- WRITE_ONCE(sk->sk_pacing_rate,
-- bbr_bw_to_pacing_rate(sk, bw, bbr_high_gain));
-+ bbr_bw_to_pacing_rate(sk, bw, bbr_param(sk, startup_pacing_gain)));
- }
-
- /* Pace using current bw estimate and a gain factor. */
-@@ -295,26 +472,48 @@ static void bbr_set_pacing_rate(struct sock *sk, u32 bw, int gain)
- WRITE_ONCE(sk->sk_pacing_rate, rate);
- }
-
--/* override sysctl_tcp_min_tso_segs */
--__bpf_kfunc static u32 bbr_min_tso_segs(struct sock *sk)
-+/* Return the number of segments BBR would like in a TSO/GSO skb, given a
-+ * particular max gso size as a constraint. TODO: make this simpler and more
-+ * consistent by switching bbr to just call tcp_tso_autosize().
-+ */
-+static u32 bbr_tso_segs_generic(struct sock *sk, unsigned int mss_now,
-+ u32 gso_max_size)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 segs, r;
-+ u64 bytes;
-+
-+ /* Budget a TSO/GSO burst size allowance based on bw (pacing_rate). */
-+ bytes = READ_ONCE(sk->sk_pacing_rate) >> READ_ONCE(sk->sk_pacing_shift);
-+
-+ /* Budget a TSO/GSO burst size allowance based on min_rtt. For every
-+ * K = 2^tso_rtt_shift microseconds of min_rtt, halve the burst.
-+ * The min_rtt-based burst allowance is: 64 KBytes / 2^(min_rtt/K)
-+ */
-+ if (bbr_param(sk, tso_rtt_shift)) {
-+ r = bbr->min_rtt_us >> bbr_param(sk, tso_rtt_shift);
-+ if (r < BITS_PER_TYPE(u32)) /* prevent undefined behavior */
-+ bytes += GSO_LEGACY_MAX_SIZE >> r;
-+ }
-+
-+ bytes = min_t(u32, bytes, gso_max_size - 1 - MAX_TCP_HEADER);
-+ segs = max_t(u32, bytes / mss_now,
-+ sock_net(sk)->ipv4.sysctl_tcp_min_tso_segs);
-+ return segs;
-+}
-+
-+/* Custom tcp_tso_autosize() for BBR, used at transmit time to cap skb size. */
-+__bpf_kfunc static u32 bbr_tso_segs(struct sock *sk, unsigned int mss_now)
- {
-- return READ_ONCE(sk->sk_pacing_rate) < (bbr_min_tso_rate >> 3) ? 1 : 2;
-+ return bbr_tso_segs_generic(sk, mss_now, sk->sk_gso_max_size);
- }
-
-+/* Like bbr_tso_segs(), using mss_cache, ignoring driver's sk_gso_max_size. */
- static u32 bbr_tso_segs_goal(struct sock *sk)
- {
- struct tcp_sock *tp = tcp_sk(sk);
-- u32 segs, bytes;
--
-- /* Sort of tcp_tso_autosize() but ignoring
-- * driver provided sk_gso_max_size.
-- */
-- bytes = min_t(unsigned long,
-- READ_ONCE(sk->sk_pacing_rate) >> READ_ONCE(sk->sk_pacing_shift),
-- GSO_LEGACY_MAX_SIZE - 1 - MAX_TCP_HEADER);
-- segs = max_t(u32, bytes / tp->mss_cache, bbr_min_tso_segs(sk));
-
-- return min(segs, 0x7FU);
-+ return bbr_tso_segs_generic(sk, tp->mss_cache, GSO_LEGACY_MAX_SIZE);
- }
-
- /* Save "last known good" cwnd so we can restore it after losses or PROBE_RTT */
-@@ -334,7 +533,9 @@ __bpf_kfunc static void bbr_cwnd_event(struct sock *sk, enum tcp_ca_event event)
- struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-
-- if (event == CA_EVENT_TX_START && tp->app_limited) {
-+ if (event == CA_EVENT_TX_START) {
-+ if (!tp->app_limited)
-+ return;
- bbr->idle_restart = 1;
- bbr->ack_epoch_mstamp = tp->tcp_mstamp;
- bbr->ack_epoch_acked = 0;
-@@ -345,6 +546,16 @@ __bpf_kfunc static void bbr_cwnd_event(struct sock *sk, enum tcp_ca_event event)
- bbr_set_pacing_rate(sk, bbr_bw(sk), BBR_UNIT);
- else if (bbr->mode == BBR_PROBE_RTT)
- bbr_check_probe_rtt_done(sk);
-+ } else if ((event == CA_EVENT_ECN_IS_CE ||
-+ event == CA_EVENT_ECN_NO_CE) &&
-+ bbr_can_use_ecn(sk) &&
-+ bbr_param(sk, precise_ece_ack)) {
-+ u32 state = bbr->ce_state;
-+ dctcp_ece_ack_update(sk, event, &bbr->prior_rcv_nxt, &state);
-+ bbr->ce_state = state;
-+ } else if (event == CA_EVENT_TLP_RECOVERY &&
-+ bbr_param(sk, loss_probe_recovery)) {
-+ bbr_run_loss_probe_recovery(sk);
- }
- }
-
-@@ -367,10 +578,10 @@ static u32 bbr_bdp(struct sock *sk, u32 bw, int gain)
- * default. This should only happen when the connection is not using TCP
- * timestamps and has retransmitted all of the SYN/SYNACK/data packets
- * ACKed so far. In this case, an RTO can cut cwnd to 1, in which
-- * case we need to slow-start up toward something safe: TCP_INIT_CWND.
-+ * case we need to slow-start up toward something safe: initial cwnd.
- */
- if (unlikely(bbr->min_rtt_us == ~0U)) /* no valid RTT samples yet? */
-- return TCP_INIT_CWND; /* be safe: cap at default initial cwnd*/
-+ return bbr->init_cwnd; /* be safe: cap at initial cwnd */
-
- w = (u64)bw * bbr->min_rtt_us;
-
-@@ -387,23 +598,23 @@ static u32 bbr_bdp(struct sock *sk, u32 bw, int gain)
- * - one skb in sending host Qdisc,
- * - one skb in sending host TSO/GSO engine
- * - one skb being received by receiver host LRO/GRO/delayed-ACK engine
-- * Don't worry, at low rates (bbr_min_tso_rate) this won't bloat cwnd because
-- * in such cases tso_segs_goal is 1. The minimum cwnd is 4 packets,
-+ * Don't worry, at low rates this won't bloat cwnd because
-+ * in such cases tso_segs_goal is small. The minimum cwnd is 4 packets,
- * which allows 2 outstanding 2-packet sequences, to try to keep pipe
- * full even with ACK-every-other-packet delayed ACKs.
- */
- static u32 bbr_quantization_budget(struct sock *sk, u32 cwnd)
- {
- struct bbr *bbr = inet_csk_ca(sk);
-+ u32 tso_segs_goal;
-
-- /* Allow enough full-sized skbs in flight to utilize end systems. */
-- cwnd += 3 * bbr_tso_segs_goal(sk);
--
-- /* Reduce delayed ACKs by rounding up cwnd to the next even number. */
-- cwnd = (cwnd + 1) & ~1U;
-+ tso_segs_goal = 3 * bbr_tso_segs_goal(sk);
-
-+ /* Allow enough full-sized skbs in flight to utilize end systems. */
-+ cwnd = max_t(u32, cwnd, tso_segs_goal);
-+ cwnd = max_t(u32, cwnd, bbr_param(sk, cwnd_min_target));
- /* Ensure gain cycling gets inflight above BDP even for small BDPs. */
-- if (bbr->mode == BBR_PROBE_BW && bbr->cycle_idx == 0)
-+ if (bbr->mode == BBR_PROBE_BW && bbr->cycle_idx == BBR_BW_PROBE_UP)
- cwnd += 2;
-
- return cwnd;
-@@ -458,10 +669,10 @@ static u32 bbr_ack_aggregation_cwnd(struct sock *sk)
- {
- u32 max_aggr_cwnd, aggr_cwnd = 0;
-
-- if (bbr_extra_acked_gain && bbr_full_bw_reached(sk)) {
-+ if (bbr_param(sk, extra_acked_gain)) {
- max_aggr_cwnd = ((u64)bbr_bw(sk) * bbr_extra_acked_max_us)
- / BW_UNIT;
-- aggr_cwnd = (bbr_extra_acked_gain * bbr_extra_acked(sk))
-+ aggr_cwnd = (bbr_param(sk, extra_acked_gain) * bbr_extra_acked(sk))
- >> BBR_SCALE;
- aggr_cwnd = min(aggr_cwnd, max_aggr_cwnd);
- }
-@@ -469,66 +680,27 @@ static u32 bbr_ack_aggregation_cwnd(struct sock *sk)
- return aggr_cwnd;
- }
-
--/* An optimization in BBR to reduce losses: On the first round of recovery, we
-- * follow the packet conservation principle: send P packets per P packets acked.
-- * After that, we slow-start and send at most 2*P packets per P packets acked.
-- * After recovery finishes, or upon undo, we restore the cwnd we had when
-- * recovery started (capped by the target cwnd based on estimated BDP).
-- *
-- * TODO(ycheng/ncardwell): implement a rate-based approach.
-- */
--static bool bbr_set_cwnd_to_recover_or_restore(
-- struct sock *sk, const struct rate_sample *rs, u32 acked, u32 *new_cwnd)
-+/* Returns the cwnd for PROBE_RTT mode. */
-+static u32 bbr_probe_rtt_cwnd(struct sock *sk)
- {
-- struct tcp_sock *tp = tcp_sk(sk);
-- struct bbr *bbr = inet_csk_ca(sk);
-- u8 prev_state = bbr->prev_ca_state, state = inet_csk(sk)->icsk_ca_state;
-- u32 cwnd = tcp_snd_cwnd(tp);
--
-- /* An ACK for P pkts should release at most 2*P packets. We do this
-- * in two steps. First, here we deduct the number of lost packets.
-- * Then, in bbr_set_cwnd() we slow start up toward the target cwnd.
-- */
-- if (rs->losses > 0)
-- cwnd = max_t(s32, cwnd - rs->losses, 1);
--
-- if (state == TCP_CA_Recovery && prev_state != TCP_CA_Recovery) {
-- /* Starting 1st round of Recovery, so do packet conservation. */
-- bbr->packet_conservation = 1;
-- bbr->next_rtt_delivered = tp->delivered; /* start round now */
-- /* Cut unused cwnd from app behavior, TSQ, or TSO deferral: */
-- cwnd = tcp_packets_in_flight(tp) + acked;
-- } else if (prev_state >= TCP_CA_Recovery && state < TCP_CA_Recovery) {
-- /* Exiting loss recovery; restore cwnd saved before recovery. */
-- cwnd = max(cwnd, bbr->prior_cwnd);
-- bbr->packet_conservation = 0;
-- }
-- bbr->prev_ca_state = state;
--
-- if (bbr->packet_conservation) {
-- *new_cwnd = max(cwnd, tcp_packets_in_flight(tp) + acked);
-- return true; /* yes, using packet conservation */
-- }
-- *new_cwnd = cwnd;
-- return false;
-+ return max_t(u32, bbr_param(sk, cwnd_min_target),
-+ bbr_bdp(sk, bbr_bw(sk), bbr_param(sk, probe_rtt_cwnd_gain)));
- }
-
- /* Slow-start up toward target cwnd (if bw estimate is growing, or packet loss
- * has drawn us down below target), or snap down to target if we're above it.
- */
- static void bbr_set_cwnd(struct sock *sk, const struct rate_sample *rs,
-- u32 acked, u32 bw, int gain)
-+ u32 acked, u32 bw, int gain, u32 cwnd,
-+ struct bbr_context *ctx)
- {
- struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-- u32 cwnd = tcp_snd_cwnd(tp), target_cwnd = 0;
-+ u32 target_cwnd = 0;
-
- if (!acked)
- goto done; /* no packet fully ACKed; just apply caps */
-
-- if (bbr_set_cwnd_to_recover_or_restore(sk, rs, acked, &cwnd))
-- goto done;
--
- target_cwnd = bbr_bdp(sk, bw, gain);
-
- /* Increment the cwnd to account for excess ACKed data that seems
-@@ -537,74 +709,26 @@ static void bbr_set_cwnd(struct sock *sk, const struct rate_sample *rs,
- target_cwnd += bbr_ack_aggregation_cwnd(sk);
- target_cwnd = bbr_quantization_budget(sk, target_cwnd);
-
-- /* If we're below target cwnd, slow start cwnd toward target cwnd. */
-- if (bbr_full_bw_reached(sk)) /* only cut cwnd if we filled the pipe */
-- cwnd = min(cwnd + acked, target_cwnd);
-- else if (cwnd < target_cwnd || tp->delivered < TCP_INIT_CWND)
-- cwnd = cwnd + acked;
-- cwnd = max(cwnd, bbr_cwnd_min_target);
-+ /* Update cwnd and enable fast path if cwnd reaches target_cwnd. */
-+ bbr->try_fast_path = 0;
-+ if (bbr_full_bw_reached(sk)) { /* only cut cwnd if we filled the pipe */
-+ cwnd += acked;
-+ if (cwnd >= target_cwnd) {
-+ cwnd = target_cwnd;
-+ bbr->try_fast_path = 1;
-+ }
-+ } else if (cwnd < target_cwnd || cwnd < 2 * bbr->init_cwnd) {
-+ cwnd += acked;
-+ } else {
-+ bbr->try_fast_path = 1;
-+ }
-
-+ cwnd = max_t(u32, cwnd, bbr_param(sk, cwnd_min_target));
- done:
-- tcp_snd_cwnd_set(tp, min(cwnd, tp->snd_cwnd_clamp)); /* apply global cap */
-+ tcp_snd_cwnd_set(tp, min(cwnd, tp->snd_cwnd_clamp)); /* global cap */
- if (bbr->mode == BBR_PROBE_RTT) /* drain queue, refresh min_rtt */
-- tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp), bbr_cwnd_min_target));
--}
--
--/* End cycle phase if it's time and/or we hit the phase's in-flight target. */
--static bool bbr_is_next_cycle_phase(struct sock *sk,
-- const struct rate_sample *rs)
--{
-- struct tcp_sock *tp = tcp_sk(sk);
-- struct bbr *bbr = inet_csk_ca(sk);
-- bool is_full_length =
-- tcp_stamp_us_delta(tp->delivered_mstamp, bbr->cycle_mstamp) >
-- bbr->min_rtt_us;
-- u32 inflight, bw;
--
-- /* The pacing_gain of 1.0 paces at the estimated bw to try to fully
-- * use the pipe without increasing the queue.
-- */
-- if (bbr->pacing_gain == BBR_UNIT)
-- return is_full_length; /* just use wall clock time */
--
-- inflight = bbr_packets_in_net_at_edt(sk, rs->prior_in_flight);
-- bw = bbr_max_bw(sk);
--
-- /* A pacing_gain > 1.0 probes for bw by trying to raise inflight to at
-- * least pacing_gain*BDP; this may take more than min_rtt if min_rtt is
-- * small (e.g. on a LAN). We do not persist if packets are lost, since
-- * a path with small buffers may not hold that much.
-- */
-- if (bbr->pacing_gain > BBR_UNIT)
-- return is_full_length &&
-- (rs->losses || /* perhaps pacing_gain*BDP won't fit */
-- inflight >= bbr_inflight(sk, bw, bbr->pacing_gain));
--
-- /* A pacing_gain < 1.0 tries to drain extra queue we added if bw
-- * probing didn't find more bw. If inflight falls to match BDP then we
-- * estimate queue is drained; persisting would underutilize the pipe.
-- */
-- return is_full_length ||
-- inflight <= bbr_inflight(sk, bw, BBR_UNIT);
--}
--
--static void bbr_advance_cycle_phase(struct sock *sk)
--{
-- struct tcp_sock *tp = tcp_sk(sk);
-- struct bbr *bbr = inet_csk_ca(sk);
--
-- bbr->cycle_idx = (bbr->cycle_idx + 1) & (CYCLE_LEN - 1);
-- bbr->cycle_mstamp = tp->delivered_mstamp;
--}
--
--/* Gain cycling: cycle pacing gain to converge to fair share of available bw. */
--static void bbr_update_cycle_phase(struct sock *sk,
-- const struct rate_sample *rs)
--{
-- struct bbr *bbr = inet_csk_ca(sk);
--
-- if (bbr->mode == BBR_PROBE_BW && bbr_is_next_cycle_phase(sk, rs))
-- bbr_advance_cycle_phase(sk);
-+ tcp_snd_cwnd_set(tp, min_t(u32, tcp_snd_cwnd(tp),
-+ bbr_probe_rtt_cwnd(sk)));
- }
-
- static void bbr_reset_startup_mode(struct sock *sk)
-@@ -614,191 +738,49 @@ static void bbr_reset_startup_mode(struct sock *sk)
- bbr->mode = BBR_STARTUP;
- }
-
--static void bbr_reset_probe_bw_mode(struct sock *sk)
--{
-- struct bbr *bbr = inet_csk_ca(sk);
--
-- bbr->mode = BBR_PROBE_BW;
-- bbr->cycle_idx = CYCLE_LEN - 1 - get_random_u32_below(bbr_cycle_rand);
-- bbr_advance_cycle_phase(sk); /* flip to next phase of gain cycle */
--}
--
--static void bbr_reset_mode(struct sock *sk)
--{
-- if (!bbr_full_bw_reached(sk))
-- bbr_reset_startup_mode(sk);
-- else
-- bbr_reset_probe_bw_mode(sk);
--}
--
--/* Start a new long-term sampling interval. */
--static void bbr_reset_lt_bw_sampling_interval(struct sock *sk)
--{
-- struct tcp_sock *tp = tcp_sk(sk);
-- struct bbr *bbr = inet_csk_ca(sk);
--
-- bbr->lt_last_stamp = div_u64(tp->delivered_mstamp, USEC_PER_MSEC);
-- bbr->lt_last_delivered = tp->delivered;
-- bbr->lt_last_lost = tp->lost;
-- bbr->lt_rtt_cnt = 0;
--}
--
--/* Completely reset long-term bandwidth sampling. */
--static void bbr_reset_lt_bw_sampling(struct sock *sk)
--{
-- struct bbr *bbr = inet_csk_ca(sk);
--
-- bbr->lt_bw = 0;
-- bbr->lt_use_bw = 0;
-- bbr->lt_is_sampling = false;
-- bbr_reset_lt_bw_sampling_interval(sk);
--}
--
--/* Long-term bw sampling interval is done. Estimate whether we're policed. */
--static void bbr_lt_bw_interval_done(struct sock *sk, u32 bw)
--{
-- struct bbr *bbr = inet_csk_ca(sk);
-- u32 diff;
--
-- if (bbr->lt_bw) { /* do we have bw from a previous interval? */
-- /* Is new bw close to the lt_bw from the previous interval? */
-- diff = abs(bw - bbr->lt_bw);
-- if ((diff * BBR_UNIT <= bbr_lt_bw_ratio * bbr->lt_bw) ||
-- (bbr_rate_bytes_per_sec(sk, diff, BBR_UNIT) <=
-- bbr_lt_bw_diff)) {
-- /* All criteria are met; estimate we're policed. */
-- bbr->lt_bw = (bw + bbr->lt_bw) >> 1; /* avg 2 intvls */
-- bbr->lt_use_bw = 1;
-- bbr->pacing_gain = BBR_UNIT; /* try to avoid drops */
-- bbr->lt_rtt_cnt = 0;
-- return;
-- }
-- }
-- bbr->lt_bw = bw;
-- bbr_reset_lt_bw_sampling_interval(sk);
--}
--
--/* Token-bucket traffic policers are common (see "An Internet-Wide Analysis of
-- * Traffic Policing", SIGCOMM 2016). BBR detects token-bucket policers and
-- * explicitly models their policed rate, to reduce unnecessary losses. We
-- * estimate that we're policed if we see 2 consecutive sampling intervals with
-- * consistent throughput and high packet loss. If we think we're being policed,
-- * set lt_bw to the "long-term" average delivery rate from those 2 intervals.
-+/* See if we have reached next round trip. Upon start of the new round,
-+ * returns packets delivered since previous round start plus this ACK.
- */
--static void bbr_lt_bw_sampling(struct sock *sk, const struct rate_sample *rs)
--{
-- struct tcp_sock *tp = tcp_sk(sk);
-- struct bbr *bbr = inet_csk_ca(sk);
-- u32 lost, delivered;
-- u64 bw;
-- u32 t;
--
-- if (bbr->lt_use_bw) { /* already using long-term rate, lt_bw? */
-- if (bbr->mode == BBR_PROBE_BW && bbr->round_start &&
-- ++bbr->lt_rtt_cnt >= bbr_lt_bw_max_rtts) {
-- bbr_reset_lt_bw_sampling(sk); /* stop using lt_bw */
-- bbr_reset_probe_bw_mode(sk); /* restart gain cycling */
-- }
-- return;
-- }
--
-- /* Wait for the first loss before sampling, to let the policer exhaust
-- * its tokens and estimate the steady-state rate allowed by the policer.
-- * Starting samples earlier includes bursts that over-estimate the bw.
-- */
-- if (!bbr->lt_is_sampling) {
-- if (!rs->losses)
-- return;
-- bbr_reset_lt_bw_sampling_interval(sk);
-- bbr->lt_is_sampling = true;
-- }
--
-- /* To avoid underestimates, reset sampling if we run out of data. */
-- if (rs->is_app_limited) {
-- bbr_reset_lt_bw_sampling(sk);
-- return;
-- }
--
-- if (bbr->round_start)
-- bbr->lt_rtt_cnt++; /* count round trips in this interval */
-- if (bbr->lt_rtt_cnt < bbr_lt_intvl_min_rtts)
-- return; /* sampling interval needs to be longer */
-- if (bbr->lt_rtt_cnt > 4 * bbr_lt_intvl_min_rtts) {
-- bbr_reset_lt_bw_sampling(sk); /* interval is too long */
-- return;
-- }
--
-- /* End sampling interval when a packet is lost, so we estimate the
-- * policer tokens were exhausted. Stopping the sampling before the
-- * tokens are exhausted under-estimates the policed rate.
-- */
-- if (!rs->losses)
-- return;
--
-- /* Calculate packets lost and delivered in sampling interval. */
-- lost = tp->lost - bbr->lt_last_lost;
-- delivered = tp->delivered - bbr->lt_last_delivered;
-- /* Is loss rate (lost/delivered) >= lt_loss_thresh? If not, wait. */
-- if (!delivered || (lost << BBR_SCALE) < bbr_lt_loss_thresh * delivered)
-- return;
--
-- /* Find average delivery rate in this sampling interval. */
-- t = div_u64(tp->delivered_mstamp, USEC_PER_MSEC) - bbr->lt_last_stamp;
-- if ((s32)t < 1)
-- return; /* interval is less than one ms, so wait */
-- /* Check if can multiply without overflow */
-- if (t >= ~0U / USEC_PER_MSEC) {
-- bbr_reset_lt_bw_sampling(sk); /* interval too long; reset */
-- return;
-- }
-- t *= USEC_PER_MSEC;
-- bw = (u64)delivered * BW_UNIT;
-- do_div(bw, t);
-- bbr_lt_bw_interval_done(sk, bw);
--}
--
--/* Estimate the bandwidth based on how fast packets are delivered */
--static void bbr_update_bw(struct sock *sk, const struct rate_sample *rs)
-+static u32 bbr_update_round_start(struct sock *sk,
-+ const struct rate_sample *rs, struct bbr_context *ctx)
- {
- struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-- u64 bw;
-+ u32 round_delivered = 0;
-
- bbr->round_start = 0;
-- if (rs->delivered < 0 || rs->interval_us <= 0)
-- return; /* Not a valid observation */
-
- /* See if we've reached the next RTT */
-- if (!before(rs->prior_delivered, bbr->next_rtt_delivered)) {
-+ if (rs->interval_us > 0 &&
-+ !before(rs->prior_delivered, bbr->next_rtt_delivered)) {
-+ round_delivered = tp->delivered - bbr->next_rtt_delivered;
- bbr->next_rtt_delivered = tp->delivered;
-- bbr->rtt_cnt++;
- bbr->round_start = 1;
-- bbr->packet_conservation = 0;
- }
-+ return round_delivered;
-+}
-
-- bbr_lt_bw_sampling(sk, rs);
-+/* Calculate the bandwidth based on how fast packets are delivered */
-+static void bbr_calculate_bw_sample(struct sock *sk,
-+ const struct rate_sample *rs, struct bbr_context *ctx)
-+{
-+ u64 bw = 0;
-
- /* Divide delivered by the interval to find a (lower bound) bottleneck
- * bandwidth sample. Delivered is in packets and interval_us in uS and
- * ratio will be <<1 for most connections. So delivered is first scaled.
-+ * Round up to allow growth at low rates, even with integer division.
- */
-- bw = div64_long((u64)rs->delivered * BW_UNIT, rs->interval_us);
--
-- /* If this sample is application-limited, it is likely to have a very
-- * low delivered count that represents application behavior rather than
-- * the available network rate. Such a sample could drag down estimated
-- * bw, causing needless slow-down. Thus, to continue to send at the
-- * last measured network rate, we filter out app-limited samples unless
-- * they describe the path bw at least as well as our bw model.
-- *
-- * So the goal during app-limited phase is to proceed with the best
-- * network rate no matter how long. We automatically leave this
-- * phase when app writes faster than the network can deliver :)
-- */
-- if (!rs->is_app_limited || bw >= bbr_max_bw(sk)) {
-- /* Incorporate new sample into our max bw filter. */
-- minmax_running_max(&bbr->bw, bbr_bw_rtts, bbr->rtt_cnt, bw);
-+ if (rs->interval_us > 0) {
-+ if (WARN_ONCE(rs->delivered < 0,
-+ "negative delivered: %d interval_us: %ld\n",
-+ rs->delivered, rs->interval_us))
-+ return;
-+
-+ bw = DIV_ROUND_UP_ULL((u64)rs->delivered * BW_UNIT, rs->interval_us);
- }
-+
-+ ctx->sample_bw = bw;
- }
-
- /* Estimates the windowed max degree of ack aggregation.
-@@ -812,7 +794,7 @@ static void bbr_update_bw(struct sock *sk, const struct rate_sample *rs)
- *
- * Max extra_acked is clamped by cwnd and bw * bbr_extra_acked_max_us (100 ms).
- * Max filter is an approximate sliding window of 5-10 (packet timed) round
-- * trips.
-+ * trips for non-startup phase, and 1-2 round trips for startup.
- */
- static void bbr_update_ack_aggregation(struct sock *sk,
- const struct rate_sample *rs)
-@@ -820,15 +802,19 @@ static void bbr_update_ack_aggregation(struct sock *sk,
- u32 epoch_us, expected_acked, extra_acked;
- struct bbr *bbr = inet_csk_ca(sk);
- struct tcp_sock *tp = tcp_sk(sk);
-+ u32 extra_acked_win_rtts_thresh = bbr_param(sk, extra_acked_win_rtts);
-
-- if (!bbr_extra_acked_gain || rs->acked_sacked <= 0 ||
-+ if (!bbr_param(sk, extra_acked_gain) || rs->acked_sacked <= 0 ||
- rs->delivered < 0 || rs->interval_us <= 0)
- return;
-
- if (bbr->round_start) {
- bbr->extra_acked_win_rtts = min(0x1F,
- bbr->extra_acked_win_rtts + 1);
-- if (bbr->extra_acked_win_rtts >= bbr_extra_acked_win_rtts) {
-+ if (!bbr_full_bw_reached(sk))
-+ extra_acked_win_rtts_thresh = 1;
-+ if (bbr->extra_acked_win_rtts >=
-+ extra_acked_win_rtts_thresh) {
- bbr->extra_acked_win_rtts = 0;
- bbr->extra_acked_win_idx = bbr->extra_acked_win_idx ?
- 0 : 1;
-@@ -862,49 +848,6 @@ static void bbr_update_ack_aggregation(struct sock *sk,
- bbr->extra_acked[bbr->extra_acked_win_idx] = extra_acked;
- }
-
--/* Estimate when the pipe is full, using the change in delivery rate: BBR
-- * estimates that STARTUP filled the pipe if the estimated bw hasn't changed by
-- * at least bbr_full_bw_thresh (25%) after bbr_full_bw_cnt (3) non-app-limited
-- * rounds. Why 3 rounds: 1: rwin autotuning grows the rwin, 2: we fill the
-- * higher rwin, 3: we get higher delivery rate samples. Or transient
-- * cross-traffic or radio noise can go away. CUBIC Hystart shares a similar
-- * design goal, but uses delay and inter-ACK spacing instead of bandwidth.
-- */
--static void bbr_check_full_bw_reached(struct sock *sk,
-- const struct rate_sample *rs)
--{
-- struct bbr *bbr = inet_csk_ca(sk);
-- u32 bw_thresh;
--
-- if (bbr_full_bw_reached(sk) || !bbr->round_start || rs->is_app_limited)
-- return;
--
-- bw_thresh = (u64)bbr->full_bw * bbr_full_bw_thresh >> BBR_SCALE;
-- if (bbr_max_bw(sk) >= bw_thresh) {
-- bbr->full_bw = bbr_max_bw(sk);
-- bbr->full_bw_cnt = 0;
-- return;
-- }
-- ++bbr->full_bw_cnt;
-- bbr->full_bw_reached = bbr->full_bw_cnt >= bbr_full_bw_cnt;
--}
--
--/* If pipe is probably full, drain the queue and then enter steady-state. */
--static void bbr_check_drain(struct sock *sk, const struct rate_sample *rs)
--{
-- struct bbr *bbr = inet_csk_ca(sk);
--
-- if (bbr->mode == BBR_STARTUP && bbr_full_bw_reached(sk)) {
-- bbr->mode = BBR_DRAIN; /* drain queue we created */
-- tcp_sk(sk)->snd_ssthresh =
-- bbr_inflight(sk, bbr_max_bw(sk), BBR_UNIT);
-- } /* fall through to check if in-flight is already small: */
-- if (bbr->mode == BBR_DRAIN &&
-- bbr_packets_in_net_at_edt(sk, tcp_packets_in_flight(tcp_sk(sk))) <=
-- bbr_inflight(sk, bbr_max_bw(sk), BBR_UNIT))
-- bbr_reset_probe_bw_mode(sk); /* we estimate queue is drained */
--}
--
- static void bbr_check_probe_rtt_done(struct sock *sk)
- {
- struct tcp_sock *tp = tcp_sk(sk);
-@@ -914,9 +857,9 @@ static void bbr_check_probe_rtt_done(struct sock *sk)
- after(tcp_jiffies32, bbr->probe_rtt_done_stamp)))
- return;
-
-- bbr->min_rtt_stamp = tcp_jiffies32; /* wait a while until PROBE_RTT */
-+ bbr->probe_rtt_min_stamp = tcp_jiffies32; /* schedule next PROBE_RTT */
- tcp_snd_cwnd_set(tp, max(tcp_snd_cwnd(tp), bbr->prior_cwnd));
-- bbr_reset_mode(sk);
-+ bbr_exit_probe_rtt(sk);
- }
-
- /* The goal of PROBE_RTT mode is to have BBR flows cooperatively and
-@@ -942,23 +885,35 @@ static void bbr_update_min_rtt(struct sock *sk, const struct rate_sample *rs)
- {
- struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-- bool filter_expired;
-+ bool probe_rtt_expired, min_rtt_expired;
-+ u32 expire;
-
-- /* Track min RTT seen in the min_rtt_win_sec filter window: */
-- filter_expired = after(tcp_jiffies32,
-- bbr->min_rtt_stamp + bbr_min_rtt_win_sec * HZ);
-+ /* Track min RTT in probe_rtt_win_ms to time next PROBE_RTT state. */
-+ expire = bbr->probe_rtt_min_stamp +
-+ msecs_to_jiffies(bbr_param(sk, probe_rtt_win_ms));
-+ probe_rtt_expired = after(tcp_jiffies32, expire);
- if (rs->rtt_us >= 0 &&
-- (rs->rtt_us < bbr->min_rtt_us ||
-- (filter_expired && !rs->is_ack_delayed))) {
-- bbr->min_rtt_us = rs->rtt_us;
-- bbr->min_rtt_stamp = tcp_jiffies32;
-+ (rs->rtt_us < bbr->probe_rtt_min_us ||
-+ (probe_rtt_expired && !rs->is_ack_delayed))) {
-+ bbr->probe_rtt_min_us = rs->rtt_us;
-+ bbr->probe_rtt_min_stamp = tcp_jiffies32;
-+ }
-+ /* Track min RTT seen in the min_rtt_win_sec filter window: */
-+ expire = bbr->min_rtt_stamp + bbr_param(sk, min_rtt_win_sec) * HZ;
-+ min_rtt_expired = after(tcp_jiffies32, expire);
-+ if (bbr->probe_rtt_min_us <= bbr->min_rtt_us ||
-+ min_rtt_expired) {
-+ bbr->min_rtt_us = bbr->probe_rtt_min_us;
-+ bbr->min_rtt_stamp = bbr->probe_rtt_min_stamp;
- }
-
-- if (bbr_probe_rtt_mode_ms > 0 && filter_expired &&
-+ if (bbr_param(sk, probe_rtt_mode_ms) > 0 && probe_rtt_expired &&
- !bbr->idle_restart && bbr->mode != BBR_PROBE_RTT) {
- bbr->mode = BBR_PROBE_RTT; /* dip, drain queue */
- bbr_save_cwnd(sk); /* note cwnd so we can restore it */
- bbr->probe_rtt_done_stamp = 0;
-+ bbr->ack_phase = BBR_ACKS_PROBE_STOPPING;
-+ bbr->next_rtt_delivered = tp->delivered;
- }
-
- if (bbr->mode == BBR_PROBE_RTT) {
-@@ -967,9 +922,9 @@ static void bbr_update_min_rtt(struct sock *sk, const struct rate_sample *rs)
- (tp->delivered + tcp_packets_in_flight(tp)) ? : 1;
- /* Maintain min packets in flight for max(200 ms, 1 round). */
- if (!bbr->probe_rtt_done_stamp &&
-- tcp_packets_in_flight(tp) <= bbr_cwnd_min_target) {
-+ tcp_packets_in_flight(tp) <= bbr_probe_rtt_cwnd(sk)) {
- bbr->probe_rtt_done_stamp = tcp_jiffies32 +
-- msecs_to_jiffies(bbr_probe_rtt_mode_ms);
-+ msecs_to_jiffies(bbr_param(sk, probe_rtt_mode_ms));
- bbr->probe_rtt_round_done = 0;
- bbr->next_rtt_delivered = tp->delivered;
- } else if (bbr->probe_rtt_done_stamp) {
-@@ -990,18 +945,20 @@ static void bbr_update_gains(struct sock *sk)
-
- switch (bbr->mode) {
- case BBR_STARTUP:
-- bbr->pacing_gain = bbr_high_gain;
-- bbr->cwnd_gain = bbr_high_gain;
-+ bbr->pacing_gain = bbr_param(sk, startup_pacing_gain);
-+ bbr->cwnd_gain = bbr_param(sk, startup_cwnd_gain);
- break;
- case BBR_DRAIN:
-- bbr->pacing_gain = bbr_drain_gain; /* slow, to drain */
-- bbr->cwnd_gain = bbr_high_gain; /* keep cwnd */
-+ bbr->pacing_gain = bbr_param(sk, drain_gain); /* slow, to drain */
-+ bbr->cwnd_gain = bbr_param(sk, startup_cwnd_gain); /* keep cwnd */
- break;
- case BBR_PROBE_BW:
-- bbr->pacing_gain = (bbr->lt_use_bw ?
-- BBR_UNIT :
-- bbr_pacing_gain[bbr->cycle_idx]);
-- bbr->cwnd_gain = bbr_cwnd_gain;
-+ bbr->pacing_gain = bbr_pacing_gain[bbr->cycle_idx];
-+ bbr->cwnd_gain = bbr_param(sk, cwnd_gain);
-+ if (bbr_param(sk, bw_probe_cwnd_gain) &&
-+ bbr->cycle_idx == BBR_BW_PROBE_UP)
-+ bbr->cwnd_gain +=
-+ BBR_UNIT * bbr_param(sk, bw_probe_cwnd_gain) / 4;
- break;
- case BBR_PROBE_RTT:
- bbr->pacing_gain = BBR_UNIT;
-@@ -1013,144 +970,1387 @@ static void bbr_update_gains(struct sock *sk)
- }
- }
-
--static void bbr_update_model(struct sock *sk, const struct rate_sample *rs)
-+__bpf_kfunc static u32 bbr_sndbuf_expand(struct sock *sk)
- {
-- bbr_update_bw(sk, rs);
-- bbr_update_ack_aggregation(sk, rs);
-- bbr_update_cycle_phase(sk, rs);
-- bbr_check_full_bw_reached(sk, rs);
-- bbr_check_drain(sk, rs);
-- bbr_update_min_rtt(sk, rs);
-- bbr_update_gains(sk);
-+ /* Provision 3 * cwnd since BBR may slow-start even during recovery. */
-+ return 3;
- }
-
--__bpf_kfunc static void bbr_main(struct sock *sk, u32 ack, int flag, const struct rate_sample *rs)
-+/* Incorporate a new bw sample into the current window of our max filter. */
-+static void bbr_take_max_bw_sample(struct sock *sk, u32 bw)
- {
- struct bbr *bbr = inet_csk_ca(sk);
-- u32 bw;
--
-- bbr_update_model(sk, rs);
-
-- bw = bbr_bw(sk);
-- bbr_set_pacing_rate(sk, bw, bbr->pacing_gain);
-- bbr_set_cwnd(sk, rs, rs->acked_sacked, bw, bbr->cwnd_gain);
-+ bbr->bw_hi[1] = max(bw, bbr->bw_hi[1]);
- }
-
--__bpf_kfunc static void bbr_init(struct sock *sk)
-+/* Keep max of last 1-2 cycles. Each PROBE_BW cycle, flip filter window. */
-+static void bbr_advance_max_bw_filter(struct sock *sk)
- {
-- struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-
-- bbr->prior_cwnd = 0;
-- tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
-- bbr->rtt_cnt = 0;
-- bbr->next_rtt_delivered = tp->delivered;
-- bbr->prev_ca_state = TCP_CA_Open;
-- bbr->packet_conservation = 0;
--
-- bbr->probe_rtt_done_stamp = 0;
-- bbr->probe_rtt_round_done = 0;
-- bbr->min_rtt_us = tcp_min_rtt(tp);
-- bbr->min_rtt_stamp = tcp_jiffies32;
--
-- minmax_reset(&bbr->bw, bbr->rtt_cnt, 0); /* init max bw to 0 */
-+ if (!bbr->bw_hi[1])
-+ return; /* no samples in this window; remember old window */
-+ bbr->bw_hi[0] = bbr->bw_hi[1];
-+ bbr->bw_hi[1] = 0;
-+}
-
-- bbr->has_seen_rtt = 0;
-- bbr_init_pacing_rate_from_rtt(sk);
-+/* Reset the estimator for reaching full bandwidth based on bw plateau. */
-+static void bbr_reset_full_bw(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-
-- bbr->round_start = 0;
-- bbr->idle_restart = 0;
-- bbr->full_bw_reached = 0;
- bbr->full_bw = 0;
- bbr->full_bw_cnt = 0;
-- bbr->cycle_mstamp = 0;
-- bbr->cycle_idx = 0;
-- bbr_reset_lt_bw_sampling(sk);
-- bbr_reset_startup_mode(sk);
-+ bbr->full_bw_now = 0;
-+}
-
-- bbr->ack_epoch_mstamp = tp->tcp_mstamp;
-- bbr->ack_epoch_acked = 0;
-- bbr->extra_acked_win_rtts = 0;
-- bbr->extra_acked_win_idx = 0;
-- bbr->extra_acked[0] = 0;
-- bbr->extra_acked[1] = 0;
-+/* How much do we want in flight? Our BDP, unless congestion cut cwnd. */
-+static u32 bbr_target_inflight(struct sock *sk)
-+{
-+ u32 bdp = bbr_inflight(sk, bbr_bw(sk), BBR_UNIT);
-
-- cmpxchg(&sk->sk_pacing_status, SK_PACING_NONE, SK_PACING_NEEDED);
-+ return min(bdp, tcp_sk(sk)->snd_cwnd);
- }
-
--__bpf_kfunc static u32 bbr_sndbuf_expand(struct sock *sk)
-+static bool bbr_is_probing_bandwidth(struct sock *sk)
- {
-- /* Provision 3 * cwnd since BBR may slow-start even during recovery. */
-- return 3;
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ return (bbr->mode == BBR_STARTUP) ||
-+ (bbr->mode == BBR_PROBE_BW &&
-+ (bbr->cycle_idx == BBR_BW_PROBE_REFILL ||
-+ bbr->cycle_idx == BBR_BW_PROBE_UP));
-+}
-+
-+/* Has the given amount of time elapsed since we marked the phase start? */
-+static bool bbr_has_elapsed_in_phase(const struct sock *sk, u32 interval_us)
-+{
-+ const struct tcp_sock *tp = tcp_sk(sk);
-+ const struct bbr *bbr = inet_csk_ca(sk);
-+
-+ return tcp_stamp_us_delta(tp->tcp_mstamp,
-+ bbr->cycle_mstamp + interval_us) > 0;
-+}
-+
-+static void bbr_handle_queue_too_high_in_startup(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 bdp; /* estimated BDP in packets, with quantization budget */
-+
-+ bbr->full_bw_reached = 1;
-+
-+ bdp = bbr_inflight(sk, bbr_max_bw(sk), BBR_UNIT);
-+ bbr->inflight_hi = max(bdp, bbr->inflight_latest);
-+}
-+
-+/* Exit STARTUP upon N consecutive rounds with ECN mark rate > ecn_thresh. */
-+static void bbr_check_ecn_too_high_in_startup(struct sock *sk, u32 ce_ratio)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ if (bbr_full_bw_reached(sk) || !bbr->ecn_eligible ||
-+ !bbr_param(sk, full_ecn_cnt) || !bbr_param(sk, ecn_thresh))
-+ return;
-+
-+ if (ce_ratio >= bbr_param(sk, ecn_thresh))
-+ bbr->startup_ecn_rounds++;
-+ else
-+ bbr->startup_ecn_rounds = 0;
-+
-+ if (bbr->startup_ecn_rounds >= bbr_param(sk, full_ecn_cnt)) {
-+ bbr_handle_queue_too_high_in_startup(sk);
-+ return;
-+ }
-+}
-+
-+/* Updates ecn_alpha and returns ce_ratio. -1 if not available. */
-+static int bbr_update_ecn_alpha(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct net *net = sock_net(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ s32 delivered, delivered_ce;
-+ u64 alpha, ce_ratio;
-+ u32 gain;
-+ bool want_ecn_alpha;
-+
-+ /* See if we should use ECN sender logic for this connection. */
-+ if (!bbr->ecn_eligible && bbr_can_use_ecn(sk) &&
-+ bbr_param(sk, ecn_factor) &&
-+ (bbr->min_rtt_us <= bbr_ecn_max_rtt_us ||
-+ !bbr_ecn_max_rtt_us))
-+ bbr->ecn_eligible = 1;
-+
-+ /* Skip updating alpha only if not ECN-eligible and PLB is disabled. */
-+ want_ecn_alpha = (bbr->ecn_eligible ||
-+ (bbr_can_use_ecn(sk) &&
-+ READ_ONCE(net->ipv4.sysctl_tcp_plb_enabled)));
-+ if (!want_ecn_alpha)
-+ return -1;
-+
-+ delivered = tp->delivered - bbr->alpha_last_delivered;
-+ delivered_ce = tp->delivered_ce - bbr->alpha_last_delivered_ce;
-+
-+ if (delivered == 0 || /* avoid divide by zero */
-+ WARN_ON_ONCE(delivered < 0 || delivered_ce < 0)) /* backwards? */
-+ return -1;
-+
-+ BUILD_BUG_ON(BBR_SCALE != TCP_PLB_SCALE);
-+ ce_ratio = (u64)delivered_ce << BBR_SCALE;
-+ do_div(ce_ratio, delivered);
-+
-+ gain = bbr_param(sk, ecn_alpha_gain);
-+ alpha = ((BBR_UNIT - gain) * bbr->ecn_alpha) >> BBR_SCALE;
-+ alpha += (gain * ce_ratio) >> BBR_SCALE;
-+ bbr->ecn_alpha = min_t(u32, alpha, BBR_UNIT);
-+
-+ bbr->alpha_last_delivered = tp->delivered;
-+ bbr->alpha_last_delivered_ce = tp->delivered_ce;
-+
-+ bbr_check_ecn_too_high_in_startup(sk, ce_ratio);
-+ return (int)ce_ratio;
- }
-
--/* In theory BBR does not need to undo the cwnd since it does not
-- * always reduce cwnd on losses (see bbr_main()). Keep it for now.
-+/* Protective Load Balancing (PLB). PLB rehashes outgoing data (to a new IPv6
-+ * flow label) if it encounters sustained congestion in the form of ECN marks.
- */
--__bpf_kfunc static u32 bbr_undo_cwnd(struct sock *sk)
-+static void bbr_plb(struct sock *sk, const struct rate_sample *rs, int ce_ratio)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ if (bbr->round_start && ce_ratio >= 0)
-+ tcp_plb_update_state(sk, &bbr->plb, ce_ratio);
-+
-+ tcp_plb_check_rehash(sk, &bbr->plb);
-+}
-+
-+/* Each round trip of BBR_BW_PROBE_UP, double volume of probing data. */
-+static void bbr_raise_inflight_hi_slope(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 growth_this_round, cnt;
-+
-+ /* Calculate "slope": packets S/Acked per inflight_hi increment. */
-+ growth_this_round = 1 << bbr->bw_probe_up_rounds;
-+ bbr->bw_probe_up_rounds = min(bbr->bw_probe_up_rounds + 1, 30);
-+ cnt = tcp_snd_cwnd(tp) / growth_this_round;
-+ cnt = max(cnt, 1U);
-+ bbr->bw_probe_up_cnt = cnt;
-+}
-+
-+/* In BBR_BW_PROBE_UP, not seeing high loss/ECN/queue, so raise inflight_hi. */
-+static void bbr_probe_inflight_hi_upward(struct sock *sk,
-+ const struct rate_sample *rs)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 delta;
-+
-+ if (!tp->is_cwnd_limited || tcp_snd_cwnd(tp) < bbr->inflight_hi)
-+ return; /* not fully using inflight_hi, so don't grow it */
-+
-+ /* For each bw_probe_up_cnt packets ACKed, increase inflight_hi by 1. */
-+ bbr->bw_probe_up_acks += rs->acked_sacked;
-+ if (bbr->bw_probe_up_acks >= bbr->bw_probe_up_cnt) {
-+ delta = bbr->bw_probe_up_acks / bbr->bw_probe_up_cnt;
-+ bbr->bw_probe_up_acks -= delta * bbr->bw_probe_up_cnt;
-+ bbr->inflight_hi += delta;
-+ bbr->try_fast_path = 0; /* Need to update cwnd */
-+ }
-+
-+ if (bbr->round_start)
-+ bbr_raise_inflight_hi_slope(sk);
-+}
-+
-+/* Does loss/ECN rate for this sample say inflight is "too high"?
-+ * This is used by both the bbr_check_loss_too_high_in_startup() function,
-+ * which can be used in either v1 or v2, and the PROBE_UP phase of v2, which
-+ * uses it to notice when loss/ECN rates suggest inflight is too high.
-+ */
-+static bool bbr_is_inflight_too_high(const struct sock *sk,
-+ const struct rate_sample *rs)
-+{
-+ const struct bbr *bbr = inet_csk_ca(sk);
-+ u32 loss_thresh, ecn_thresh;
-+
-+ if (rs->lost > 0 && rs->tx_in_flight) {
-+ loss_thresh = (u64)rs->tx_in_flight * bbr_param(sk, loss_thresh) >>
-+ BBR_SCALE;
-+ if (rs->lost > loss_thresh) {
-+ return true;
-+ }
-+ }
-+
-+ if (rs->delivered_ce > 0 && rs->delivered > 0 &&
-+ bbr->ecn_eligible && bbr_param(sk, ecn_thresh)) {
-+ ecn_thresh = (u64)rs->delivered * bbr_param(sk, ecn_thresh) >>
-+ BBR_SCALE;
-+ if (rs->delivered_ce > ecn_thresh) {
-+ return true;
-+ }
-+ }
-+
-+ return false;
-+}
-+
-+/* Calculate the tx_in_flight level that corresponded to excessive loss.
-+ * We find "lost_prefix" segs of the skb where loss rate went too high,
-+ * by solving for "lost_prefix" in the following equation:
-+ * lost / inflight >= loss_thresh
-+ * (lost_prev + lost_prefix) / (inflight_prev + lost_prefix) >= loss_thresh
-+ * Then we take that equation, convert it to fixed point, and
-+ * round up to the nearest packet.
-+ */
-+static u32 bbr_inflight_hi_from_lost_skb(const struct sock *sk,
-+ const struct rate_sample *rs,
-+ const struct sk_buff *skb)
-+{
-+ const struct tcp_sock *tp = tcp_sk(sk);
-+ u32 loss_thresh = bbr_param(sk, loss_thresh);
-+ u32 pcount, divisor, inflight_hi;
-+ s32 inflight_prev, lost_prev;
-+ u64 loss_budget, lost_prefix;
-+
-+ pcount = tcp_skb_pcount(skb);
-+
-+ /* How much data was in flight before this skb? */
-+ inflight_prev = rs->tx_in_flight - pcount;
-+ if (inflight_prev < 0) {
-+ WARN_ONCE(tcp_skb_tx_in_flight_is_suspicious(
-+ pcount,
-+ TCP_SKB_CB(skb)->sacked,
-+ rs->tx_in_flight),
-+ "tx_in_flight: %u pcount: %u reneg: %u",
-+ rs->tx_in_flight, pcount, tcp_sk(sk)->is_sack_reneg);
-+ return ~0U;
-+ }
-+
-+ /* How much inflight data was marked lost before this skb? */
-+ lost_prev = rs->lost - pcount;
-+ if (WARN_ONCE(lost_prev < 0,
-+ "cwnd: %u ca: %d out: %u lost: %u pif: %u "
-+ "tx_in_flight: %u tx.lost: %u tp->lost: %u rs->lost: %d "
-+ "lost_prev: %d pcount: %d seq: %u end_seq: %u reneg: %u",
-+ tcp_snd_cwnd(tp), inet_csk(sk)->icsk_ca_state,
-+ tp->packets_out, tp->lost_out, tcp_packets_in_flight(tp),
-+ rs->tx_in_flight, TCP_SKB_CB(skb)->tx.lost, tp->lost,
-+ rs->lost, lost_prev, pcount,
-+ TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq,
-+ tp->is_sack_reneg))
-+ return ~0U;
-+
-+ /* At what prefix of this lost skb did losss rate exceed loss_thresh? */
-+ loss_budget = (u64)inflight_prev * loss_thresh + BBR_UNIT - 1;
-+ loss_budget >>= BBR_SCALE;
-+ if (lost_prev >= loss_budget) {
-+ lost_prefix = 0; /* previous losses crossed loss_thresh */
-+ } else {
-+ lost_prefix = loss_budget - lost_prev;
-+ lost_prefix <<= BBR_SCALE;
-+ divisor = BBR_UNIT - loss_thresh;
-+ if (WARN_ON_ONCE(!divisor)) /* loss_thresh is 8 bits */
-+ return ~0U;
-+ do_div(lost_prefix, divisor);
-+ }
-+
-+ inflight_hi = inflight_prev + lost_prefix;
-+ return inflight_hi;
-+}
-+
-+/* If loss/ECN rates during probing indicated we may have overfilled a
-+ * buffer, return an operating point that tries to leave unutilized headroom in
-+ * the path for other flows, for fairness convergence and lower RTTs and loss.
-+ */
-+static u32 bbr_inflight_with_headroom(const struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 headroom, headroom_fraction;
-+
-+ if (bbr->inflight_hi == ~0U)
-+ return ~0U;
-+
-+ headroom_fraction = bbr_param(sk, inflight_headroom);
-+ headroom = ((u64)bbr->inflight_hi * headroom_fraction) >> BBR_SCALE;
-+ headroom = max(headroom, 1U);
-+ return max_t(s32, bbr->inflight_hi - headroom,
-+ bbr_param(sk, cwnd_min_target));
-+}
-+
-+/* Bound cwnd to a sensible level, based on our current probing state
-+ * machine phase and model of a good inflight level (inflight_lo, inflight_hi).
-+ */
-+static void bbr_bound_cwnd_for_inflight_model(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 cap;
-+
-+ /* tcp_rcv_synsent_state_process() currently calls tcp_ack()
-+ * and thus cong_control() without first initializing us(!).
-+ */
-+ if (!bbr->initialized)
-+ return;
-+
-+ cap = ~0U;
-+ if (bbr->mode == BBR_PROBE_BW &&
-+ bbr->cycle_idx != BBR_BW_PROBE_CRUISE) {
-+ /* Probe to see if more packets fit in the path. */
-+ cap = bbr->inflight_hi;
-+ } else {
-+ if (bbr->mode == BBR_PROBE_RTT ||
-+ (bbr->mode == BBR_PROBE_BW &&
-+ bbr->cycle_idx == BBR_BW_PROBE_CRUISE))
-+ cap = bbr_inflight_with_headroom(sk);
-+ }
-+ /* Adapt to any loss/ECN since our last bw probe. */
-+ cap = min(cap, bbr->inflight_lo);
-+
-+ cap = max_t(u32, cap, bbr_param(sk, cwnd_min_target));
-+ tcp_snd_cwnd_set(tp, min(cap, tcp_snd_cwnd(tp)));
-+}
-+
-+/* How should we multiplicatively cut bw or inflight limits based on ECN? */
-+static u32 bbr_ecn_cut(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ return BBR_UNIT -
-+ ((bbr->ecn_alpha * bbr_param(sk, ecn_factor)) >> BBR_SCALE);
-+}
-+
-+/* Init lower bounds if have not inited yet. */
-+static void bbr_init_lower_bounds(struct sock *sk, bool init_bw)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ if (init_bw && bbr->bw_lo == ~0U)
-+ bbr->bw_lo = bbr_max_bw(sk);
-+ if (bbr->inflight_lo == ~0U)
-+ bbr->inflight_lo = tcp_snd_cwnd(tp);
-+}
-+
-+/* Reduce bw and inflight to (1 - beta). */
-+static void bbr_loss_lower_bounds(struct sock *sk, u32 *bw, u32 *inflight)
-+{
-+ struct bbr* bbr = inet_csk_ca(sk);
-+ u32 loss_cut = BBR_UNIT - bbr_param(sk, beta);
-+
-+ *bw = max_t(u32, bbr->bw_latest,
-+ (u64)bbr->bw_lo * loss_cut >> BBR_SCALE);
-+ *inflight = max_t(u32, bbr->inflight_latest,
-+ (u64)bbr->inflight_lo * loss_cut >> BBR_SCALE);
-+}
-+
-+/* Reduce inflight to (1 - alpha*ecn_factor). */
-+static void bbr_ecn_lower_bounds(struct sock *sk, u32 *inflight)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 ecn_cut = bbr_ecn_cut(sk);
-+
-+ *inflight = (u64)bbr->inflight_lo * ecn_cut >> BBR_SCALE;
-+}
-+
-+/* Estimate a short-term lower bound on the capacity available now, based
-+ * on measurements of the current delivery process and recent history. When we
-+ * are seeing loss/ECN at times when we are not probing bw, then conservatively
-+ * move toward flow balance by multiplicatively cutting our short-term
-+ * estimated safe rate and volume of data (bw_lo and inflight_lo). We use a
-+ * multiplicative decrease in order to converge to a lower capacity in time
-+ * logarithmic in the magnitude of the decrease.
-+ *
-+ * However, we do not cut our short-term estimates lower than the current rate
-+ * and volume of delivered data from this round trip, since from the current
-+ * delivery process we can estimate the measured capacity available now.
-+ *
-+ * Anything faster than that approach would knowingly risk high loss, which can
-+ * cause low bw for Reno/CUBIC and high loss recovery latency for
-+ * request/response flows using any congestion control.
-+ */
-+static void bbr_adapt_lower_bounds(struct sock *sk,
-+ const struct rate_sample *rs)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 ecn_inflight_lo = ~0U;
-+
-+ /* We only use lower-bound estimates when not probing bw.
-+ * When probing we need to push inflight higher to probe bw.
-+ */
-+ if (bbr_is_probing_bandwidth(sk))
-+ return;
-+
-+ /* ECN response. */
-+ if (bbr->ecn_in_round && bbr_param(sk, ecn_factor)) {
-+ bbr_init_lower_bounds(sk, false);
-+ bbr_ecn_lower_bounds(sk, &ecn_inflight_lo);
-+ }
-+
-+ /* Loss response. */
-+ if (bbr->loss_in_round) {
-+ bbr_init_lower_bounds(sk, true);
-+ bbr_loss_lower_bounds(sk, &bbr->bw_lo, &bbr->inflight_lo);
-+ }
-+
-+ /* Adjust to the lower of the levels implied by loss/ECN. */
-+ bbr->inflight_lo = min(bbr->inflight_lo, ecn_inflight_lo);
-+ bbr->bw_lo = max(1U, bbr->bw_lo);
-+}
-+
-+/* Reset any short-term lower-bound adaptation to congestion, so that we can
-+ * push our inflight up.
-+ */
-+static void bbr_reset_lower_bounds(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr->bw_lo = ~0U;
-+ bbr->inflight_lo = ~0U;
-+}
-+
-+/* After bw probing (STARTUP/PROBE_UP), reset signals before entering a state
-+ * machine phase where we adapt our lower bound based on congestion signals.
-+ */
-+static void bbr_reset_congestion_signals(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr->loss_in_round = 0;
-+ bbr->ecn_in_round = 0;
-+ bbr->loss_in_cycle = 0;
-+ bbr->ecn_in_cycle = 0;
-+ bbr->bw_latest = 0;
-+ bbr->inflight_latest = 0;
-+}
-+
-+static void bbr_exit_loss_recovery(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ tcp_snd_cwnd_set(tp, max(tcp_snd_cwnd(tp), bbr->prior_cwnd));
-+ bbr->try_fast_path = 0; /* bound cwnd using latest model */
-+}
-+
-+/* Update rate and volume of delivered data from latest round trip. */
-+static void bbr_update_latest_delivery_signals(
-+ struct sock *sk, const struct rate_sample *rs, struct bbr_context *ctx)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr->loss_round_start = 0;
-+ if (rs->interval_us <= 0 || !rs->acked_sacked)
-+ return; /* Not a valid observation */
-+
-+ bbr->bw_latest = max_t(u32, bbr->bw_latest, ctx->sample_bw);
-+ bbr->inflight_latest = max_t(u32, bbr->inflight_latest, rs->delivered);
-+
-+ if (!before(rs->prior_delivered, bbr->loss_round_delivered)) {
-+ bbr->loss_round_delivered = tp->delivered;
-+ bbr->loss_round_start = 1; /* mark start of new round trip */
-+ }
-+}
-+
-+/* Once per round, reset filter for latest rate and volume of delivered data. */
-+static void bbr_advance_latest_delivery_signals(
-+ struct sock *sk, const struct rate_sample *rs, struct bbr_context *ctx)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ /* If ACK matches a TLP retransmit, persist the filter. If we detect
-+ * that a TLP retransmit plugged a tail loss, we'll want to remember
-+ * how much data the path delivered before the tail loss.
-+ */
-+ if (bbr->loss_round_start && !rs->is_acking_tlp_retrans_seq) {
-+ bbr->bw_latest = ctx->sample_bw;
-+ bbr->inflight_latest = rs->delivered;
-+ }
-+}
-+
-+/* Update (most of) our congestion signals: track the recent rate and volume of
-+ * delivered data, presence of loss, and EWMA degree of ECN marking.
-+ */
-+static void bbr_update_congestion_signals(
-+ struct sock *sk, const struct rate_sample *rs, struct bbr_context *ctx)
- {
- struct bbr *bbr = inet_csk_ca(sk);
-+ u64 bw;
-+
-+ if (rs->interval_us <= 0 || !rs->acked_sacked)
-+ return; /* Not a valid observation */
-+ bw = ctx->sample_bw;
-
-- bbr->full_bw = 0; /* spurious slow-down; reset full pipe detection */
-+ if (!rs->is_app_limited || bw >= bbr_max_bw(sk))
-+ bbr_take_max_bw_sample(sk, bw);
-+
-+ bbr->loss_in_round |= (rs->losses > 0);
-+
-+ if (!bbr->loss_round_start)
-+ return; /* skip the per-round-trip updates */
-+ /* Now do per-round-trip updates. */
-+ bbr_adapt_lower_bounds(sk, rs);
-+
-+ bbr->loss_in_round = 0;
-+ bbr->ecn_in_round = 0;
-+}
-+
-+/* Bandwidth probing can cause loss. To help coexistence with loss-based
-+ * congestion control we spread out our probing in a Reno-conscious way. Due to
-+ * the shape of the Reno sawtooth, the time required between loss epochs for an
-+ * idealized Reno flow is a number of round trips that is the BDP of that
-+ * flow. We count packet-timed round trips directly, since measured RTT can
-+ * vary widely, and Reno is driven by packet-timed round trips.
-+ */
-+static bool bbr_is_reno_coexistence_probe_time(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 rounds;
-+
-+ /* Random loss can shave some small percentage off of our inflight
-+ * in each round. To survive this, flows need robust periodic probes.
-+ */
-+ rounds = min_t(u32, bbr_param(sk, bw_probe_max_rounds), bbr_target_inflight(sk));
-+ return bbr->rounds_since_probe >= rounds;
-+}
-+
-+/* How long do we want to wait before probing for bandwidth (and risking
-+ * loss)? We randomize the wait, for better mixing and fairness convergence.
-+ *
-+ * We bound the Reno-coexistence inter-bw-probe time to be 62-63 round trips.
-+ * This is calculated to allow fairness with a 25Mbps, 30ms Reno flow,
-+ * (eg 4K video to a broadband user):
-+ * BDP = 25Mbps * .030sec /(1514bytes) = 61.9 packets
-+ *
-+ * We bound the BBR-native inter-bw-probe wall clock time to be:
-+ * (a) higher than 2 sec: to try to avoid causing loss for a long enough time
-+ * to allow Reno at 30ms to get 4K video bw, the inter-bw-probe time must
-+ * be at least: 25Mbps * .030sec / (1514bytes) * 0.030sec = 1.9secs
-+ * (b) lower than 3 sec: to ensure flows can start probing in a reasonable
-+ * amount of time to discover unutilized bw on human-scale interactive
-+ * time-scales (e.g. perhaps traffic from a web page download that we
-+ * were competing with is now complete).
-+ */
-+static void bbr_pick_probe_wait(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ /* Decide the random round-trip bound for wait until probe: */
-+ bbr->rounds_since_probe =
-+ get_random_u32_below(bbr_param(sk, bw_probe_rand_rounds));
-+ /* Decide the random wall clock bound for wait until probe: */
-+ bbr->probe_wait_us = bbr_param(sk, bw_probe_base_us) +
-+ get_random_u32_below(bbr_param(sk, bw_probe_rand_us));
-+}
-+
-+static void bbr_set_cycle_idx(struct sock *sk, int cycle_idx)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr->cycle_idx = cycle_idx;
-+ /* New phase, so need to update cwnd and pacing rate. */
-+ bbr->try_fast_path = 0;
-+}
-+
-+/* Send at estimated bw to fill the pipe, but not queue. We need this phase
-+ * before PROBE_UP, because as soon as we send faster than the available bw
-+ * we will start building a queue, and if the buffer is shallow we can cause
-+ * loss. If we do not fill the pipe before we cause this loss, our bw_hi and
-+ * inflight_hi estimates will underestimate.
-+ */
-+static void bbr_start_bw_probe_refill(struct sock *sk, u32 bw_probe_up_rounds)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr_reset_lower_bounds(sk);
-+ bbr->bw_probe_up_rounds = bw_probe_up_rounds;
-+ bbr->bw_probe_up_acks = 0;
-+ bbr->stopped_risky_probe = 0;
-+ bbr->ack_phase = BBR_ACKS_REFILLING;
-+ bbr->next_rtt_delivered = tp->delivered;
-+ bbr_set_cycle_idx(sk, BBR_BW_PROBE_REFILL);
-+}
-+
-+/* Now probe max deliverable data rate and volume. */
-+static void bbr_start_bw_probe_up(struct sock *sk, struct bbr_context *ctx)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr->ack_phase = BBR_ACKS_PROBE_STARTING;
-+ bbr->next_rtt_delivered = tp->delivered;
-+ bbr->cycle_mstamp = tp->tcp_mstamp;
-+ bbr_reset_full_bw(sk);
-+ bbr->full_bw = ctx->sample_bw;
-+ bbr_set_cycle_idx(sk, BBR_BW_PROBE_UP);
-+ bbr_raise_inflight_hi_slope(sk);
-+}
-+
-+/* Start a new PROBE_BW probing cycle of some wall clock length. Pick a wall
-+ * clock time at which to probe beyond an inflight that we think to be
-+ * safe. This will knowingly risk packet loss, so we want to do this rarely, to
-+ * keep packet loss rates low. Also start a round-trip counter, to probe faster
-+ * if we estimate a Reno flow at our BDP would probe faster.
-+ */
-+static void bbr_start_bw_probe_down(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr_reset_congestion_signals(sk);
-+ bbr->bw_probe_up_cnt = ~0U; /* not growing inflight_hi any more */
-+ bbr_pick_probe_wait(sk);
-+ bbr->cycle_mstamp = tp->tcp_mstamp; /* start wall clock */
-+ bbr->ack_phase = BBR_ACKS_PROBE_STOPPING;
-+ bbr->next_rtt_delivered = tp->delivered;
-+ bbr_set_cycle_idx(sk, BBR_BW_PROBE_DOWN);
-+}
-+
-+/* Cruise: maintain what we estimate to be a neutral, conservative
-+ * operating point, without attempting to probe up for bandwidth or down for
-+ * RTT, and only reducing inflight in response to loss/ECN signals.
-+ */
-+static void bbr_start_bw_probe_cruise(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ if (bbr->inflight_lo != ~0U)
-+ bbr->inflight_lo = min(bbr->inflight_lo, bbr->inflight_hi);
-+
-+ bbr_set_cycle_idx(sk, BBR_BW_PROBE_CRUISE);
-+}
-+
-+/* Loss and/or ECN rate is too high while probing.
-+ * Adapt (once per bw probe) by cutting inflight_hi and then restarting cycle.
-+ */
-+static void bbr_handle_inflight_too_high(struct sock *sk,
-+ const struct rate_sample *rs)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ const u32 beta = bbr_param(sk, beta);
-+
-+ bbr->prev_probe_too_high = 1;
-+ bbr->bw_probe_samples = 0; /* only react once per probe */
-+ /* If we are app-limited then we are not robustly
-+ * probing the max volume of inflight data we think
-+ * might be safe (analogous to how app-limited bw
-+ * samples are not known to be robustly probing bw).
-+ */
-+ if (!rs->is_app_limited) {
-+ bbr->inflight_hi = max_t(u32, rs->tx_in_flight,
-+ (u64)bbr_target_inflight(sk) *
-+ (BBR_UNIT - beta) >> BBR_SCALE);
-+ }
-+ if (bbr->mode == BBR_PROBE_BW && bbr->cycle_idx == BBR_BW_PROBE_UP)
-+ bbr_start_bw_probe_down(sk);
-+}
-+
-+/* If we're seeing bw and loss samples reflecting our bw probing, adapt
-+ * using the signals we see. If loss or ECN mark rate gets too high, then adapt
-+ * inflight_hi downward. If we're able to push inflight higher without such
-+ * signals, push higher: adapt inflight_hi upward.
-+ */
-+static bool bbr_adapt_upper_bounds(struct sock *sk,
-+ const struct rate_sample *rs,
-+ struct bbr_context *ctx)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ /* Track when we'll see bw/loss samples resulting from our bw probes. */
-+ if (bbr->ack_phase == BBR_ACKS_PROBE_STARTING && bbr->round_start)
-+ bbr->ack_phase = BBR_ACKS_PROBE_FEEDBACK;
-+ if (bbr->ack_phase == BBR_ACKS_PROBE_STOPPING && bbr->round_start) {
-+ /* End of samples from bw probing phase. */
-+ bbr->bw_probe_samples = 0;
-+ bbr->ack_phase = BBR_ACKS_INIT;
-+ /* At this point in the cycle, our current bw sample is also
-+ * our best recent chance at finding the highest available bw
-+ * for this flow. So now is the best time to forget the bw
-+ * samples from the previous cycle, by advancing the window.
-+ */
-+ if (bbr->mode == BBR_PROBE_BW && !rs->is_app_limited)
-+ bbr_advance_max_bw_filter(sk);
-+ /* If we had an inflight_hi, then probed and pushed inflight all
-+ * the way up to hit that inflight_hi without seeing any
-+ * high loss/ECN in all the resulting ACKs from that probing,
-+ * then probe up again, this time letting inflight persist at
-+ * inflight_hi for a round trip, then accelerating beyond.
-+ */
-+ if (bbr->mode == BBR_PROBE_BW &&
-+ bbr->stopped_risky_probe && !bbr->prev_probe_too_high) {
-+ bbr_start_bw_probe_refill(sk, 0);
-+ return true; /* yes, decided state transition */
-+ }
-+ }
-+ if (bbr_is_inflight_too_high(sk, rs)) {
-+ if (bbr->bw_probe_samples) /* sample is from bw probing? */
-+ bbr_handle_inflight_too_high(sk, rs);
-+ } else {
-+ /* Loss/ECN rate is declared safe. Adjust upper bound upward. */
-+
-+ if (bbr->inflight_hi == ~0U)
-+ return false; /* no excess queue signals yet */
-+
-+ /* To be resilient to random loss, we must raise bw/inflight_hi
-+ * if we observe in any phase that a higher level is safe.
-+ */
-+ if (rs->tx_in_flight > bbr->inflight_hi) {
-+ bbr->inflight_hi = rs->tx_in_flight;
-+ }
-+
-+ if (bbr->mode == BBR_PROBE_BW &&
-+ bbr->cycle_idx == BBR_BW_PROBE_UP)
-+ bbr_probe_inflight_hi_upward(sk, rs);
-+ }
-+
-+ return false;
-+}
-+
-+/* Check if it's time to probe for bandwidth now, and if so, kick it off. */
-+static bool bbr_check_time_to_probe_bw(struct sock *sk,
-+ const struct rate_sample *rs)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 n;
-+
-+ /* If we seem to be at an operating point where we are not seeing loss
-+ * but we are seeing ECN marks, then when the ECN marks cease we reprobe
-+ * quickly (in case cross-traffic has ceased and freed up bw).
-+ */
-+ if (bbr_param(sk, ecn_reprobe_gain) && bbr->ecn_eligible &&
-+ bbr->ecn_in_cycle && !bbr->loss_in_cycle &&
-+ inet_csk(sk)->icsk_ca_state == TCP_CA_Open) {
-+ /* Calculate n so that when bbr_raise_inflight_hi_slope()
-+ * computes growth_this_round as 2^n it will be roughly the
-+ * desired volume of data (inflight_hi*ecn_reprobe_gain).
-+ */
-+ n = ilog2((((u64)bbr->inflight_hi *
-+ bbr_param(sk, ecn_reprobe_gain)) >> BBR_SCALE));
-+ bbr_start_bw_probe_refill(sk, n);
-+ return true;
-+ }
-+
-+ if (bbr_has_elapsed_in_phase(sk, bbr->probe_wait_us) ||
-+ bbr_is_reno_coexistence_probe_time(sk)) {
-+ bbr_start_bw_probe_refill(sk, 0);
-+ return true;
-+ }
-+ return false;
-+}
-+
-+/* Is it time to transition from PROBE_DOWN to PROBE_CRUISE? */
-+static bool bbr_check_time_to_cruise(struct sock *sk, u32 inflight, u32 bw)
-+{
-+ /* Always need to pull inflight down to leave headroom in queue. */
-+ if (inflight > bbr_inflight_with_headroom(sk))
-+ return false;
-+
-+ return inflight <= bbr_inflight(sk, bw, BBR_UNIT);
-+}
-+
-+/* PROBE_BW state machine: cruise, refill, probe for bw, or drain? */
-+static void bbr_update_cycle_phase(struct sock *sk,
-+ const struct rate_sample *rs,
-+ struct bbr_context *ctx)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ bool is_bw_probe_done = false;
-+ u32 inflight, bw;
-+
-+ if (!bbr_full_bw_reached(sk))
-+ return;
-+
-+ /* In DRAIN, PROBE_BW, or PROBE_RTT, adjust upper bounds. */
-+ if (bbr_adapt_upper_bounds(sk, rs, ctx))
-+ return; /* already decided state transition */
-+
-+ if (bbr->mode != BBR_PROBE_BW)
-+ return;
-+
-+ inflight = bbr_packets_in_net_at_edt(sk, rs->prior_in_flight);
-+ bw = bbr_max_bw(sk);
-+
-+ switch (bbr->cycle_idx) {
-+ /* First we spend most of our time cruising with a pacing_gain of 1.0,
-+ * which paces at the estimated bw, to try to fully use the pipe
-+ * without building queue. If we encounter loss/ECN marks, we adapt
-+ * by slowing down.
-+ */
-+ case BBR_BW_PROBE_CRUISE:
-+ if (bbr_check_time_to_probe_bw(sk, rs))
-+ return; /* already decided state transition */
-+ break;
-+
-+ /* After cruising, when it's time to probe, we first "refill": we send
-+ * at the estimated bw to fill the pipe, before probing higher and
-+ * knowingly risking overflowing the bottleneck buffer (causing loss).
-+ */
-+ case BBR_BW_PROBE_REFILL:
-+ if (bbr->round_start) {
-+ /* After one full round trip of sending in REFILL, we
-+ * start to see bw samples reflecting our REFILL, which
-+ * may be putting too much data in flight.
-+ */
-+ bbr->bw_probe_samples = 1;
-+ bbr_start_bw_probe_up(sk, ctx);
-+ }
-+ break;
-+
-+ /* After we refill the pipe, we probe by using a pacing_gain > 1.0, to
-+ * probe for bw. If we have not seen loss/ECN, we try to raise inflight
-+ * to at least pacing_gain*BDP; note that this may take more than
-+ * min_rtt if min_rtt is small (e.g. on a LAN).
-+ *
-+ * We terminate PROBE_UP bandwidth probing upon any of the following:
-+ *
-+ * (1) We've pushed inflight up to hit the inflight_hi target set in the
-+ * most recent previous bw probe phase. Thus we want to start
-+ * draining the queue immediately because it's very likely the most
-+ * recently sent packets will fill the queue and cause drops.
-+ * (2) If inflight_hi has not limited bandwidth growth recently, and
-+ * yet delivered bandwidth has not increased much recently
-+ * (bbr->full_bw_now).
-+ * (3) Loss filter says loss rate is "too high".
-+ * (4) ECN filter says ECN mark rate is "too high".
-+ *
-+ * (1) (2) checked here, (3) (4) checked in bbr_is_inflight_too_high()
-+ */
-+ case BBR_BW_PROBE_UP:
-+ if (bbr->prev_probe_too_high &&
-+ inflight >= bbr->inflight_hi) {
-+ bbr->stopped_risky_probe = 1;
-+ is_bw_probe_done = true;
-+ } else {
-+ if (tp->is_cwnd_limited &&
-+ tcp_snd_cwnd(tp) >= bbr->inflight_hi) {
-+ /* inflight_hi is limiting bw growth */
-+ bbr_reset_full_bw(sk);
-+ bbr->full_bw = ctx->sample_bw;
-+ } else if (bbr->full_bw_now) {
-+ /* Plateau in estimated bw. Pipe looks full. */
-+ is_bw_probe_done = true;
-+ }
-+ }
-+ if (is_bw_probe_done) {
-+ bbr->prev_probe_too_high = 0; /* no loss/ECN (yet) */
-+ bbr_start_bw_probe_down(sk); /* restart w/ down */
-+ }
-+ break;
-+
-+ /* After probing in PROBE_UP, we have usually accumulated some data in
-+ * the bottleneck buffer (if bw probing didn't find more bw). We next
-+ * enter PROBE_DOWN to try to drain any excess data from the queue. To
-+ * do this, we use a pacing_gain < 1.0. We hold this pacing gain until
-+ * our inflight is less then that target cruising point, which is the
-+ * minimum of (a) the amount needed to leave headroom, and (b) the
-+ * estimated BDP. Once inflight falls to match the target, we estimate
-+ * the queue is drained; persisting would underutilize the pipe.
-+ */
-+ case BBR_BW_PROBE_DOWN:
-+ if (bbr_check_time_to_probe_bw(sk, rs))
-+ return; /* already decided state transition */
-+ if (bbr_check_time_to_cruise(sk, inflight, bw))
-+ bbr_start_bw_probe_cruise(sk);
-+ break;
-+
-+ default:
-+ WARN_ONCE(1, "BBR invalid cycle index %u\n", bbr->cycle_idx);
-+ }
-+}
-+
-+/* Exiting PROBE_RTT, so return to bandwidth probing in STARTUP or PROBE_BW. */
-+static void bbr_exit_probe_rtt(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr_reset_lower_bounds(sk);
-+ if (bbr_full_bw_reached(sk)) {
-+ bbr->mode = BBR_PROBE_BW;
-+ /* Raising inflight after PROBE_RTT may cause loss, so reset
-+ * the PROBE_BW clock and schedule the next bandwidth probe for
-+ * a friendly and randomized future point in time.
-+ */
-+ bbr_start_bw_probe_down(sk);
-+ /* Since we are exiting PROBE_RTT, we know inflight is
-+ * below our estimated BDP, so it is reasonable to cruise.
-+ */
-+ bbr_start_bw_probe_cruise(sk);
-+ } else {
-+ bbr->mode = BBR_STARTUP;
-+ }
-+}
-+
-+/* Exit STARTUP based on loss rate > 1% and loss gaps in round >= N. Wait until
-+ * the end of the round in recovery to get a good estimate of how many packets
-+ * have been lost, and how many we need to drain with a low pacing rate.
-+ */
-+static void bbr_check_loss_too_high_in_startup(struct sock *sk,
-+ const struct rate_sample *rs)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ if (bbr_full_bw_reached(sk))
-+ return;
-+
-+ /* For STARTUP exit, check the loss rate at the end of each round trip
-+ * of Recovery episodes in STARTUP. We check the loss rate at the end
-+ * of the round trip to filter out noisy/low loss and have a better
-+ * sense of inflight (extent of loss), so we can drain more accurately.
-+ */
-+ if (rs->losses && bbr->loss_events_in_round < 0xf)
-+ bbr->loss_events_in_round++; /* update saturating counter */
-+ if (bbr_param(sk, full_loss_cnt) && bbr->loss_round_start &&
-+ inet_csk(sk)->icsk_ca_state == TCP_CA_Recovery &&
-+ bbr->loss_events_in_round >= bbr_param(sk, full_loss_cnt) &&
-+ bbr_is_inflight_too_high(sk, rs)) {
-+ bbr_handle_queue_too_high_in_startup(sk);
-+ return;
-+ }
-+ if (bbr->loss_round_start)
-+ bbr->loss_events_in_round = 0;
-+}
-+
-+/* Estimate when the pipe is full, using the change in delivery rate: BBR
-+ * estimates bw probing filled the pipe if the estimated bw hasn't changed by
-+ * at least bbr_full_bw_thresh (25%) after bbr_full_bw_cnt (3) non-app-limited
-+ * rounds. Why 3 rounds: 1: rwin autotuning grows the rwin, 2: we fill the
-+ * higher rwin, 3: we get higher delivery rate samples. Or transient
-+ * cross-traffic or radio noise can go away. CUBIC Hystart shares a similar
-+ * design goal, but uses delay and inter-ACK spacing instead of bandwidth.
-+ */
-+static void bbr_check_full_bw_reached(struct sock *sk,
-+ const struct rate_sample *rs,
-+ struct bbr_context *ctx)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 bw_thresh, full_cnt, thresh;
-+
-+ if (bbr->full_bw_now || rs->is_app_limited)
-+ return;
-+
-+ thresh = bbr_param(sk, full_bw_thresh);
-+ full_cnt = bbr_param(sk, full_bw_cnt);
-+ bw_thresh = (u64)bbr->full_bw * thresh >> BBR_SCALE;
-+ if (ctx->sample_bw >= bw_thresh) {
-+ bbr_reset_full_bw(sk);
-+ bbr->full_bw = ctx->sample_bw;
-+ return;
-+ }
-+ if (!bbr->round_start)
-+ return;
-+ ++bbr->full_bw_cnt;
-+ bbr->full_bw_now = bbr->full_bw_cnt >= full_cnt;
-+ bbr->full_bw_reached |= bbr->full_bw_now;
-+}
-+
-+/* If pipe is probably full, drain the queue and then enter steady-state. */
-+static void bbr_check_drain(struct sock *sk, const struct rate_sample *rs,
-+ struct bbr_context *ctx)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ if (bbr->mode == BBR_STARTUP && bbr_full_bw_reached(sk)) {
-+ bbr->mode = BBR_DRAIN; /* drain queue we created */
-+ /* Set ssthresh to export purely for monitoring, to signal
-+ * completion of initial STARTUP by setting to a non-
-+ * TCP_INFINITE_SSTHRESH value (ssthresh is not used by BBR).
-+ */
-+ tcp_sk(sk)->snd_ssthresh =
-+ bbr_inflight(sk, bbr_max_bw(sk), BBR_UNIT);
-+ bbr_reset_congestion_signals(sk);
-+ } /* fall through to check if in-flight is already small: */
-+ if (bbr->mode == BBR_DRAIN &&
-+ bbr_packets_in_net_at_edt(sk, tcp_packets_in_flight(tcp_sk(sk))) <=
-+ bbr_inflight(sk, bbr_max_bw(sk), BBR_UNIT)) {
-+ bbr->mode = BBR_PROBE_BW;
-+ bbr_start_bw_probe_down(sk);
-+ }
-+}
-+
-+static void bbr_update_model(struct sock *sk, const struct rate_sample *rs,
-+ struct bbr_context *ctx)
-+{
-+ bbr_update_congestion_signals(sk, rs, ctx);
-+ bbr_update_ack_aggregation(sk, rs);
-+ bbr_check_loss_too_high_in_startup(sk, rs);
-+ bbr_check_full_bw_reached(sk, rs, ctx);
-+ bbr_check_drain(sk, rs, ctx);
-+ bbr_update_cycle_phase(sk, rs, ctx);
-+ bbr_update_min_rtt(sk, rs);
-+}
-+
-+/* Fast path for app-limited case.
-+ *
-+ * On each ack, we execute bbr state machine, which primarily consists of:
-+ * 1) update model based on new rate sample, and
-+ * 2) update control based on updated model or state change.
-+ *
-+ * There are certain workload/scenarios, e.g. app-limited case, where
-+ * either we can skip updating model or we can skip update of both model
-+ * as well as control. This provides signifcant softirq cpu savings for
-+ * processing incoming acks.
-+ *
-+ * In case of app-limited, if there is no congestion (loss/ecn) and
-+ * if observed bw sample is less than current estimated bw, then we can
-+ * skip some of the computation in bbr state processing:
-+ *
-+ * - if there is no rtt/mode/phase change: In this case, since all the
-+ * parameters of the network model are constant, we can skip model
-+ * as well control update.
-+ *
-+ * - else we can skip rest of the model update. But we still need to
-+ * update the control to account for the new rtt/mode/phase.
-+ *
-+ * Returns whether we can take fast path or not.
-+ */
-+static bool bbr_run_fast_path(struct sock *sk, bool *update_model,
-+ const struct rate_sample *rs, struct bbr_context *ctx)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ u32 prev_min_rtt_us, prev_mode;
-+
-+ if (bbr_param(sk, fast_path) && bbr->try_fast_path &&
-+ rs->is_app_limited && ctx->sample_bw < bbr_max_bw(sk) &&
-+ !bbr->loss_in_round && !bbr->ecn_in_round ) {
-+ prev_mode = bbr->mode;
-+ prev_min_rtt_us = bbr->min_rtt_us;
-+ bbr_check_drain(sk, rs, ctx);
-+ bbr_update_cycle_phase(sk, rs, ctx);
-+ bbr_update_min_rtt(sk, rs);
-+
-+ if (bbr->mode == prev_mode &&
-+ bbr->min_rtt_us == prev_min_rtt_us &&
-+ bbr->try_fast_path) {
-+ return true;
-+ }
-+
-+ /* Skip model update, but control still needs to be updated */
-+ *update_model = false;
-+ }
-+ return false;
-+}
-+
-+__bpf_kfunc static void bbr_main(struct sock *sk, u32 ack, int flag, const struct rate_sample *rs)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ struct bbr_context ctx = { 0 };
-+ bool update_model = true;
-+ u32 bw, round_delivered;
-+ int ce_ratio = -1;
-+
-+ round_delivered = bbr_update_round_start(sk, rs, &ctx);
-+ if (bbr->round_start) {
-+ bbr->rounds_since_probe =
-+ min_t(s32, bbr->rounds_since_probe + 1, 0xFF);
-+ ce_ratio = bbr_update_ecn_alpha(sk);
-+ }
-+ bbr_plb(sk, rs, ce_ratio);
-+
-+ bbr->ecn_in_round |= (bbr->ecn_eligible && rs->is_ece);
-+ bbr_calculate_bw_sample(sk, rs, &ctx);
-+ bbr_update_latest_delivery_signals(sk, rs, &ctx);
-+
-+ if (bbr_run_fast_path(sk, &update_model, rs, &ctx))
-+ goto out;
-+
-+ if (update_model)
-+ bbr_update_model(sk, rs, &ctx);
-+
-+ bbr_update_gains(sk);
-+ bw = bbr_bw(sk);
-+ bbr_set_pacing_rate(sk, bw, bbr->pacing_gain);
-+ bbr_set_cwnd(sk, rs, rs->acked_sacked, bw, bbr->cwnd_gain,
-+ tcp_snd_cwnd(tp), &ctx);
-+ bbr_bound_cwnd_for_inflight_model(sk);
-+
-+out:
-+ bbr_advance_latest_delivery_signals(sk, rs, &ctx);
-+ bbr->prev_ca_state = inet_csk(sk)->icsk_ca_state;
-+ bbr->loss_in_cycle |= rs->lost > 0;
-+ bbr->ecn_in_cycle |= rs->delivered_ce > 0;
-+}
-+
-+__bpf_kfunc static void bbr_init(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr->initialized = 1;
-+
-+ bbr->init_cwnd = min(0x7FU, tcp_snd_cwnd(tp));
-+ bbr->prior_cwnd = tp->prior_cwnd;
-+ tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
-+ bbr->next_rtt_delivered = tp->delivered;
-+ bbr->prev_ca_state = TCP_CA_Open;
-+
-+ bbr->probe_rtt_done_stamp = 0;
-+ bbr->probe_rtt_round_done = 0;
-+ bbr->probe_rtt_min_us = tcp_min_rtt(tp);
-+ bbr->probe_rtt_min_stamp = tcp_jiffies32;
-+ bbr->min_rtt_us = tcp_min_rtt(tp);
-+ bbr->min_rtt_stamp = tcp_jiffies32;
-+
-+ bbr->has_seen_rtt = 0;
-+ bbr_init_pacing_rate_from_rtt(sk);
-+
-+ bbr->round_start = 0;
-+ bbr->idle_restart = 0;
-+ bbr->full_bw_reached = 0;
-+ bbr->full_bw = 0;
- bbr->full_bw_cnt = 0;
-- bbr_reset_lt_bw_sampling(sk);
-- return tcp_snd_cwnd(tcp_sk(sk));
-+ bbr->cycle_mstamp = 0;
-+ bbr->cycle_idx = 0;
-+
-+ bbr_reset_startup_mode(sk);
-+
-+ bbr->ack_epoch_mstamp = tp->tcp_mstamp;
-+ bbr->ack_epoch_acked = 0;
-+ bbr->extra_acked_win_rtts = 0;
-+ bbr->extra_acked_win_idx = 0;
-+ bbr->extra_acked[0] = 0;
-+ bbr->extra_acked[1] = 0;
-+
-+ bbr->ce_state = 0;
-+ bbr->prior_rcv_nxt = tp->rcv_nxt;
-+ bbr->try_fast_path = 0;
-+
-+ cmpxchg(&sk->sk_pacing_status, SK_PACING_NONE, SK_PACING_NEEDED);
-+
-+ /* Start sampling ECN mark rate after first full flight is ACKed: */
-+ bbr->loss_round_delivered = tp->delivered + 1;
-+ bbr->loss_round_start = 0;
-+ bbr->undo_bw_lo = 0;
-+ bbr->undo_inflight_lo = 0;
-+ bbr->undo_inflight_hi = 0;
-+ bbr->loss_events_in_round = 0;
-+ bbr->startup_ecn_rounds = 0;
-+ bbr_reset_congestion_signals(sk);
-+ bbr->bw_lo = ~0U;
-+ bbr->bw_hi[0] = 0;
-+ bbr->bw_hi[1] = 0;
-+ bbr->inflight_lo = ~0U;
-+ bbr->inflight_hi = ~0U;
-+ bbr_reset_full_bw(sk);
-+ bbr->bw_probe_up_cnt = ~0U;
-+ bbr->bw_probe_up_acks = 0;
-+ bbr->bw_probe_up_rounds = 0;
-+ bbr->probe_wait_us = 0;
-+ bbr->stopped_risky_probe = 0;
-+ bbr->ack_phase = BBR_ACKS_INIT;
-+ bbr->rounds_since_probe = 0;
-+ bbr->bw_probe_samples = 0;
-+ bbr->prev_probe_too_high = 0;
-+ bbr->ecn_eligible = 0;
-+ bbr->ecn_alpha = bbr_param(sk, ecn_alpha_init);
-+ bbr->alpha_last_delivered = 0;
-+ bbr->alpha_last_delivered_ce = 0;
-+ bbr->plb.pause_until = 0;
-+
-+ tp->fast_ack_mode = bbr_fast_ack_mode ? 1 : 0;
-+
-+ if (bbr_can_use_ecn(sk))
-+ tp->ecn_flags |= TCP_ECN_ECT_PERMANENT;
-+}
-+
-+/* BBR marks the current round trip as a loss round. */
-+static void bbr_note_loss(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ /* Capture "current" data over the full round trip of loss, to
-+ * have a better chance of observing the full capacity of the path.
-+ */
-+ if (!bbr->loss_in_round) /* first loss in this round trip? */
-+ bbr->loss_round_delivered = tp->delivered; /* set round trip */
-+ bbr->loss_in_round = 1;
-+ bbr->loss_in_cycle = 1;
- }
-
--/* Entering loss recovery, so save cwnd for when we exit or undo recovery. */
-+/* Core TCP stack informs us that the given skb was just marked lost. */
-+__bpf_kfunc static void bbr_skb_marked_lost(struct sock *sk,
-+ const struct sk_buff *skb)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ struct tcp_skb_cb *scb = TCP_SKB_CB(skb);
-+ struct rate_sample rs = {};
-+
-+ bbr_note_loss(sk);
-+
-+ if (!bbr->bw_probe_samples)
-+ return; /* not an skb sent while probing for bandwidth */
-+ if (unlikely(!scb->tx.delivered_mstamp))
-+ return; /* skb was SACKed, reneged, marked lost; ignore it */
-+ /* We are probing for bandwidth. Construct a rate sample that
-+ * estimates what happened in the flight leading up to this lost skb,
-+ * then see if the loss rate went too high, and if so at which packet.
-+ */
-+ rs.tx_in_flight = scb->tx.in_flight;
-+ rs.lost = tp->lost - scb->tx.lost;
-+ rs.is_app_limited = scb->tx.is_app_limited;
-+ if (bbr_is_inflight_too_high(sk, &rs)) {
-+ rs.tx_in_flight = bbr_inflight_hi_from_lost_skb(sk, &rs, skb);
-+ bbr_handle_inflight_too_high(sk, &rs);
-+ }
-+}
-+
-+static void bbr_run_loss_probe_recovery(struct sock *sk)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ struct bbr *bbr = inet_csk_ca(sk);
-+ struct rate_sample rs = {0};
-+
-+ bbr_note_loss(sk);
-+
-+ if (!bbr->bw_probe_samples)
-+ return; /* not sent while probing for bandwidth */
-+ /* We are probing for bandwidth. Construct a rate sample that
-+ * estimates what happened in the flight leading up to this
-+ * loss, then see if the loss rate went too high.
-+ */
-+ rs.lost = 1; /* TLP probe repaired loss of a single segment */
-+ rs.tx_in_flight = bbr->inflight_latest + rs.lost;
-+ rs.is_app_limited = tp->tlp_orig_data_app_limited;
-+ if (bbr_is_inflight_too_high(sk, &rs))
-+ bbr_handle_inflight_too_high(sk, &rs);
-+}
-+
-+/* Revert short-term model if current loss recovery event was spurious. */
-+__bpf_kfunc static u32 bbr_undo_cwnd(struct sock *sk)
-+{
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
-+ bbr_reset_full_bw(sk); /* spurious slow-down; reset full bw detector */
-+ bbr->loss_in_round = 0;
-+
-+ /* Revert to cwnd and other state saved before loss episode. */
-+ bbr->bw_lo = max(bbr->bw_lo, bbr->undo_bw_lo);
-+ bbr->inflight_lo = max(bbr->inflight_lo, bbr->undo_inflight_lo);
-+ bbr->inflight_hi = max(bbr->inflight_hi, bbr->undo_inflight_hi);
-+ bbr->try_fast_path = 0; /* take slow path to set proper cwnd, pacing */
-+ return bbr->prior_cwnd;
-+}
-+
-+/* Entering loss recovery, so save state for when we undo recovery. */
- __bpf_kfunc static u32 bbr_ssthresh(struct sock *sk)
- {
-+ struct bbr *bbr = inet_csk_ca(sk);
-+
- bbr_save_cwnd(sk);
-+ /* For undo, save state that adapts based on loss signal. */
-+ bbr->undo_bw_lo = bbr->bw_lo;
-+ bbr->undo_inflight_lo = bbr->inflight_lo;
-+ bbr->undo_inflight_hi = bbr->inflight_hi;
- return tcp_sk(sk)->snd_ssthresh;
- }
-
-+static enum tcp_bbr_phase bbr_get_phase(struct bbr *bbr)
-+{
-+ switch (bbr->mode) {
-+ case BBR_STARTUP:
-+ return BBR_PHASE_STARTUP;
-+ case BBR_DRAIN:
-+ return BBR_PHASE_DRAIN;
-+ case BBR_PROBE_BW:
-+ break;
-+ case BBR_PROBE_RTT:
-+ return BBR_PHASE_PROBE_RTT;
-+ default:
-+ return BBR_PHASE_INVALID;
-+ }
-+ switch (bbr->cycle_idx) {
-+ case BBR_BW_PROBE_UP:
-+ return BBR_PHASE_PROBE_BW_UP;
-+ case BBR_BW_PROBE_DOWN:
-+ return BBR_PHASE_PROBE_BW_DOWN;
-+ case BBR_BW_PROBE_CRUISE:
-+ return BBR_PHASE_PROBE_BW_CRUISE;
-+ case BBR_BW_PROBE_REFILL:
-+ return BBR_PHASE_PROBE_BW_REFILL;
-+ default:
-+ return BBR_PHASE_INVALID;
-+ }
-+}
-+
- static size_t bbr_get_info(struct sock *sk, u32 ext, int *attr,
-- union tcp_cc_info *info)
-+ union tcp_cc_info *info)
- {
- if (ext & (1 << (INET_DIAG_BBRINFO - 1)) ||
- ext & (1 << (INET_DIAG_VEGASINFO - 1))) {
-- struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-- u64 bw = bbr_bw(sk);
--
-- bw = bw * tp->mss_cache * USEC_PER_SEC >> BW_SCALE;
-- memset(&info->bbr, 0, sizeof(info->bbr));
-- info->bbr.bbr_bw_lo = (u32)bw;
-- info->bbr.bbr_bw_hi = (u32)(bw >> 32);
-- info->bbr.bbr_min_rtt = bbr->min_rtt_us;
-- info->bbr.bbr_pacing_gain = bbr->pacing_gain;
-- info->bbr.bbr_cwnd_gain = bbr->cwnd_gain;
-+ u64 bw = bbr_bw_bytes_per_sec(sk, bbr_bw(sk));
-+ u64 bw_hi = bbr_bw_bytes_per_sec(sk, bbr_max_bw(sk));
-+ u64 bw_lo = bbr->bw_lo == ~0U ?
-+ ~0ULL : bbr_bw_bytes_per_sec(sk, bbr->bw_lo);
-+ struct tcp_bbr_info *bbr_info = &info->bbr;
-+
-+ memset(bbr_info, 0, sizeof(*bbr_info));
-+ bbr_info->bbr_bw_lo = (u32)bw;
-+ bbr_info->bbr_bw_hi = (u32)(bw >> 32);
-+ bbr_info->bbr_min_rtt = bbr->min_rtt_us;
-+ bbr_info->bbr_pacing_gain = bbr->pacing_gain;
-+ bbr_info->bbr_cwnd_gain = bbr->cwnd_gain;
-+ bbr_info->bbr_bw_hi_lsb = (u32)bw_hi;
-+ bbr_info->bbr_bw_hi_msb = (u32)(bw_hi >> 32);
-+ bbr_info->bbr_bw_lo_lsb = (u32)bw_lo;
-+ bbr_info->bbr_bw_lo_msb = (u32)(bw_lo >> 32);
-+ bbr_info->bbr_mode = bbr->mode;
-+ bbr_info->bbr_phase = (__u8)bbr_get_phase(bbr);
-+ bbr_info->bbr_version = (__u8)BBR_VERSION;
-+ bbr_info->bbr_inflight_lo = bbr->inflight_lo;
-+ bbr_info->bbr_inflight_hi = bbr->inflight_hi;
-+ bbr_info->bbr_extra_acked = bbr_extra_acked(sk);
- *attr = INET_DIAG_BBRINFO;
-- return sizeof(info->bbr);
-+ return sizeof(*bbr_info);
- }
- return 0;
- }
-
- __bpf_kfunc static void bbr_set_state(struct sock *sk, u8 new_state)
- {
-+ struct tcp_sock *tp = tcp_sk(sk);
- struct bbr *bbr = inet_csk_ca(sk);
-
- if (new_state == TCP_CA_Loss) {
-- struct rate_sample rs = { .losses = 1 };
-
- bbr->prev_ca_state = TCP_CA_Loss;
-- bbr->full_bw = 0;
-- bbr->round_start = 1; /* treat RTO like end of a round */
-- bbr_lt_bw_sampling(sk, &rs);
-+ tcp_plb_update_state_upon_rto(sk, &bbr->plb);
-+ /* The tcp_write_timeout() call to sk_rethink_txhash() likely
-+ * repathed this flow, so re-learn the min network RTT on the
-+ * new path:
-+ */
-+ bbr_reset_full_bw(sk);
-+ if (!bbr_is_probing_bandwidth(sk) && bbr->inflight_lo == ~0U) {
-+ /* bbr_adapt_lower_bounds() needs cwnd before
-+ * we suffered an RTO, to update inflight_lo:
-+ */
-+ bbr->inflight_lo =
-+ max(tcp_snd_cwnd(tp), bbr->prior_cwnd);
-+ }
-+ } else if (bbr->prev_ca_state == TCP_CA_Loss &&
-+ new_state != TCP_CA_Loss) {
-+ bbr_exit_loss_recovery(sk);
- }
- }
-
-+
- static struct tcp_congestion_ops tcp_bbr_cong_ops __read_mostly = {
-- .flags = TCP_CONG_NON_RESTRICTED,
-+ .flags = TCP_CONG_NON_RESTRICTED | TCP_CONG_WANTS_CE_EVENTS,
- .name = "bbr",
- .owner = THIS_MODULE,
- .init = bbr_init,
- .cong_control = bbr_main,
- .sndbuf_expand = bbr_sndbuf_expand,
-+ .skb_marked_lost = bbr_skb_marked_lost,
- .undo_cwnd = bbr_undo_cwnd,
- .cwnd_event = bbr_cwnd_event,
- .ssthresh = bbr_ssthresh,
-- .min_tso_segs = bbr_min_tso_segs,
-+ .tso_segs = bbr_tso_segs,
- .get_info = bbr_get_info,
- .set_state = bbr_set_state,
- };
-@@ -1159,10 +2359,11 @@ BTF_KFUNCS_START(tcp_bbr_check_kfunc_ids)
- BTF_ID_FLAGS(func, bbr_init)
- BTF_ID_FLAGS(func, bbr_main)
- BTF_ID_FLAGS(func, bbr_sndbuf_expand)
-+BTF_ID_FLAGS(func, bbr_skb_marked_lost)
- BTF_ID_FLAGS(func, bbr_undo_cwnd)
- BTF_ID_FLAGS(func, bbr_cwnd_event)
- BTF_ID_FLAGS(func, bbr_ssthresh)
--BTF_ID_FLAGS(func, bbr_min_tso_segs)
-+BTF_ID_FLAGS(func, bbr_tso_segs)
- BTF_ID_FLAGS(func, bbr_set_state)
- BTF_KFUNCS_END(tcp_bbr_check_kfunc_ids)
-
-@@ -1195,5 +2396,12 @@ MODULE_AUTHOR("Van Jacobson <vanj@google.com>");
- MODULE_AUTHOR("Neal Cardwell <ncardwell@google.com>");
- MODULE_AUTHOR("Yuchung Cheng <ycheng@google.com>");
- MODULE_AUTHOR("Soheil Hassas Yeganeh <soheil@google.com>");
-+MODULE_AUTHOR("Priyaranjan Jha <priyarjha@google.com>");
-+MODULE_AUTHOR("Yousuk Seung <ysseung@google.com>");
-+MODULE_AUTHOR("Kevin Yang <yyd@google.com>");
-+MODULE_AUTHOR("Arjun Roy <arjunroy@google.com>");
-+MODULE_AUTHOR("David Morley <morleyd@google.com>");
-+
- MODULE_LICENSE("Dual BSD/GPL");
- MODULE_DESCRIPTION("TCP BBR (Bottleneck Bandwidth and RTT)");
-+MODULE_VERSION(__stringify(BBR_VERSION));
-diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
-index 28ffcfbeef14..7b13915ba288 100644
---- a/net/ipv4/tcp_cong.c
-+++ b/net/ipv4/tcp_cong.c
-@@ -237,6 +237,7 @@ void tcp_init_congestion_control(struct sock *sk)
- struct inet_connection_sock *icsk = inet_csk(sk);
-
- tcp_sk(sk)->prior_ssthresh = 0;
-+ tcp_sk(sk)->fast_ack_mode = 0;
- if (icsk->icsk_ca_ops->init)
- icsk->icsk_ca_ops->init(sk);
- if (tcp_ca_needs_ecn(sk))
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 570e87ad9a56..c539ac50f7a6 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -365,7 +365,7 @@ static void __tcp_ecn_check_ce(struct sock *sk, const struct sk_buff *skb)
- tcp_enter_quickack_mode(sk, 2);
- break;
- case INET_ECN_CE:
-- if (tcp_ca_needs_ecn(sk))
-+ if (tcp_ca_wants_ce_events(sk))
- tcp_ca_event(sk, CA_EVENT_ECN_IS_CE);
-
- if (!(tp->ecn_flags & TCP_ECN_DEMAND_CWR)) {
-@@ -376,7 +376,7 @@ static void __tcp_ecn_check_ce(struct sock *sk, const struct sk_buff *skb)
- tp->ecn_flags |= TCP_ECN_SEEN;
- break;
- default:
-- if (tcp_ca_needs_ecn(sk))
-+ if (tcp_ca_wants_ce_events(sk))
- tcp_ca_event(sk, CA_EVENT_ECN_NO_CE);
- tp->ecn_flags |= TCP_ECN_SEEN;
- break;
-@@ -1115,7 +1115,12 @@ static void tcp_verify_retransmit_hint(struct tcp_sock *tp, struct sk_buff *skb)
- */
- static void tcp_notify_skb_loss_event(struct tcp_sock *tp, const struct sk_buff *skb)
- {
-+ struct sock *sk = (struct sock *)tp;
-+ const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops;
-+
- tp->lost += tcp_skb_pcount(skb);
-+ if (ca_ops->skb_marked_lost)
-+ ca_ops->skb_marked_lost(sk, skb);
- }
-
- void tcp_mark_skb_lost(struct sock *sk, struct sk_buff *skb)
-@@ -1496,6 +1501,17 @@ static bool tcp_shifted_skb(struct sock *sk, struct sk_buff *prev,
- WARN_ON_ONCE(tcp_skb_pcount(skb) < pcount);
- tcp_skb_pcount_add(skb, -pcount);
-
-+ /* Adjust tx.in_flight as pcount is shifted from skb to prev. */
-+ if (WARN_ONCE(TCP_SKB_CB(skb)->tx.in_flight < pcount,
-+ "prev in_flight: %u skb in_flight: %u pcount: %u",
-+ TCP_SKB_CB(prev)->tx.in_flight,
-+ TCP_SKB_CB(skb)->tx.in_flight,
-+ pcount))
-+ TCP_SKB_CB(skb)->tx.in_flight = 0;
-+ else
-+ TCP_SKB_CB(skb)->tx.in_flight -= pcount;
-+ TCP_SKB_CB(prev)->tx.in_flight += pcount;
-+
- /* When we're adding to gso_segs == 1, gso_size will be zero,
- * in theory this shouldn't be necessary but as long as DSACK
- * code can come after this skb later on it's better to keep
-@@ -3790,7 +3806,8 @@ static void tcp_replace_ts_recent(struct tcp_sock *tp, u32 seq)
- /* This routine deals with acks during a TLP episode and ends an episode by
- * resetting tlp_high_seq. Ref: TLP algorithm in draft-ietf-tcpm-rack
- */
--static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag)
-+static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag,
-+ struct rate_sample *rs)
- {
- struct tcp_sock *tp = tcp_sk(sk);
-
-@@ -3807,6 +3824,7 @@ static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag)
- /* ACK advances: there was a loss, so reduce cwnd. Reset
- * tlp_high_seq in tcp_init_cwnd_reduction()
- */
-+ tcp_ca_event(sk, CA_EVENT_TLP_RECOVERY);
- tcp_init_cwnd_reduction(sk);
- tcp_set_ca_state(sk, TCP_CA_CWR);
- tcp_end_cwnd_reduction(sk);
-@@ -3817,6 +3835,11 @@ static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag)
- FLAG_NOT_DUP | FLAG_DATA_SACKED))) {
- /* Pure dupack: original and TLP probe arrived; no loss */
- tp->tlp_high_seq = 0;
-+ } else {
-+ /* This ACK matches a TLP retransmit. We cannot yet tell if
-+ * this ACK is for the original or the TLP retransmit.
-+ */
-+ rs->is_acking_tlp_retrans_seq = 1;
- }
- }
-
-@@ -3925,6 +3948,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
-
- prior_fack = tcp_is_sack(tp) ? tcp_highest_sack_seq(tp) : tp->snd_una;
- rs.prior_in_flight = tcp_packets_in_flight(tp);
-+ tcp_rate_check_app_limited(sk);
-
- /* ts_recent update must be made after we are sure that the packet
- * is in window.
-@@ -3999,7 +4023,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
- tcp_rack_update_reo_wnd(sk, &rs);
-
- if (tp->tlp_high_seq)
-- tcp_process_tlp_ack(sk, ack, flag);
-+ tcp_process_tlp_ack(sk, ack, flag, &rs);
-
- if (tcp_ack_is_dubious(sk, flag)) {
- if (!(flag & (FLAG_SND_UNA_ADVANCED |
-@@ -4023,6 +4047,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
- delivered = tcp_newly_delivered(sk, delivered, flag);
- lost = tp->lost - lost; /* freshly marked lost */
- rs.is_ack_delayed = !!(flag & FLAG_ACK_MAYBE_DELAYED);
-+ rs.is_ece = !!(flag & FLAG_ECE);
- tcp_rate_gen(sk, delivered, lost, is_sack_reneg, sack_state.rate);
- tcp_cong_control(sk, ack, delivered, flag, sack_state.rate);
- tcp_xmit_recovery(sk, rexmit);
-@@ -4042,7 +4067,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
- tcp_ack_probe(sk);
-
- if (tp->tlp_high_seq)
-- tcp_process_tlp_ack(sk, ack, flag);
-+ tcp_process_tlp_ack(sk, ack, flag, &rs);
- return 1;
-
- old_ack:
-@@ -5714,13 +5739,14 @@ static void __tcp_ack_snd_check(struct sock *sk, int ofo_possible)
-
- /* More than one full frame received... */
- if (((tp->rcv_nxt - tp->rcv_wup) > inet_csk(sk)->icsk_ack.rcv_mss &&
-+ (tp->fast_ack_mode == 1 ||
- /* ... and right edge of window advances far enough.
- * (tcp_recvmsg() will send ACK otherwise).
- * If application uses SO_RCVLOWAT, we want send ack now if
- * we have not received enough bytes to satisfy the condition.
- */
-- (tp->rcv_nxt - tp->copied_seq < sk->sk_rcvlowat ||
-- __tcp_select_window(sk) >= tp->rcv_wnd)) ||
-+ (tp->rcv_nxt - tp->copied_seq < sk->sk_rcvlowat ||
-+ __tcp_select_window(sk) >= tp->rcv_wnd))) ||
- /* We ACK each frame or... */
- tcp_in_quickack_mode(sk) ||
- /* Protocol state mandates a one-time immediate ACK */
-diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
-index 0fbebf6266e9..6eb1d369c584 100644
---- a/net/ipv4/tcp_minisocks.c
-+++ b/net/ipv4/tcp_minisocks.c
-@@ -460,6 +460,8 @@ void tcp_ca_openreq_child(struct sock *sk, const struct dst_entry *dst)
- u32 ca_key = dst_metric(dst, RTAX_CC_ALGO);
- bool ca_got_dst = false;
-
-+ tcp_set_ecn_low_from_dst(sk, dst);
-+
- if (ca_key != TCP_CA_UNSPEC) {
- const struct tcp_congestion_ops *ca;
-
-diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
-index 95618d0e78e4..3f4bdd2b6476 100644
---- a/net/ipv4/tcp_output.c
-+++ b/net/ipv4/tcp_output.c
-@@ -336,10 +336,9 @@ static void tcp_ecn_send_syn(struct sock *sk, struct sk_buff *skb)
- bool bpf_needs_ecn = tcp_bpf_ca_needs_ecn(sk);
- bool use_ecn = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn) == 1 ||
- tcp_ca_needs_ecn(sk) || bpf_needs_ecn;
-+ const struct dst_entry *dst = __sk_dst_get(sk);
-
- if (!use_ecn) {
-- const struct dst_entry *dst = __sk_dst_get(sk);
--
- if (dst && dst_feature(dst, RTAX_FEATURE_ECN))
- use_ecn = true;
- }
-@@ -351,6 +350,9 @@ static void tcp_ecn_send_syn(struct sock *sk, struct sk_buff *skb)
- tp->ecn_flags = TCP_ECN_OK;
- if (tcp_ca_needs_ecn(sk) || bpf_needs_ecn)
- INET_ECN_xmit(sk);
-+
-+ if (dst)
-+ tcp_set_ecn_low_from_dst(sk, dst);
- }
- }
-
-@@ -388,7 +390,8 @@ static void tcp_ecn_send(struct sock *sk, struct sk_buff *skb,
- th->cwr = 1;
- skb_shinfo(skb)->gso_type |= SKB_GSO_TCP_ECN;
- }
-- } else if (!tcp_ca_needs_ecn(sk)) {
-+ } else if (!(tp->ecn_flags & TCP_ECN_ECT_PERMANENT) &&
-+ !tcp_ca_needs_ecn(sk)) {
- /* ACK or retransmitted segment: clear ECT|CE */
- INET_ECN_dontxmit(sk);
- }
-@@ -1601,7 +1604,7 @@ int tcp_fragment(struct sock *sk, enum tcp_queue tcp_queue,
- {
- struct tcp_sock *tp = tcp_sk(sk);
- struct sk_buff *buff;
-- int old_factor;
-+ int old_factor, inflight_prev;
- long limit;
- int nlen;
- u8 flags;
-@@ -1676,6 +1679,30 @@ int tcp_fragment(struct sock *sk, enum tcp_queue tcp_queue,
-
- if (diff)
- tcp_adjust_pcount(sk, skb, diff);
-+
-+ inflight_prev = TCP_SKB_CB(skb)->tx.in_flight - old_factor;
-+ if (inflight_prev < 0) {
-+ WARN_ONCE(tcp_skb_tx_in_flight_is_suspicious(
-+ old_factor,
-+ TCP_SKB_CB(skb)->sacked,
-+ TCP_SKB_CB(skb)->tx.in_flight),
-+ "inconsistent: tx.in_flight: %u "
-+ "old_factor: %d mss: %u sacked: %u "
-+ "1st pcount: %d 2nd pcount: %d "
-+ "1st len: %u 2nd len: %u ",
-+ TCP_SKB_CB(skb)->tx.in_flight, old_factor,
-+ mss_now, TCP_SKB_CB(skb)->sacked,
-+ tcp_skb_pcount(skb), tcp_skb_pcount(buff),
-+ skb->len, buff->len);
-+ inflight_prev = 0;
-+ }
-+ /* Set 1st tx.in_flight as if 1st were sent by itself: */
-+ TCP_SKB_CB(skb)->tx.in_flight = inflight_prev +
-+ tcp_skb_pcount(skb);
-+ /* Set 2nd tx.in_flight with new 1st and 2nd pcounts: */
-+ TCP_SKB_CB(buff)->tx.in_flight = inflight_prev +
-+ tcp_skb_pcount(skb) +
-+ tcp_skb_pcount(buff);
- }
-
- /* Link BUFF into the send queue. */
-@@ -2033,13 +2060,12 @@ static u32 tcp_tso_autosize(const struct sock *sk, unsigned int mss_now,
- static u32 tcp_tso_segs(struct sock *sk, unsigned int mss_now)
- {
- const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops;
-- u32 min_tso, tso_segs;
--
-- min_tso = ca_ops->min_tso_segs ?
-- ca_ops->min_tso_segs(sk) :
-- READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_min_tso_segs);
-+ u32 tso_segs;
-
-- tso_segs = tcp_tso_autosize(sk, mss_now, min_tso);
-+ tso_segs = ca_ops->tso_segs ?
-+ ca_ops->tso_segs(sk, mss_now) :
-+ tcp_tso_autosize(sk, mss_now,
-+ sock_net(sk)->ipv4.sysctl_tcp_min_tso_segs);
- return min_t(u32, tso_segs, sk->sk_gso_max_segs);
- }
-
-@@ -2767,6 +2793,7 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
- skb_set_delivery_time(skb, tp->tcp_wstamp_ns, true);
- list_move_tail(&skb->tcp_tsorted_anchor, &tp->tsorted_sent_queue);
- tcp_init_tso_segs(skb, mss_now);
-+ tcp_set_tx_in_flight(sk, skb);
- goto repair; /* Skip network transmission */
- }
-
-@@ -2981,6 +3008,7 @@ void tcp_send_loss_probe(struct sock *sk)
- if (WARN_ON(!skb || !tcp_skb_pcount(skb)))
- goto rearm_timer;
-
-+ tp->tlp_orig_data_app_limited = TCP_SKB_CB(skb)->tx.is_app_limited;
- if (__tcp_retransmit_skb(sk, skb, 1))
- goto rearm_timer;
-
-diff --git a/net/ipv4/tcp_rate.c b/net/ipv4/tcp_rate.c
-index a8f6d9d06f2e..8737f2134648 100644
---- a/net/ipv4/tcp_rate.c
-+++ b/net/ipv4/tcp_rate.c
-@@ -34,6 +34,24 @@
- * ready to send in the write queue.
- */
-
-+void tcp_set_tx_in_flight(struct sock *sk, struct sk_buff *skb)
-+{
-+ struct tcp_sock *tp = tcp_sk(sk);
-+ u32 in_flight;
-+
-+ /* Check, sanitize, and record packets in flight after skb was sent. */
-+ in_flight = tcp_packets_in_flight(tp) + tcp_skb_pcount(skb);
-+ if (WARN_ONCE(in_flight > TCPCB_IN_FLIGHT_MAX,
-+ "insane in_flight %u cc %s mss %u "
-+ "cwnd %u pif %u %u %u %u\n",
-+ in_flight, inet_csk(sk)->icsk_ca_ops->name,
-+ tp->mss_cache, tp->snd_cwnd,
-+ tp->packets_out, tp->retrans_out,
-+ tp->sacked_out, tp->lost_out))
-+ in_flight = TCPCB_IN_FLIGHT_MAX;
-+ TCP_SKB_CB(skb)->tx.in_flight = in_flight;
-+}
-+
- /* Snapshot the current delivery information in the skb, to generate
- * a rate sample later when the skb is (s)acked in tcp_rate_skb_delivered().
- */
-@@ -66,7 +84,9 @@ void tcp_rate_skb_sent(struct sock *sk, struct sk_buff *skb)
- TCP_SKB_CB(skb)->tx.delivered_mstamp = tp->delivered_mstamp;
- TCP_SKB_CB(skb)->tx.delivered = tp->delivered;
- TCP_SKB_CB(skb)->tx.delivered_ce = tp->delivered_ce;
-+ TCP_SKB_CB(skb)->tx.lost = tp->lost;
- TCP_SKB_CB(skb)->tx.is_app_limited = tp->app_limited ? 1 : 0;
-+ tcp_set_tx_in_flight(sk, skb);
- }
-
- /* When an skb is sacked or acked, we fill in the rate sample with the (prior)
-@@ -91,18 +111,21 @@ void tcp_rate_skb_delivered(struct sock *sk, struct sk_buff *skb,
- if (!rs->prior_delivered ||
- tcp_skb_sent_after(tx_tstamp, tp->first_tx_mstamp,
- scb->end_seq, rs->last_end_seq)) {
-+ rs->prior_lost = scb->tx.lost;
- rs->prior_delivered_ce = scb->tx.delivered_ce;
- rs->prior_delivered = scb->tx.delivered;
- rs->prior_mstamp = scb->tx.delivered_mstamp;
- rs->is_app_limited = scb->tx.is_app_limited;
- rs->is_retrans = scb->sacked & TCPCB_RETRANS;
-+ rs->tx_in_flight = scb->tx.in_flight;
- rs->last_end_seq = scb->end_seq;
-
- /* Record send time of most recently ACKed packet: */
- tp->first_tx_mstamp = tx_tstamp;
- /* Find the duration of the "send phase" of this window: */
-- rs->interval_us = tcp_stamp_us_delta(tp->first_tx_mstamp,
-- scb->tx.first_tx_mstamp);
-+ rs->interval_us = tcp_stamp32_us_delta(
-+ tp->first_tx_mstamp,
-+ scb->tx.first_tx_mstamp);
-
- }
- /* Mark off the skb delivered once it's sacked to avoid being
-@@ -144,6 +167,7 @@ void tcp_rate_gen(struct sock *sk, u32 delivered, u32 lost,
- return;
- }
- rs->delivered = tp->delivered - rs->prior_delivered;
-+ rs->lost = tp->lost - rs->prior_lost;
-
- rs->delivered_ce = tp->delivered_ce - rs->prior_delivered_ce;
- /* delivered_ce occupies less than 32 bits in the skb control block */
-@@ -155,7 +179,7 @@ void tcp_rate_gen(struct sock *sk, u32 delivered, u32 lost,
- * longer phase.
- */
- snd_us = rs->interval_us; /* send phase */
-- ack_us = tcp_stamp_us_delta(tp->tcp_mstamp,
-+ ack_us = tcp_stamp32_us_delta(tp->tcp_mstamp,
- rs->prior_mstamp); /* ack phase */
- rs->interval_us = max(snd_us, ack_us);
-
-diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
-index 4d40615dc8fc..f27941201ef2 100644
---- a/net/ipv4/tcp_timer.c
-+++ b/net/ipv4/tcp_timer.c
-@@ -689,6 +689,7 @@ void tcp_write_timer_handler(struct sock *sk)
- return;
- }
-
-+ tcp_rate_check_app_limited(sk);
- tcp_mstamp_refresh(tcp_sk(sk));
- event = icsk->icsk_pending;
-
---
-2.46.0.rc1
-
diff --git a/SOURCES/cachy-bore.patch b/SOURCES/cachy-bore.patch
index 7421807..f15d6da 100644
--- a/SOURCES/cachy-bore.patch
+++ b/SOURCES/cachy-bore.patch
@@ -1,24 +1,53 @@
-From 3816495f5635104fae1dda21b743f750c2914196 Mon Sep 17 00:00:00 2001
-From: Eric Naim <dnaim@proton.me>
-Date: Sat, 3 Aug 2024 15:23:30 +0700
-Subject: [PATCH] bore
+From 2328e7500823151cb2f119b847454e63e9da0f64 Mon Sep 17 00:00:00 2001
+From: Masahito S <firelzrd@gmail.com>
+Date: Thu, 3 Oct 2024 17:33:57 +0900
+Subject: [PATCH] linux6.11.y-bore5.6.0
---
- include/linux/sched.h | 10 ++
- init/Kconfig | 17 +++
- kernel/Kconfig.hz | 16 ++
- kernel/sched/core.c | 143 ++++++++++++++++++
- kernel/sched/debug.c | 60 +++++++-
- kernel/sched/fair.c | 322 ++++++++++++++++++++++++++++++++++++++--
- kernel/sched/features.h | 22 ++-
- kernel/sched/sched.h | 7 +
- 8 files changed, 583 insertions(+), 14 deletions(-)
+ include/linux/sched.h | 20 +-
+ include/linux/sched/bore.h | 37 ++++
+ init/Kconfig | 17 ++
+ kernel/Kconfig.hz | 17 ++
+ kernel/fork.c | 5 +
+ kernel/sched/Makefile | 1 +
+ kernel/sched/bore.c | 380 +++++++++++++++++++++++++++++++++++++
+ kernel/sched/core.c | 7 +
+ kernel/sched/debug.c | 60 +++++-
+ kernel/sched/fair.c | 89 ++++++++-
+ kernel/sched/features.h | 4 +
+ kernel/sched/sched.h | 7 +
+ 12 files changed, 639 insertions(+), 5 deletions(-)
+ create mode 100644 include/linux/sched/bore.h
+ create mode 100644 kernel/sched/bore.c
diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 76214d7c8..9f65d367b 100644
+index f8d150343d..2481cf0125 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -547,6 +547,16 @@ struct sched_entity {
+@@ -535,6 +535,14 @@ struct sched_statistics {
+ #endif /* CONFIG_SCHEDSTATS */
+ } ____cacheline_aligned;
+
++#ifdef CONFIG_SCHED_BORE
++struct sched_burst_cache {
++ u8 score;
++ u32 count;
++ u64 timestamp;
++};
++#endif // CONFIG_SCHED_BORE
++
+ struct sched_entity {
+ /* For load-balancing: */
+ struct load_weight load;
+@@ -543,12 +551,22 @@ struct sched_entity {
+ u64 min_vruntime;
+
+ struct list_head group_node;
+- unsigned int on_rq;
++ unsigned char on_rq;
++ unsigned char rel_deadline;
+
+ u64 exec_start;
u64 sum_exec_runtime;
u64 prev_sum_exec_runtime;
u64 vruntime;
@@ -28,18 +57,60 @@ index 76214d7c8..9f65d367b 100644
+ u8 curr_burst_penalty;
+ u8 burst_penalty;
+ u8 burst_score;
-+ u8 child_burst;
-+ u32 child_burst_cnt;
-+ u64 child_burst_last_cached;
++ struct sched_burst_cache child_burst;
++ struct sched_burst_cache group_burst;
+#endif // CONFIG_SCHED_BORE
s64 vlag;
u64 slice;
+diff --git a/include/linux/sched/bore.h b/include/linux/sched/bore.h
+new file mode 100644
+index 0000000000..12a613a94f
+--- /dev/null
++++ b/include/linux/sched/bore.h
+@@ -0,0 +1,37 @@
++
++#include <linux/sched.h>
++#include <linux/sched/cputime.h>
++
++#ifndef _LINUX_SCHED_BORE_H
++#define _LINUX_SCHED_BORE_H
++
++#ifdef CONFIG_SCHED_BORE
++extern u8 __read_mostly sched_bore;
++extern u8 __read_mostly sched_burst_exclude_kthreads;
++extern u8 __read_mostly sched_burst_smoothness_long;
++extern u8 __read_mostly sched_burst_smoothness_short;
++extern u8 __read_mostly sched_burst_fork_atavistic;
++extern u8 __read_mostly sched_burst_parity_threshold;
++extern u8 __read_mostly sched_burst_penalty_offset;
++extern uint __read_mostly sched_burst_penalty_scale;
++extern uint __read_mostly sched_burst_cache_lifetime;
++extern uint __read_mostly sched_deadline_boost_mask;
++
++extern void update_burst_score(struct sched_entity *se);
++extern void update_burst_penalty(struct sched_entity *se);
++
++extern void restart_burst(struct sched_entity *se);
++extern void restart_burst_rescale_deadline(struct sched_entity *se);
++
++extern int sched_bore_update_handler(const struct ctl_table *table, int write,
++ void __user *buffer, size_t *lenp, loff_t *ppos);
++
++extern void sched_clone_bore(
++ struct task_struct *p, struct task_struct *parent, u64 clone_flags);
++
++extern void init_task_bore(struct task_struct *p);
++
++extern void reweight_entity(
++ struct cfs_rq *cfs_rq, struct sched_entity *se, unsigned long weight);
++#endif // CONFIG_SCHED_BORE
++#endif // _LINUX_SCHED_BORE_H
diff --git a/init/Kconfig b/init/Kconfig
-index febdea2af..171b5d995 100644
+index 5783a0b875..b648ed538c 100644
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1283,6 +1283,23 @@ config CHECKPOINT_RESTORE
+@@ -1297,6 +1297,23 @@ config CHECKPOINT_RESTORE
If unsure, say N here.
@@ -64,10 +135,10 @@ index febdea2af..171b5d995 100644
bool "Automatic process group scheduling"
select CGROUPS
diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz
-index 38ef6d068..5f6eecd1e 100644
+index 38ef6d0688..253c566b59 100644
--- a/kernel/Kconfig.hz
+++ b/kernel/Kconfig.hz
-@@ -55,5 +55,21 @@ config HZ
+@@ -55,5 +55,22 @@ config HZ
default 300 if HZ_300
default 1000 if HZ_1000
@@ -78,7 +149,8 @@ index 38ef6d068..5f6eecd1e 100644
+ The BORE Scheduler automatically calculates the optimal base
+ slice for the configured HZ using the following equation:
+
-+ base_slice_ns = max(min_base_slice_ns, 1000000000/HZ)
++ base_slice_ns =
++ 1000000000/HZ * DIV_ROUNDUP(min_base_slice_ns, 1000000000/HZ)
+
+ This option sets the default lower bound limit of the base slice
+ to prevent the loss of task throughput due to overscheduling.
@@ -89,32 +161,188 @@ index 38ef6d068..5f6eecd1e 100644
+
config SCHED_HRTICK
def_bool HIGH_RES_TIMERS
-diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index ebf21373f..5d1c97612 100644
---- a/kernel/sched/core.c
-+++ b/kernel/sched/core.c
-@@ -4512,6 +4512,138 @@ int wake_up_state(struct task_struct *p, unsigned int state)
- return try_to_wake_up(p, state, 0);
- }
+diff --git a/kernel/fork.c b/kernel/fork.c
+index cc760491f2..179b884da3 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -111,6 +111,8 @@
+ #include <asm/cacheflush.h>
+ #include <asm/tlbflush.h>
+
++#include <linux/sched/bore.h>
++
+ #include <trace/events/sched.h>
+
+ #define CREATE_TRACE_POINTS
+@@ -2344,6 +2346,9 @@ __latent_entropy struct task_struct *copy_process(
+ retval = sched_fork(clone_flags, p);
+ if (retval)
+ goto bad_fork_cleanup_policy;
++#ifdef CONFIG_SCHED_BORE
++ sched_clone_bore(p, current, clone_flags);
++#endif // CONFIG_SCHED_BORE
+ retval = perf_event_init_task(p, clone_flags);
+ if (retval)
+diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
+index 976092b7bd..293aad6754 100644
+--- a/kernel/sched/Makefile
++++ b/kernel/sched/Makefile
+@@ -32,3 +32,4 @@ obj-y += core.o
+ obj-y += fair.o
+ obj-y += build_policy.o
+ obj-y += build_utility.o
++obj-y += bore.o
+diff --git a/kernel/sched/bore.c b/kernel/sched/bore.c
+new file mode 100644
+index 0000000000..62a0191a32
+--- /dev/null
++++ b/kernel/sched/bore.c
+@@ -0,0 +1,380 @@
++/*
++ * Burst-Oriented Response Enhancer (BORE) CPU Scheduler
++ * Copyright (C) 2021-2024 Masahito Suzuki <firelzrd@gmail.com>
++ */
++#include <linux/cpuset.h>
++#include <linux/sched/bore.h>
++#include "sched.h"
++
+#ifdef CONFIG_SCHED_BORE
-+extern u8 sched_burst_fork_atavistic;
-+extern uint sched_burst_cache_lifetime;
-+
-+static void __init sched_init_bore(void) {
-+ init_task.se.burst_time = 0;
-+ init_task.se.prev_burst_penalty = 0;
-+ init_task.se.curr_burst_penalty = 0;
-+ init_task.se.burst_penalty = 0;
-+ init_task.se.burst_score = 0;
-+ init_task.se.child_burst_last_cached = 0;
++u8 __read_mostly sched_bore = 1;
++u8 __read_mostly sched_burst_exclude_kthreads = 1;
++u8 __read_mostly sched_burst_smoothness_long = 1;
++u8 __read_mostly sched_burst_smoothness_short = 0;
++u8 __read_mostly sched_burst_fork_atavistic = 2;
++u8 __read_mostly sched_burst_parity_threshold = 2;
++u8 __read_mostly sched_burst_penalty_offset = 24;
++uint __read_mostly sched_burst_penalty_scale = 1280;
++uint __read_mostly sched_burst_cache_lifetime = 60000000;
++uint __read_mostly sched_deadline_boost_mask = ENQUEUE_INITIAL
++ | ENQUEUE_WAKEUP;
++static int __maybe_unused sixty_four = 64;
++static int __maybe_unused maxval_u8 = 255;
++static int __maybe_unused maxval_12_bits = 4095;
++
++#define MAX_BURST_PENALTY (39U <<2)
++
++static inline u32 log2plus1_u64_u32f8(u64 v) {
++ u32 integral = fls64(v);
++ u8 fractional = v << (64 - integral) >> 55;
++ return integral << 8 | fractional;
+}
+
-+inline void sched_fork_bore(struct task_struct *p) {
-+ p->se.burst_time = 0;
-+ p->se.curr_burst_penalty = 0;
-+ p->se.burst_score = 0;
-+ p->se.child_burst_last_cached = 0;
++static inline u32 calc_burst_penalty(u64 burst_time) {
++ u32 greed, tolerance, penalty, scaled_penalty;
++
++ greed = log2plus1_u64_u32f8(burst_time);
++ tolerance = sched_burst_penalty_offset << 8;
++ penalty = max(0, (s32)(greed - tolerance));
++ scaled_penalty = penalty * sched_burst_penalty_scale >> 16;
++
++ return min(MAX_BURST_PENALTY, scaled_penalty);
++}
++
++static inline u64 __scale_slice(u64 delta, u8 score)
++{return mul_u64_u32_shr(delta, sched_prio_to_wmult[score], 22);}
++
++static inline u64 __unscale_slice(u64 delta, u8 score)
++{return mul_u64_u32_shr(delta, sched_prio_to_weight[score], 10);}
++
++static void reweight_task_by_prio(struct task_struct *p, int prio) {
++ struct sched_entity *se = &p->se;
++ unsigned long weight = scale_load(sched_prio_to_weight[prio]);
++
++ reweight_entity(cfs_rq_of(se), se, weight);
++ se->load.inv_weight = sched_prio_to_wmult[prio];
++}
++
++static inline u8 effective_prio(struct task_struct *p) {
++ u8 prio = p->static_prio - MAX_RT_PRIO;
++ if (likely(sched_bore))
++ prio += p->se.burst_score;
++ return min(39, prio);
++}
++
++void update_burst_score(struct sched_entity *se) {
++ if (!entity_is_task(se)) return;
++ struct task_struct *p = task_of(se);
++ u8 prev_prio = effective_prio(p);
++
++ u8 burst_score = 0;
++ if (!((p->flags & PF_KTHREAD) && likely(sched_burst_exclude_kthreads)))
++ burst_score = se->burst_penalty >> 2;
++ se->burst_score = burst_score;
++
++ u8 new_prio = effective_prio(p);
++ if (new_prio != prev_prio)
++ reweight_task_by_prio(p, new_prio);
++}
++
++void update_burst_penalty(struct sched_entity *se) {
++ se->curr_burst_penalty = calc_burst_penalty(se->burst_time);
++ se->burst_penalty = max(se->prev_burst_penalty, se->curr_burst_penalty);
++ update_burst_score(se);
++}
++
++static inline u32 binary_smooth(u32 new, u32 old) {
++ int increment = new - old;
++ return (0 <= increment)?
++ old + ( increment >> (int)sched_burst_smoothness_long):
++ old - (-increment >> (int)sched_burst_smoothness_short);
++}
++
++static void revolve_burst_penalty(struct sched_entity *se) {
++ se->prev_burst_penalty =
++ binary_smooth(se->curr_burst_penalty, se->prev_burst_penalty);
++ se->burst_time = 0;
++ se->curr_burst_penalty = 0;
++}
++
++inline void restart_burst(struct sched_entity *se) {
++ revolve_burst_penalty(se);
++ se->burst_penalty = se->prev_burst_penalty;
++ update_burst_score(se);
++}
++
++void restart_burst_rescale_deadline(struct sched_entity *se) {
++ s64 vscaled, wremain, vremain = se->deadline - se->vruntime;
++ struct task_struct *p = task_of(se);
++ u8 prev_prio = effective_prio(p);
++ restart_burst(se);
++ u8 new_prio = effective_prio(p);
++ if (prev_prio > new_prio) {
++ wremain = __unscale_slice(abs(vremain), prev_prio);
++ vscaled = __scale_slice(wremain, new_prio);
++ if (unlikely(vremain < 0))
++ vscaled = -vscaled;
++ se->deadline = se->vruntime + vscaled;
++ }
++}
++
++static void reset_task_weights_bore(void) {
++ struct task_struct *task;
++ struct rq *rq;
++ struct rq_flags rf;
++
++ write_lock_irq(&tasklist_lock);
++ for_each_process(task) {
++ rq = task_rq(task);
++ rq_lock_irqsave(rq, &rf);
++ reweight_task_by_prio(task, effective_prio(task));
++ rq_unlock_irqrestore(rq, &rf);
++ }
++ write_unlock_irq(&tasklist_lock);
++}
++
++int sched_bore_update_handler(const struct ctl_table *table, int write,
++ void __user *buffer, size_t *lenp, loff_t *ppos) {
++ int ret = proc_dou8vec_minmax(table, write, buffer, lenp, ppos);
++ if (ret || !write)
++ return ret;
++
++ reset_task_weights_bore();
++
++ return 0;
+}
+
+static u32 count_child_tasks(struct task_struct *p) {
@@ -124,52 +352,45 @@ index ebf21373f..5d1c97612 100644
+ return cnt;
+}
+
-+static inline bool task_is_inheritable(struct task_struct *p) {
-+ return (p->sched_class == &fair_sched_class);
-+}
++static inline bool task_is_bore_eligible(struct task_struct *p)
++{return p->sched_class == &fair_sched_class;}
+
-+static inline bool child_burst_cache_expired(struct task_struct *p, u64 now) {
-+ u64 expiration_time =
-+ p->se.child_burst_last_cached + sched_burst_cache_lifetime;
-+ return ((s64)(expiration_time - now) < 0);
-+}
++static inline bool burst_cache_expired(struct sched_burst_cache *bc, u64 now)
++{return (s64)(bc->timestamp + sched_burst_cache_lifetime - now) < 0;}
+
-+static void __update_child_burst_cache(
-+ struct task_struct *p, u32 cnt, u32 sum, u64 now) {
-+ u8 avg = 0;
-+ if (cnt) avg = sum / cnt;
-+ p->se.child_burst = max(avg, p->se.burst_penalty);
-+ p->se.child_burst_cnt = cnt;
-+ p->se.child_burst_last_cached = now;
++static void update_burst_cache(struct sched_burst_cache *bc,
++ struct task_struct *p, u32 cnt, u32 sum, u64 now) {
++ u8 avg = cnt ? sum / cnt : 0;
++ bc->score = max(avg, p->se.burst_penalty);
++ bc->count = cnt;
++ bc->timestamp = now;
+}
+
+static inline void update_child_burst_direct(struct task_struct *p, u64 now) {
++ u32 cnt = 0, sum = 0;
+ struct task_struct *child;
-+ u32 cnt = 0;
-+ u32 sum = 0;
+
+ list_for_each_entry(child, &p->children, sibling) {
-+ if (!task_is_inheritable(child)) continue;
++ if (!task_is_bore_eligible(child)) continue;
+ cnt++;
+ sum += child->se.burst_penalty;
+ }
+
-+ __update_child_burst_cache(p, cnt, sum, now);
++ update_burst_cache(&p->se.child_burst, p, cnt, sum, now);
+}
+
-+static inline u8 __inherit_burst_direct(struct task_struct *p, u64 now) {
-+ struct task_struct *parent = p->real_parent;
-+ if (child_burst_cache_expired(parent, now))
++static inline u8 inherit_burst_direct(struct task_struct *p, u64 now) {
++ struct task_struct *parent = p;
++ if (burst_cache_expired(&parent->se.child_burst, now))
+ update_child_burst_direct(parent, now);
+
-+ return parent->se.child_burst;
++ return parent->se.child_burst.score;
+}
+
+static void update_child_burst_topological(
+ struct task_struct *p, u64 now, u32 depth, u32 *acnt, u32 *asum) {
++ u32 cnt = 0, dcnt = 0, sum = 0;
+ struct task_struct *child, *dec;
-+ u32 cnt = 0, dcnt = 0;
-+ u32 sum = 0;
+
+ list_for_each_entry(child, &p->children, sibling) {
+ dec = child;
@@ -177,95 +398,214 @@ index ebf21373f..5d1c97612 100644
+ dec = list_first_entry(&dec->children, struct task_struct, sibling);
+
+ if (!dcnt || !depth) {
-+ if (!task_is_inheritable(dec)) continue;
++ if (!task_is_bore_eligible(dec)) continue;
+ cnt++;
+ sum += dec->se.burst_penalty;
+ continue;
+ }
-+ if (!child_burst_cache_expired(dec, now)) {
-+ cnt += dec->se.child_burst_cnt;
-+ sum += (u32)dec->se.child_burst * dec->se.child_burst_cnt;
++ if (!burst_cache_expired(&dec->se.child_burst, now)) {
++ cnt += dec->se.child_burst.count;
++ sum += (u32)dec->se.child_burst.score * dec->se.child_burst.count;
+ continue;
+ }
+ update_child_burst_topological(dec, now, depth - 1, &cnt, &sum);
+ }
+
-+ __update_child_burst_cache(p, cnt, sum, now);
++ update_burst_cache(&p->se.child_burst, p, cnt, sum, now);
+ *acnt += cnt;
+ *asum += sum;
+}
+
-+static inline u8 __inherit_burst_topological(struct task_struct *p, u64 now) {
-+ struct task_struct *anc = p->real_parent;
++static inline u8 inherit_burst_topological(struct task_struct *p, u64 now) {
++ struct task_struct *anc = p;
+ u32 cnt = 0, sum = 0;
+
+ while (anc->real_parent != anc && count_child_tasks(anc) == 1)
+ anc = anc->real_parent;
+
-+ if (child_burst_cache_expired(anc, now))
++ if (burst_cache_expired(&anc->se.child_burst, now))
+ update_child_burst_topological(
+ anc, now, sched_burst_fork_atavistic - 1, &cnt, &sum);
+
-+ return anc->se.child_burst;
++ return anc->se.child_burst.score;
+}
+
-+static inline void inherit_burst(struct task_struct *p) {
-+ u8 burst_cache;
-+ u64 now = ktime_get_ns();
++static inline void update_tg_burst(struct task_struct *p, u64 now) {
++ struct task_struct *task;
++ u32 cnt = 0, sum = 0;
+
++ for_each_thread(p, task) {
++ if (!task_is_bore_eligible(task)) continue;
++ cnt++;
++ sum += task->se.burst_penalty;
++ }
++
++ update_burst_cache(&p->se.group_burst, p, cnt, sum, now);
++}
++
++static inline u8 inherit_burst_tg(struct task_struct *p, u64 now) {
++ struct task_struct *parent = p->group_leader;
++ if (burst_cache_expired(&parent->se.group_burst, now))
++ update_tg_burst(parent, now);
++
++ return parent->se.group_burst.score;
++}
++
++void sched_clone_bore(
++ struct task_struct *p, struct task_struct *parent, u64 clone_flags) {
++ if (!task_is_bore_eligible(p)) return;
++
++ u64 now = ktime_get_ns();
+ read_lock(&tasklist_lock);
-+ burst_cache = likely(sched_burst_fork_atavistic)?
-+ __inherit_burst_topological(p, now):
-+ __inherit_burst_direct(p, now);
++ u8 penalty = (clone_flags & CLONE_THREAD) ?
++ inherit_burst_tg(parent, now) :
++ likely(sched_burst_fork_atavistic) ?
++ inherit_burst_topological(parent, now):
++ inherit_burst_direct(parent, now);
+ read_unlock(&tasklist_lock);
+
-+ p->se.prev_burst_penalty = max(p->se.prev_burst_penalty, burst_cache);
++ struct sched_entity *se = &p->se;
++ revolve_burst_penalty(se);
++ se->burst_penalty = se->prev_burst_penalty =
++ max(se->prev_burst_penalty, penalty);
++ se->child_burst.timestamp = 0;
++ se->group_burst.timestamp = 0;
+}
+
-+static void sched_post_fork_bore(struct task_struct *p) {
-+ if (p->sched_class == &fair_sched_class)
-+ inherit_burst(p);
-+ p->se.burst_penalty = p->se.prev_burst_penalty;
++void init_task_bore(struct task_struct *p) {
++ p->se.burst_time = 0;
++ p->se.prev_burst_penalty = 0;
++ p->se.curr_burst_penalty = 0;
++ p->se.burst_penalty = 0;
++ p->se.burst_score = 0;
++ memset(&p->se.child_burst, 0, sizeof(struct sched_burst_cache));
++ memset(&p->se.group_burst, 0, sizeof(struct sched_burst_cache));
+}
-+#endif // CONFIG_SCHED_BORE
+
- /*
- * Perform scheduler related setup for a newly forked process p.
- * p is forked by current.
-@@ -4528,6 +4660,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
- p->se.prev_sum_exec_runtime = 0;
- p->se.nr_migrations = 0;
- p->se.vruntime = 0;
-+#ifdef CONFIG_SCHED_BORE
-+ sched_fork_bore(p);
++#ifdef CONFIG_SYSCTL
++static struct ctl_table sched_bore_sysctls[] = {
++ {
++ .procname = "sched_bore",
++ .data = &sched_bore,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = sched_bore_update_handler,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = SYSCTL_ONE,
++ },
++ {
++ .procname = "sched_burst_exclude_kthreads",
++ .data = &sched_burst_exclude_kthreads,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = proc_dou8vec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = SYSCTL_ONE,
++ },
++ {
++ .procname = "sched_burst_smoothness_long",
++ .data = &sched_burst_smoothness_long,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = proc_dou8vec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = SYSCTL_ONE,
++ },
++ {
++ .procname = "sched_burst_smoothness_short",
++ .data = &sched_burst_smoothness_short,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = proc_dou8vec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = SYSCTL_ONE,
++ },
++ {
++ .procname = "sched_burst_fork_atavistic",
++ .data = &sched_burst_fork_atavistic,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = proc_dou8vec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = SYSCTL_THREE,
++ },
++ {
++ .procname = "sched_burst_parity_threshold",
++ .data = &sched_burst_parity_threshold,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = proc_dou8vec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = &maxval_u8,
++ },
++ {
++ .procname = "sched_burst_penalty_offset",
++ .data = &sched_burst_penalty_offset,
++ .maxlen = sizeof(u8),
++ .mode = 0644,
++ .proc_handler = proc_dou8vec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = &sixty_four,
++ },
++ {
++ .procname = "sched_burst_penalty_scale",
++ .data = &sched_burst_penalty_scale,
++ .maxlen = sizeof(uint),
++ .mode = 0644,
++ .proc_handler = proc_douintvec_minmax,
++ .extra1 = SYSCTL_ZERO,
++ .extra2 = &maxval_12_bits,
++ },
++ {
++ .procname = "sched_burst_cache_lifetime",
++ .data = &sched_burst_cache_lifetime,
++ .maxlen = sizeof(uint),
++ .mode = 0644,
++ .proc_handler = proc_douintvec,
++ },
++ {
++ .procname = "sched_deadline_boost_mask",
++ .data = &sched_deadline_boost_mask,
++ .maxlen = sizeof(uint),
++ .mode = 0644,
++ .proc_handler = proc_douintvec,
++ },
++};
++
++static int __init sched_bore_sysctl_init(void) {
++ register_sysctl_init("kernel", sched_bore_sysctls);
++ return 0;
++}
++late_initcall(sched_bore_sysctl_init);
++#endif // CONFIG_SYSCTL
+#endif // CONFIG_SCHED_BORE
- p->se.vlag = 0;
- p->se.slice = sysctl_sched_base_slice;
- INIT_LIST_HEAD(&p->se.group_node);
-@@ -4843,6 +4978,9 @@ void sched_cgroup_fork(struct task_struct *p, struct kernel_clone_args *kargs)
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index f3951e4a55..9264e542c9 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -97,6 +97,8 @@
+ #include "../../io_uring/io-wq.h"
+ #include "../smpboot.h"
- void sched_post_fork(struct task_struct *p)
- {
-+#ifdef CONFIG_SCHED_BORE
-+ sched_post_fork_bore(p);
-+#endif // CONFIG_SCHED_BORE
- uclamp_post_fork(p);
- }
++#include <linux/sched/bore.h>
++
+ EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_send_cpu);
+ EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_send_cpumask);
-@@ -9930,6 +10068,11 @@ void __init sched_init(void)
+@@ -8197,6 +8199,11 @@ void __init sched_init(void)
BUG_ON(&dl_sched_class != &stop_sched_class + 1);
#endif
+#ifdef CONFIG_SCHED_BORE
-+ sched_init_bore();
-+ printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 5.2.8 by Masahito Suzuki");
++ printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 5.6.0 by Masahito Suzuki");
++ init_task_bore(&init_task);
+#endif // CONFIG_SCHED_BORE
+
wait_bit_init();
#ifdef CONFIG_FAIR_GROUP_SCHED
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
-index c1eb9a1af..e2da8d773 100644
+index c1eb9a1afd..e2da8d7738 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -167,7 +167,52 @@ static const struct file_operations sched_feat_fops = {
@@ -372,21 +712,20 @@ index c1eb9a1af..e2da8d773 100644
P(se.avg.runnable_sum);
P(se.avg.util_sum);
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
-index 483c137b9..4c8d7fbd5 100644
+index 9057584ec0..465d2626ee 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
-@@ -19,6 +19,9 @@
+@@ -55,6 +55,8 @@
+ #include "stats.h"
+ #include "autogroup.h"
+
++#include <linux/sched/bore.h>
++
+ /*
+ * The initial- and re-scaling of tunables is configurable
*
- * Adaptive scheduling granularity, math enhancements by Peter Zijlstra
- * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
-+ *
-+ * Burst-Oriented Response Enhancer (BORE) CPU Scheduler
-+ * Copyright (C) 2021-2024 Masahito Suzuki <firelzrd@gmail.com>
- */
- #include <linux/energy_model.h>
- #include <linux/mmap_lock.h>
-@@ -64,20 +67,146 @@
- * SCHED_TUNABLESCALING_LOG - scaled logarithmical, *1+ilog(ncpus)
+@@ -64,17 +66,29 @@
+ * SCHED_TUNABLESCALING_LOG - scaled logarithmically, *1+ilog(ncpus)
* SCHED_TUNABLESCALING_LINEAR - scaled linear, *ncpus
*
- * (default SCHED_TUNABLESCALING_LOG = *(1+ilog(ncpus))
@@ -417,231 +756,26 @@ index 483c137b9..4c8d7fbd5 100644
const_debug unsigned int sysctl_sched_migration_cost = 500000UL;
-+#ifdef CONFIG_SCHED_BORE
-+u8 __read_mostly sched_bore = 1;
-+u8 __read_mostly sched_burst_exclude_kthreads = 1;
-+u8 __read_mostly sched_burst_smoothness_long = 1;
-+u8 __read_mostly sched_burst_smoothness_short = 0;
-+u8 __read_mostly sched_burst_fork_atavistic = 2;
-+u8 __read_mostly sched_burst_penalty_offset = 22;
-+uint __read_mostly sched_burst_penalty_scale = 1280;
-+uint __read_mostly sched_burst_cache_lifetime = 60000000;
-+uint __read_mostly sched_deadline_boost_mask = ENQUEUE_INITIAL
-+ | ENQUEUE_WAKEUP;
-+uint __read_mostly sched_deadline_preserve_mask = ENQUEUE_RESTORE
-+ | ENQUEUE_MIGRATED;
-+static int __maybe_unused sixty_four = 64;
-+static int __maybe_unused maxval_12_bits = 4095;
-+
-+#define MAX_BURST_PENALTY (39U <<2)
-+
-+static inline u32 log2plus1_u64_u32f8(u64 v) {
-+ u32 msb = fls64(v);
-+ s32 excess_bits = msb - 9;
-+ u8 fractional = (0 <= excess_bits)? v >> excess_bits: v << -excess_bits;
-+ return msb << 8 | fractional;
-+}
-+
-+static inline u32 calc_burst_penalty(u64 burst_time) {
-+ u32 greed, tolerance, penalty, scaled_penalty;
-+
-+ greed = log2plus1_u64_u32f8(burst_time);
-+ tolerance = sched_burst_penalty_offset << 8;
-+ penalty = max(0, (s32)greed - (s32)tolerance);
-+ scaled_penalty = penalty * sched_burst_penalty_scale >> 16;
-+
-+ return min(MAX_BURST_PENALTY, scaled_penalty);
-+}
-+
-+static inline u64 scale_slice(u64 delta, struct sched_entity *se) {
-+ return mul_u64_u32_shr(delta, sched_prio_to_wmult[se->burst_score], 22);
-+}
-+
-+static inline u64 __unscale_slice(u64 delta, u8 score) {
-+ return mul_u64_u32_shr(delta, sched_prio_to_weight[score], 10);
-+}
-+
-+static inline u64 unscale_slice(u64 delta, struct sched_entity *se) {
-+ return __unscale_slice(delta, se->burst_score);
-+}
-+
-+static void reweight_entity(
-+ struct cfs_rq *cfs_rq, struct sched_entity *se, unsigned long weight);
-+
-+static void renice_task(struct task_struct *p, int prio)
-+{
-+ struct sched_entity *se = &p->se;
-+ struct cfs_rq *cfs_rq = cfs_rq_of(se);
-+ struct load_weight *load = &se->load;
-+ unsigned long weight = scale_load(sched_prio_to_weight[prio]);
-+
-+ reweight_entity(cfs_rq, se, weight);
-+ load->inv_weight = sched_prio_to_wmult[prio];
-+}
-+
-+static void update_burst_score(struct sched_entity *se) {
-+ if (!entity_is_task(se)) return;
-+ struct task_struct *p = task_of(se);
-+ u8 prio = p->static_prio - MAX_RT_PRIO;
-+ u8 prev_prio = min(39, prio + se->burst_score);
-+
-+ u8 burst_score = 0;
-+ if (!(sched_burst_exclude_kthreads && (p->flags & PF_KTHREAD)))
-+ burst_score = se->burst_penalty >> 2;
-+
-+ se->burst_score = burst_score;
-+
-+ u8 new_prio = min(39, prio + se->burst_score);
-+ if (new_prio != prev_prio)
-+ renice_task(p, new_prio);
-+}
-+
-+static void update_burst_penalty(struct sched_entity *se) {
-+ se->curr_burst_penalty = calc_burst_penalty(se->burst_time);
-+ se->burst_penalty = max(se->prev_burst_penalty, se->curr_burst_penalty);
-+ update_burst_score(se);
-+}
-+
-+static inline u32 binary_smooth(u32 new, u32 old) {
-+ int increment = new - old;
-+ return (0 <= increment)?
-+ old + ( increment >> (int)sched_burst_smoothness_long):
-+ old - (-increment >> (int)sched_burst_smoothness_short);
-+}
-+
-+static void restart_burst(struct sched_entity *se) {
-+ se->burst_penalty = se->prev_burst_penalty =
-+ binary_smooth(se->curr_burst_penalty, se->prev_burst_penalty);
-+ se->curr_burst_penalty = 0;
-+ se->burst_time = 0;
-+ update_burst_score(se);
-+}
-+
-+static void restart_burst_rescale_deadline(struct sched_entity *se) {
-+ s64 vscaled, wremain, vremain = se->deadline - se->vruntime;
-+ u8 prev_score = se->burst_score;
-+ restart_burst(se);
-+ if (prev_score > se->burst_score) {
-+ wremain = __unscale_slice(abs(vremain), prev_score);
-+ vscaled = scale_slice(wremain, se);
-+ if (unlikely(vremain < 0))
-+ vscaled = -vscaled;
-+ se->deadline = se->vruntime + vscaled;
-+ }
-+}
-+#endif // CONFIG_SCHED_BORE
-+
- static int __init setup_sched_thermal_decay_shift(char *str)
- {
- pr_warn("Ignoring the deprecated sched_thermal_decay_shift= option\n");
-@@ -131,6 +260,92 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536;
-
- #ifdef CONFIG_SYSCTL
- static struct ctl_table sched_fair_sysctls[] = {
-+#ifdef CONFIG_SCHED_BORE
-+ {
-+ .procname = "sched_bore",
-+ .data = &sched_bore,
-+ .maxlen = sizeof(u8),
-+ .mode = 0644,
-+ .proc_handler = proc_dou8vec_minmax,
-+ .extra1 = SYSCTL_ONE,
-+ .extra2 = SYSCTL_ONE,
-+ },
-+ {
-+ .procname = "sched_burst_exclude_kthreads",
-+ .data = &sched_burst_exclude_kthreads,
-+ .maxlen = sizeof(u8),
-+ .mode = 0644,
-+ .proc_handler = proc_dou8vec_minmax,
-+ .extra1 = SYSCTL_ZERO,
-+ .extra2 = SYSCTL_ONE,
-+ },
-+ {
-+ .procname = "sched_burst_smoothness_long",
-+ .data = &sched_burst_smoothness_long,
-+ .maxlen = sizeof(u8),
-+ .mode = 0644,
-+ .proc_handler = proc_dou8vec_minmax,
-+ .extra1 = SYSCTL_ZERO,
-+ .extra2 = SYSCTL_ONE,
-+ },
-+ {
-+ .procname = "sched_burst_smoothness_short",
-+ .data = &sched_burst_smoothness_short,
-+ .maxlen = sizeof(u8),
-+ .mode = 0644,
-+ .proc_handler = proc_dou8vec_minmax,
-+ .extra1 = SYSCTL_ZERO,
-+ .extra2 = SYSCTL_ONE,
-+ },
-+ {
-+ .procname = "sched_burst_fork_atavistic",
-+ .data = &sched_burst_fork_atavistic,
-+ .maxlen = sizeof(u8),
-+ .mode = 0644,
-+ .proc_handler = proc_dou8vec_minmax,
-+ .extra1 = SYSCTL_ZERO,
-+ .extra2 = SYSCTL_THREE,
-+ },
-+ {
-+ .procname = "sched_burst_penalty_offset",
-+ .data = &sched_burst_penalty_offset,
-+ .maxlen = sizeof(u8),
-+ .mode = 0644,
-+ .proc_handler = proc_dou8vec_minmax,
-+ .extra1 = SYSCTL_ZERO,
-+ .extra2 = &sixty_four,
-+ },
-+ {
-+ .procname = "sched_burst_penalty_scale",
-+ .data = &sched_burst_penalty_scale,
-+ .maxlen = sizeof(uint),
-+ .mode = 0644,
-+ .proc_handler = proc_douintvec_minmax,
-+ .extra1 = SYSCTL_ZERO,
-+ .extra2 = &maxval_12_bits,
-+ },
-+ {
-+ .procname = "sched_burst_cache_lifetime",
-+ .data = &sched_burst_cache_lifetime,
-+ .maxlen = sizeof(uint),
-+ .mode = 0644,
-+ .proc_handler = proc_douintvec,
-+ },
-+ {
-+ .procname = "sched_deadline_boost_mask",
-+ .data = &sched_deadline_boost_mask,
-+ .maxlen = sizeof(uint),
-+ .mode = 0644,
-+ .proc_handler = proc_douintvec,
-+ },
-+ {
-+ .procname = "sched_deadline_preserve_mask",
-+ .data = &sched_deadline_preserve_mask,
-+ .maxlen = sizeof(uint),
-+ .mode = 0644,
-+ .proc_handler = proc_douintvec,
-+ },
-+#endif // CONFIG_SCHED_BORE
- #ifdef CONFIG_CFS_BANDWIDTH
- {
- .procname = "sched_cfs_bandwidth_slice_us",
-@@ -188,6 +403,13 @@ static inline void update_load_set(struct load_weight *lw, unsigned long w)
+@@ -188,6 +202,18 @@ static inline void update_load_set(struct load_weight *lw, unsigned long w)
*
* This idea comes from the SD scheduler of Con Kolivas:
*/
+#ifdef CONFIG_SCHED_BORE
+static void update_sysctl(void) {
-+ sysctl_sched_base_slice =
-+ max(sysctl_sched_min_base_slice, configured_sched_base_slice);
++ unsigned int base_slice = configured_sched_base_slice;
++ unsigned int min_base_slice = sysctl_sched_min_base_slice;
++
++ if (min_base_slice)
++ base_slice *= DIV_ROUND_UP(min_base_slice, base_slice);
++
++ sysctl_sched_base_slice = base_slice;
+}
+void sched_update_min_base_slice(void) { update_sysctl(); }
+#else // !CONFIG_SCHED_BORE
static unsigned int get_update_sysctl_factor(void)
{
unsigned int cpus = min_t(unsigned int, num_online_cpus(), 8);
-@@ -218,6 +440,7 @@ static void update_sysctl(void)
+@@ -218,6 +244,7 @@ static void update_sysctl(void)
SET_SYSCTL(sched_base_slice);
#undef SET_SYSCTL
}
@@ -649,93 +783,28 @@ index 483c137b9..4c8d7fbd5 100644
void __init sched_init_granularity(void)
{
-@@ -695,6 +918,9 @@ static s64 entity_lag(u64 avruntime, struct sched_entity *se)
+@@ -695,6 +722,9 @@ static s64 entity_lag(u64 avruntime, struct sched_entity *se)
vlag = avruntime - se->vruntime;
limit = calc_delta_fair(max_t(u64, 2*se->slice, TICK_NSEC), se);
+#ifdef CONFIG_SCHED_BORE
-+ limit >>= 1;
++ limit >>= !!sched_bore;
+#endif // CONFIG_SCHED_BORE
return clamp(vlag, -limit, limit);
}
-@@ -855,6 +1081,39 @@ struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
- return __node_2_se(left);
- }
-
-+static inline bool pick_curr(struct cfs_rq *cfs_rq,
-+ struct sched_entity *curr, struct sched_entity *wakee)
-+{
-+ /*
-+ * Nothing to preserve...
-+ */
-+ if (!curr || !sched_feat(RESPECT_SLICE))
-+ return false;
-+
-+ /*
-+ * Allow preemption at the 0-lag point -- even if not all of the slice
-+ * is consumed. Note: placement of positive lag can push V left and render
-+ * @curr instantly ineligible irrespective the time on-cpu.
-+ */
-+ if (sched_feat(RUN_TO_PARITY) && !entity_eligible(cfs_rq, curr))
-+ return false;
-+
-+ /*
-+ * Don't preserve @curr when the @wakee has a shorter slice and earlier
-+ * deadline. IOW, explicitly allow preemption.
-+ */
-+ if (sched_feat(PREEMPT_SHORT) && wakee &&
-+ wakee->slice < curr->slice &&
-+ (s64)(wakee->deadline - curr->deadline) < 0)
-+ return false;
-+
-+ /*
-+ * Preserve @curr to allow it to finish its first slice.
-+ * See the HACK in set_next_entity().
-+ */
-+ return curr->vlag == curr->deadline;
-+}
-+
- /*
- * Earliest Eligible Virtual Deadline First
- *
-@@ -874,28 +1133,27 @@ struct sched_entity *__pick_first_entity(struct cfs_rq *cfs_rq)
- *
- * Which allows tree pruning through eligibility.
- */
--static struct sched_entity *pick_eevdf(struct cfs_rq *cfs_rq)
-+static struct sched_entity *pick_eevdf(struct cfs_rq *cfs_rq, struct sched_entity *wakee)
- {
- struct rb_node *node = cfs_rq->tasks_timeline.rb_root.rb_node;
- struct sched_entity *se = __pick_first_entity(cfs_rq);
- struct sched_entity *curr = cfs_rq->curr;
- struct sched_entity *best = NULL;
-
-+ if (curr && !curr->on_rq)
-+ curr = NULL;
-+
- /*
- * We can safely skip eligibility check if there is only one entity
- * in this cfs_rq, saving some cycles.
- */
- if (cfs_rq->nr_running == 1)
-- return curr && curr->on_rq ? curr : se;
--
-- if (curr && (!curr->on_rq || !entity_eligible(cfs_rq, curr)))
-- curr = NULL;
-+ return curr ?: se;
-
- /*
-- * Once selected, run a task until it either becomes non-eligible or
-- * until it gets a new slice. See the HACK in set_next_entity().
-+ * Preserve @curr to let it finish its slice.
+@@ -896,6 +926,10 @@ static struct sched_entity *pick_eevdf(struct cfs_rq *cfs_rq)
+ * until it gets a new slice. See the HACK in set_next_entity().
*/
-- if (sched_feat(RUN_TO_PARITY) && curr && curr->vlag == curr->deadline)
-+ if (pick_curr(cfs_rq, curr, wakee))
+ if (sched_feat(RUN_TO_PARITY) && curr && curr->vlag == curr->deadline)
++#ifdef CONFIG_SCHED_BORE
++ if (!(likely(sched_bore) && likely(sched_burst_parity_threshold) &&
++ sched_burst_parity_threshold < cfs_rq->nr_running))
++#endif // CONFIG_SCHED_BORE
return curr;
/* Pick the leftmost entity if it's eligible */
-@@ -954,6 +1212,7 @@ struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
+@@ -954,6 +988,7 @@ struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq)
* Scheduling class statistics methods:
*/
#ifdef CONFIG_SMP
@@ -743,7 +812,7 @@ index 483c137b9..4c8d7fbd5 100644
int sched_update_scaling(void)
{
unsigned int factor = get_update_sysctl_factor();
-@@ -965,6 +1224,7 @@ int sched_update_scaling(void)
+@@ -965,6 +1000,7 @@ int sched_update_scaling(void)
return 0;
}
@@ -751,33 +820,27 @@ index 483c137b9..4c8d7fbd5 100644
#endif
#endif
-@@ -1165,7 +1425,13 @@ static void update_curr(struct cfs_rq *cfs_rq)
+@@ -1165,6 +1201,10 @@ static void update_curr(struct cfs_rq *cfs_rq)
if (unlikely(delta_exec <= 0))
return;
+#ifdef CONFIG_SCHED_BORE
+ curr->burst_time += delta_exec;
+ update_burst_penalty(curr);
-+ curr->vruntime += max(1ULL, calc_delta_fair(delta_exec, curr));
-+#else // !CONFIG_SCHED_BORE
- curr->vruntime += calc_delta_fair(delta_exec, curr);
+#endif // CONFIG_SCHED_BORE
+ curr->vruntime += calc_delta_fair(delta_exec, curr);
update_deadline(cfs_rq, curr);
update_min_vruntime(cfs_rq);
+@@ -3782,7 +3822,7 @@ static void reweight_eevdf(struct sched_entity *se, u64 avruntime,
+ se->deadline = avruntime + vslice;
+ }
-@@ -5179,6 +5445,11 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
- s64 lag = 0;
-
- se->slice = sysctl_sched_base_slice;
-+#ifdef CONFIG_SCHED_BORE
-+ if (flags & ~sched_deadline_boost_mask & sched_deadline_preserve_mask)
-+ vslice = se->deadline - se->vruntime;
-+ else
-+#endif // CONFIG_SCHED_BORE
- vslice = calc_delta_fair(se->slice, se);
-
- /*
-@@ -5189,6 +5460,9 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
+-static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
++void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
+ unsigned long weight)
+ {
+ bool curr = cfs_rq->curr == se;
+@@ -5189,6 +5229,9 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
*
* EEVDF: placement strategy #1 / #2
*/
@@ -787,28 +850,44 @@ index 483c137b9..4c8d7fbd5 100644
if (sched_feat(PLACE_LAG) && cfs_rq->nr_running) {
struct sched_entity *curr = cfs_rq->curr;
unsigned long load;
-@@ -5264,7 +5538,11 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
- * on average, halfway through their slice, as such start tasks
- * off with half a slice to ease into the competition.
- */
-+#if !defined(CONFIG_SCHED_BORE)
- if (sched_feat(PLACE_DEADLINE_INITIAL) && (flags & ENQUEUE_INITIAL))
-+#else // CONFIG_SCHED_BORE
-+ if (flags & sched_deadline_boost_mask)
-+#endif // CONFIG_SCHED_BORE
- vslice /= 2;
+@@ -5259,6 +5302,16 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
+
+ se->vruntime = vruntime - lag;
++ if (sched_feat(PLACE_REL_DEADLINE) && se->rel_deadline) {
++ se->deadline += se->vruntime;
++ se->rel_deadline = 0;
++ return;
++ }
++#ifdef CONFIG_SCHED_BORE
++ else if (likely(sched_bore))
++ vslice >>= !!(flags & sched_deadline_boost_mask);
++ else
++#endif // CONFIG_SCHED_BORE
/*
-@@ -5478,7 +5756,7 @@ pick_next_entity(struct cfs_rq *cfs_rq)
- cfs_rq->next && entity_eligible(cfs_rq, cfs_rq->next))
- return cfs_rq->next;
+ * When joining the competition; the existing tasks will be,
+ * on average, halfway through their slice, as such start tasks
+@@ -5368,6 +5421,7 @@ static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq);
+ static void
+ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
+ {
++ bool sleep = flags & DEQUEUE_SLEEP;
+ int action = UPDATE_TG;
-- return pick_eevdf(cfs_rq);
-+ return pick_eevdf(cfs_rq, NULL);
- }
+ if (entity_is_task(se) && task_on_rq_migrating(task_of(se)))
+@@ -5395,6 +5449,11 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
+ clear_buddies(cfs_rq, se);
- static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq);
-@@ -6846,6 +7124,14 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
+ update_entity_lag(cfs_rq, se);
++ if (sched_feat(PLACE_REL_DEADLINE) && !sleep) {
++ se->deadline -= se->vruntime;
++ se->rel_deadline = 1;
++ }
++
+ if (se != cfs_rq->curr)
+ __dequeue_entity(cfs_rq, se);
+ se->on_rq = 0;
+@@ -6846,6 +6905,14 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
bool was_sched_idle = sched_idle_rq(rq);
util_est_dequeue(&rq->cfs, p);
@@ -823,16 +902,7 @@ index 483c137b9..4c8d7fbd5 100644
for_each_sched_entity(se) {
cfs_rq = cfs_rq_of(se);
-@@ -8414,7 +8700,7 @@ static void check_preempt_wakeup_fair(struct rq *rq, struct task_struct *p, int
- /*
- * XXX pick_eevdf(cfs_rq) != se ?
- */
-- if (pick_eevdf(cfs_rq) == pse)
-+ if (pick_eevdf(cfs_rq, pse) == pse)
- goto preempt;
-
- return;
-@@ -8632,16 +8918,25 @@ static void yield_task_fair(struct rq *rq)
+@@ -8632,16 +8699,25 @@ static void yield_task_fair(struct rq *rq)
/*
* Are we the only task in the tree?
*/
@@ -858,7 +928,7 @@ index 483c137b9..4c8d7fbd5 100644
/*
* Tell update_rq_clock() that we've just updated,
* so we don't do microscopic update in schedule()
-@@ -12709,6 +13004,9 @@ static void task_fork_fair(struct task_struct *p)
+@@ -12716,6 +12792,9 @@ static void task_fork_fair(struct task_struct *p)
curr = cfs_rq->curr;
if (curr)
update_curr(cfs_rq);
@@ -868,46 +938,38 @@ index 483c137b9..4c8d7fbd5 100644
place_entity(cfs_rq, se, ENQUEUE_INITIAL);
rq_unlock(rq, &rf);
}
+@@ -12828,6 +12907,10 @@ static void attach_task_cfs_rq(struct task_struct *p)
+
+ static void switched_from_fair(struct rq *rq, struct task_struct *p)
+ {
++ p->se.rel_deadline = 0;
++#ifdef CONFIG_SCHED_BORE
++ init_task_bore(p);
++#endif // CONFIG_SCHED_BORE
+ detach_task_cfs_rq(p);
+ }
+
diff --git a/kernel/sched/features.h b/kernel/sched/features.h
-index 143f55df8..3aad8900c 100644
+index 143f55df89..e97b7b68bd 100644
--- a/kernel/sched/features.h
+++ b/kernel/sched/features.h
-@@ -5,8 +5,28 @@
- * sleep+wake cycles. EEVDF placement strategy #1, #2 if disabled.
+@@ -6,6 +6,10 @@
*/
SCHED_FEAT(PLACE_LAG, true)
-+/*
-+ * Give new tasks half a slice to ease into the competition.
-+ */
-+#if !defined(CONFIG_SCHED_BORE)
SCHED_FEAT(PLACE_DEADLINE_INITIAL, true)
--SCHED_FEAT(RUN_TO_PARITY, true)
-+#endif // CONFIG_SCHED_BORE
-+/*
-+ * Inhibit (wakeup) preemption until the current task has exhausted its slice.
-+ */
-+#ifdef CONFIG_SCHED_BORE
-+SCHED_FEAT(RESPECT_SLICE, false)
-+#else // !CONFIG_SCHED_BORE
-+SCHED_FEAT(RESPECT_SLICE, true)
-+#endif // CONFIG_SCHED_BORE
+/*
-+ * Relax RESPECT_SLICE to allow preemption once current has reached 0-lag.
++ * Preserve relative virtual deadline on 'migration'.
+ */
-+SCHED_FEAT(RUN_TO_PARITY, false)
-+/*
-+ * Allow tasks with a shorter slice to disregard RESPECT_SLICE
-+ */
-+SCHED_FEAT(PREEMPT_SHORT, true)
++SCHED_FEAT(PLACE_REL_DEADLINE, true)
+ SCHED_FEAT(RUN_TO_PARITY, true)
/*
- * Prefer to schedule the task we woke last (assuming it failed
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
-index 38aeedd8a..aa0ae3fb9 100644
+index 4c36cc6803..cc18ad228e 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
-@@ -1969,7 +1969,11 @@ static inline void dirty_sched_domain_sysctl(int cpu)
- }
+@@ -1984,7 +1984,11 @@ static inline void update_sched_domain_debugfs(void) { }
+ static inline void dirty_sched_domain_sysctl(int cpu) { }
#endif
+#ifdef CONFIG_SCHED_BORE
@@ -918,7 +980,7 @@ index 38aeedd8a..aa0ae3fb9 100644
static inline const struct cpumask *task_user_cpus(struct task_struct *p)
{
-@@ -2554,6 +2558,9 @@ extern const_debug unsigned int sysctl_sched_nr_migrate;
+@@ -2601,6 +2605,9 @@ extern const_debug unsigned int sysctl_sched_nr_migrate;
extern const_debug unsigned int sysctl_sched_migration_cost;
extern unsigned int sysctl_sched_base_slice;
@@ -929,5 +991,5 @@ index 38aeedd8a..aa0ae3fb9 100644
#ifdef CONFIG_SCHED_DEBUG
extern int sysctl_resched_latency_warn_ms;
--
-2.46.0
+2.34.1
diff --git a/SOURCES/dracut-virt.conf b/SOURCES/dracut-virt.conf
index da1c17b..8b23a4e 100644
--- a/SOURCES/dracut-virt.conf
+++ b/SOURCES/dracut-virt.conf
@@ -14,12 +14,19 @@ dracutmodules+=" dm lvm rootfs-block fs-lib "
# modules: tpm and crypto
dracutmodules+=" crypt crypt-loop tpm2-tss systemd-pcrphase "
+# dracut >= 102 separated systemd-cryptsetup into its own module
+CSMODULE=`dracut --list-modules --no-kernel | grep '^systemd-cryptsetup$'`
+dracutmodules+=" $CSMODULE "
+
# modules: support root on virtiofs
dracutmodules+=" virtiofs "
# modules: use sysext images (see 'man systemd-sysext')
dracutmodules+=" systemd-sysext "
+# modules: root disk integrity protection
+dracutmodules+=" systemd-veritysetup "
+
# drivers: virtual buses, pci
drivers+=" virtio-pci virtio-mmio " # qemu-kvm
drivers+=" hv-vmbus pci-hyperv " # hyperv
@@ -34,5 +41,8 @@ drivers+=" xen-blkfront " # xen
# root encryption
drivers+=" dm_crypt "
+# root disk integrity protection
+drivers+=" dm_verity overlay "
+
# filesystems
filesystems+=" vfat ext4 xfs overlay "
diff --git a/SOURCES/fsync.patch b/SOURCES/fsync.patch
deleted file mode 100644
index fdda084..0000000
--- a/SOURCES/fsync.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From b70e738f08403950aa3053c36b98c6b0eeb0eb90 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@collabora.com>
-Date: Mon, 25 Oct 2021 09:49:42 -0300
-Subject: [PATCH] futex: Add entry point for FUTEX_WAIT_MULTIPLE (opcode 31)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add an option to wait on multiple futexes using the old interface, that
-uses opcode 31 through futex() syscall. Do that by just translation the
-old interface to use the new code. This allows old and stable versions
-of Proton to still use fsync in new kernel releases.
-
-Signed-off-by: André Almeida <andrealmeid@collabora.com>
----
- include/uapi/linux/futex.h | 13 +++++++
- kernel/futex/syscalls.c | 75 +++++++++++++++++++++++++++++++++++++-
- 2 files changed, 87 insertions(+), 1 deletion(-)
-
-diff --git a/include/uapi/linux/futex.h b/include/uapi/linux/futex.h
-index 71a5df8d2689..d375ab21cbf8 100644
---- a/include/uapi/linux/futex.h
-+++ b/include/uapi/linux/futex.h
-@@ -22,6 +22,7 @@
- #define FUTEX_WAIT_REQUEUE_PI 11
- #define FUTEX_CMP_REQUEUE_PI 12
- #define FUTEX_LOCK_PI2 13
-+#define FUTEX_WAIT_MULTIPLE 31
-
- #define FUTEX_PRIVATE_FLAG 128
- #define FUTEX_CLOCK_REALTIME 256
-@@ -68,6 +69,18 @@ struct futex_waitv {
- __u32 __reserved;
- };
-
-+/**
-+ * struct futex_wait_block - Block of futexes to be waited for
-+ * @uaddr: User address of the futex
-+ * @val: Futex value expected by userspace
-+ * @bitset: Bitset for the optional bitmasked wakeup
-+ */
-+struct futex_wait_block {
-+ __u32 __user *uaddr;
-+ __u32 val;
-+ __u32 bitset;
-+};
-+
- /*
- * Support for robust futexes: the kernel cleans up held futexes at
- * thread exit time.
-diff --git a/kernel/futex/syscalls.c b/kernel/futex/syscalls.c
-index 6f91a07a6a83..2f4d4c04ede2 100644
---- a/kernel/futex/syscalls.c
-+++ b/kernel/futex/syscalls.c
-@@ -158,6 +158,7 @@ static __always_inline bool futex_cmd_has_timeout(u32 cmd)
- case FUTEX_LOCK_PI2:
- case FUTEX_WAIT_BITSET:
- case FUTEX_WAIT_REQUEUE_PI:
-+ case FUTEX_WAIT_MULTIPLE:
- return true;
- }
- return false;
-@@ -170,13 +171,79 @@ futex_init_timeout(u32 cmd, u32 op, struct timespec64 *ts, ktime_t *t)
- return -EINVAL;
-
- *t = timespec64_to_ktime(*ts);
-- if (cmd == FUTEX_WAIT)
-+ if (cmd == FUTEX_WAIT || cmd == FUTEX_WAIT_MULTIPLE)
- *t = ktime_add_safe(ktime_get(), *t);
- else if (cmd != FUTEX_LOCK_PI && !(op & FUTEX_CLOCK_REALTIME))
- *t = timens_ktime_to_host(CLOCK_MONOTONIC, *t);
- return 0;
- }
-
-+/**
-+ * futex_read_wait_block - Read an array of futex_wait_block from userspace
-+ * @uaddr: Userspace address of the block
-+ * @count: Number of blocks to be read
-+ *
-+ * This function creates and allocate an array of futex_q (we zero it to
-+ * initialize the fields) and then, for each futex_wait_block element from
-+ * userspace, fill a futex_q element with proper values.
-+ */
-+inline struct futex_vector *futex_read_wait_block(u32 __user *uaddr, u32 count)
-+{
-+ unsigned int i;
-+ struct futex_vector *futexv;
-+ struct futex_wait_block fwb;
-+ struct futex_wait_block __user *entry =
-+ (struct futex_wait_block __user *)uaddr;
-+
-+ if (!count || count > FUTEX_WAITV_MAX)
-+ return ERR_PTR(-EINVAL);
-+
-+ futexv = kcalloc(count, sizeof(*futexv), GFP_KERNEL);
-+ if (!futexv)
-+ return ERR_PTR(-ENOMEM);
-+
-+ for (i = 0; i < count; i++) {
-+ if (copy_from_user(&fwb, &entry[i], sizeof(fwb))) {
-+ kfree(futexv);
-+ return ERR_PTR(-EFAULT);
-+ }
-+
-+ futexv[i].w.flags = FUTEX_32;
-+ futexv[i].w.val = fwb.val;
-+ futexv[i].w.uaddr = (uintptr_t) (fwb.uaddr);
-+ futexv[i].q = futex_q_init;
-+ }
-+
-+ return futexv;
-+}
-+
-+int futex_wait_multiple(struct futex_vector *vs, unsigned int count,
-+ struct hrtimer_sleeper *to);
-+
-+int futex_opcode_31(ktime_t *abs_time, u32 __user *uaddr, int count)
-+{
-+ int ret;
-+ struct futex_vector *vs;
-+ struct hrtimer_sleeper *to = NULL, timeout;
-+
-+ to = futex_setup_timer(abs_time, &timeout, 0, 0);
-+
-+ vs = futex_read_wait_block(uaddr, count);
-+
-+ if (IS_ERR(vs))
-+ return PTR_ERR(vs);
-+
-+ ret = futex_wait_multiple(vs, count, abs_time ? to : NULL);
-+ kfree(vs);
-+
-+ if (to) {
-+ hrtimer_cancel(&to->timer);
-+ destroy_hrtimer_on_stack(&to->timer);
-+ }
-+
-+ return ret;
-+}
-+
- SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
- const struct __kernel_timespec __user *, utime,
- u32 __user *, uaddr2, u32, val3)
-@@ -196,6 +263,9 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
- tp = &t;
- }
-
-+ if (cmd == FUTEX_WAIT_MULTIPLE)
-+ return futex_opcode_31(tp, uaddr, val);
-+
- return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
- }
-
-@@ -392,6 +462,9 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val,
- tp = &t;
- }
-
-+ if (cmd == FUTEX_WAIT_MULTIPLE)
-+ return futex_opcode_31(tp, uaddr, val);
-+
- return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
- }
- #endif /* CONFIG_COMPAT_32BIT_TIME */
---
-2.33.1
-
diff --git a/SOURCES/gating.yaml b/SOURCES/gating.yaml
index 87a09ed..f2ce7d2 100644
--- a/SOURCES/gating.yaml
+++ b/SOURCES/gating.yaml
@@ -1,9 +1,14 @@
--- !Policy
product_versions:
- - rhel-9
+ - rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: cki.tier1-aarch64.functional}
- !PassingTestCaseRule {test_case_name: cki.tier1-ppc64le.functional}
- !PassingTestCaseRule {test_case_name: cki.tier1-s390x.functional}
- !PassingTestCaseRule {test_case_name: cki.tier1-x86_64.functional}
+ - !PassingTestCaseRule {test_case_name: s1-aws-ci_x86_64.brew-build.tier1.functional}
+ - !PassingTestCaseRule {test_case_name: s1-aws-ci_aarch64.brew-build.tier1.functional}
+ - !PassingTestCaseRule {test_case_name: s1-azure-ci_x86_64.brew-build.tier1.functional}
+ - !PassingTestCaseRule {test_case_name: s1-azure-ci_aarch64.brew-build.tier1.functional}
+ - !PassingTestCaseRule {test_case_name: s1-gcp-ci.brew-build.tier1.functional}
diff --git a/SOURCES/hdr-config.patch b/SOURCES/hdr-config.patch
new file mode 100644
index 0000000..4254190
--- /dev/null
+++ b/SOURCES/hdr-config.patch
@@ -0,0 +1,118 @@
+From 299b81f3e619aea3ceda77d7c42842a496b34a53 Mon Sep 17 00:00:00 2001
+From: Peter Jung <admin@ptr1337.dev>
+Date: Thu, 21 Mar 2024 19:00:50 +0100
+Subject: [PATCH] cachy: move AMD_PRIVATE_COLOR to Kconfig
+
+Co-authored-by: PedroHLC <root@pedrohlc.com>
+Signed-off-by: Peter Jung <admin@ptr1337.dev>
+---
+ drivers/gpu/drm/amd/display/Kconfig | 6 ++++++
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 2 +-
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 6 +++---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 6 +++---
+ 5 files changed, 14 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig
+index 901d1961b73927..05c49141f5802f 100644
+--- a/drivers/gpu/drm/amd/display/Kconfig
++++ b/drivers/gpu/drm/amd/display/Kconfig
+@@ -51,4 +51,10 @@ config DRM_AMD_SECURE_DISPLAY
+ This option enables the calculation of crc of specific region via
+ debugfs. Cooperate with specific DMCU FW.
+
++config AMD_PRIVATE_COLOR
++ bool "Enable KMS color management by AMD for AMD"
++ default n
++ help
++ This option extends the KMS color management API with AMD driver-specific properties to enhance the color management support on AMD Steam Deck.
++
+ endmenu
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index 59d2eee72a3297..0a4e75de95c257 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -4078,7 +4078,7 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
+ return r;
+ }
+
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ if (amdgpu_dm_create_color_properties(adev)) {
+ dc_state_release(state->context);
+ kfree(state);
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+index c87b64e464ed5c..6fe07243adc3d5 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+@@ -97,7 +97,7 @@ static inline struct fixed31_32 amdgpu_dm_fixpt_from_s3132(__u64 x)
+ return val;
+ }
+
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ /* Pre-defined Transfer Functions (TF)
+ *
+ * AMD driver supports pre-defined mathematical functions for transferring
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+index 6e715ef3a5566e..11c7199ec3b348 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+@@ -290,7 +290,7 @@ static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
+ }
+ #endif
+
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ /**
+ * dm_crtc_additional_color_mgmt - enable additional color properties
+ * @crtc: DRM CRTC
+@@ -372,7 +372,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
+ #if defined(CONFIG_DEBUG_FS)
+ .late_register = amdgpu_dm_crtc_late_register,
+ #endif
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ .atomic_set_property = amdgpu_dm_atomic_crtc_set_property,
+ .atomic_get_property = amdgpu_dm_atomic_crtc_get_property,
+ #endif
+@@ -551,7 +551,7 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
+
+ drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LEGACY_LUT_ENTRIES);
+
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ dm_crtc_additional_color_mgmt(&acrtc->base);
+ #endif
+ return 0;
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
+index 8a4c40b4c27e4f..779880c6457553 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
+@@ -1468,7 +1468,7 @@ static void amdgpu_dm_plane_drm_plane_destroy_state(struct drm_plane *plane,
+ drm_atomic_helper_plane_destroy_state(plane, state);
+ }
+
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ static void
+ dm_atomic_plane_attach_color_mgmt_properties(struct amdgpu_display_manager *dm,
+ struct drm_plane *plane)
+@@ -1659,7 +1659,7 @@ static const struct drm_plane_funcs dm_plane_funcs = {
+ .atomic_duplicate_state = amdgpu_dm_plane_drm_plane_duplicate_state,
+ .atomic_destroy_state = amdgpu_dm_plane_drm_plane_destroy_state,
+ .format_mod_supported = amdgpu_dm_plane_format_mod_supported,
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ .atomic_set_property = dm_atomic_plane_set_property,
+ .atomic_get_property = dm_atomic_plane_get_property,
+ #endif
+@@ -1742,7 +1742,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,
+
+ drm_plane_helper_add(plane, &dm_plane_helper_funcs);
+
+-#ifdef AMD_PRIVATE_COLOR
++#ifdef CONFIG_AMD_PRIVATE_COLOR
+ dm_atomic_plane_attach_color_mgmt_properties(dm, plane);
+ #endif
+ /* Create (reset) the plane state */
diff --git a/SOURCES/kernel-aarch64-16k-debug-fedora.config b/SOURCES/kernel-aarch64-16k-debug-fedora.config
index 1ce8390..1b5e56e 100644
--- a/SOURCES/kernel-aarch64-16k-debug-fedora.config
+++ b/SOURCES/kernel-aarch64-16k-debug-fedora.config
@@ -125,6 +125,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -198,7 +199,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
# CONFIG_AFFS_FS is not set
@@ -673,6 +674,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_AXI_DMAC=m
CONFIG_AXP20X_ADC=m
CONFIG_AXP20X_POWER=m
@@ -716,6 +718,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
CONFIG_BACKLIGHT_LM3630A=m
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -752,8 +755,10 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_DS2782 is not set
CONFIG_BATTERY_GAUGE_LTC2941=m
# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_BATTERY_LENOVO_YOGA_C630=m
CONFIG_BATTERY_MAX17040=m
CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_PM8916_BMS_VM is not set
CONFIG_BATTERY_QCOM_BATTMGR=m
@@ -806,6 +811,7 @@ CONFIG_BCM_SBA_RAID=m
CONFIG_BCM_VIDEOCORE=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -861,6 +867,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SX8 is not set
@@ -1174,6 +1181,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
CONFIG_CHARGER_BQ25980=m
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
CONFIG_CHARGER_CROS_USBPD=m
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1254,6 +1262,7 @@ CONFIG_CLK_IMX95_BLK_CTL=m
CONFIG_CLK_KUNIT_TEST=m
CONFIG_CLK_LS1028A_PLLDIG=y
CONFIG_CLK_PX30=y
+CONFIG_CLK_QCM2290_GPUCC=m
CONFIG_CLK_QORIQ=y
CONFIG_CLK_RASPBERRYPI=y
# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set
@@ -1319,6 +1328,8 @@ CONFIG_COMMON_CLK_AXG_AUDIO=y
CONFIG_COMMON_CLK_AXG=y
CONFIG_COMMON_CLK_AXI_CLKGEN=m
CONFIG_COMMON_CLK_BD718XX=m
+CONFIG_COMMON_CLK_C3_PERIPHERALS=y
+CONFIG_COMMON_CLK_C3_PLL=y
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
@@ -1373,6 +1384,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_VDSO is not set
CONFIG_COMPAT=y
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1713,6 +1725,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1922,6 +1935,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1956,6 +1970,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -2080,11 +2095,13 @@ CONFIG_DRM_PANEL_EDP=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
CONFIG_DRM_PANEL_HIMAX_HX8394=m
CONFIG_DRM_PANEL_ILITEK_IL9322=m
CONFIG_DRM_PANEL_ILITEK_ILI9341=m
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -2100,6 +2117,7 @@ CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
CONFIG_DRM_PANEL_LG_LG4573=m
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -2381,6 +2399,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
CONFIG_EC_ACER_ASPIRE1=m
CONFIG_ECHO=m
+CONFIG_EC_LENOVO_YOGA_C630=m
CONFIG_ECRYPT_FS=m
# CONFIG_ECRYPT_FS_MESSAGING is not set
CONFIG_EDAC_BLUEFIELD=m
@@ -2435,6 +2454,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2597,7 +2617,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2643,7 +2665,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2778,6 +2799,7 @@ CONFIG_GPIO_AGGREGATOR=m
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_BCM_XGS_IPROC is not set
CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_BRCMSTB=m
CONFIG_GPIO_BT8XX=m
CONFIG_GPIO_CADENCE=m
CONFIG_GPIO_CDEV_V1=y
@@ -2834,6 +2856,7 @@ CONFIG_GPIO_ROCKCHIP=y
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
CONFIG_GPIO_STMPE=y
CONFIG_GPIO_SYSCON=m
# CONFIG_GPIO_SYSFS is not set
@@ -2848,6 +2871,7 @@ CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_VF610=y
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
CONFIG_GPIO_WATCHDOG=m
CONFIG_GPIO_WCD934X=m
# CONFIG_GPIO_WINBOND is not set
@@ -3267,6 +3291,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -3447,6 +3472,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -3459,6 +3485,7 @@ CONFIG_INPUT_BBNSM_PWRKEY=m
# CONFIG_INPUT_CM109 is not set
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3553,6 +3580,7 @@ CONFIG_INTERCONNECT_QCOM_BCM_VOTER=y
# CONFIG_INTERCONNECT_QCOM_MSM8909 is not set
CONFIG_INTERCONNECT_QCOM_MSM8916=m
# CONFIG_INTERCONNECT_QCOM_MSM8939 is not set
+CONFIG_INTERCONNECT_QCOM_MSM8953=m
# CONFIG_INTERCONNECT_QCOM_MSM8974 is not set
CONFIG_INTERCONNECT_QCOM_MSM8996=m
CONFIG_INTERCONNECT_QCOM_OSM_L3=m
@@ -3685,6 +3713,7 @@ CONFIG_IPQ_GCC_5018=m
# CONFIG_IPQ_GCC_8074 is not set
# CONFIG_IPQ_GCC_9574 is not set
# CONFIG_IPQ_LCC_806X is not set
+CONFIG_IPQ_NSSCC_QCA8K=m
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_SCTP=m
@@ -3921,6 +3950,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZ4 is not set
@@ -4033,6 +4063,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -4071,6 +4102,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
CONFIG_LEDS_GPIO=m
@@ -4116,6 +4148,7 @@ CONFIG_LEDS_REGULATOR=m
CONFIG_LEDS_SGM3140=m
# CONFIG_LEDS_SPI_BYTE is not set
# CONFIG_LEDS_SUN50I_A100 is not set
+CONFIG_LEDS_SY7802=m
CONFIG_LEDS_SYSCON=y
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -4129,6 +4162,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -4267,6 +4301,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
CONFIG_MARVELL_88X2222_PHY=m
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -4392,6 +4427,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -4432,6 +4468,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
CONFIG_MFD_AC100=m
# CONFIG_MFD_ACT8945A is not set
@@ -4450,6 +4487,8 @@ CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_DEV=m
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -4517,6 +4556,7 @@ CONFIG_MFD_RK8XX_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
CONFIG_MFD_ROHM_BD718XX=y
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4689,6 +4729,7 @@ CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_AM654=m
+CONFIG_MMC_SDHCI_BRCMSTB=m
CONFIG_MMC_SDHCI_CADENCE=m
CONFIG_MMC_SDHCI_ESDHC_IMX=m
CONFIG_MMC_SDHCI_F_SDH30=m
@@ -5068,6 +5109,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -5172,8 +5214,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -5282,6 +5326,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -5610,6 +5655,7 @@ CONFIG_NVMEM=y
CONFIG_NVMEM_ZYNQMP=m
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -5633,6 +5679,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -5838,6 +5885,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5877,6 +5925,7 @@ CONFIG_PHY_CAN_TRANSCEIVER=m
# CONFIG_PHY_DM816X_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+CONFIG_PHY_FSL_IMX8QM_HSIO=m
CONFIG_PHY_FSL_LYNX_28G=m
CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY=m
CONFIG_PHY_HI3660_USB=m
@@ -5987,9 +6036,11 @@ CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QM=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+CONFIG_PINCTRL_IMX91=y
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+CONFIG_PINCTRL_IMX_SCMI=y
# CONFIG_PINCTRL_IPQ4019 is not set
# CONFIG_PINCTRL_IPQ5018 is not set
# CONFIG_PINCTRL_IPQ5332 is not set
@@ -6049,6 +6100,7 @@ CONFIG_PINCTRL_SDM845=m
# CONFIG_PINCTRL_SDX65 is not set
# CONFIG_PINCTRL_SDX75 is not set
CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_SM4250_LPASS_LPI=m
# CONFIG_PINCTRL_SM4450 is not set
CONFIG_PINCTRL_SM6115_LPASS_LPI=m
CONFIG_PINCTRL_SM6115=m
@@ -6158,6 +6210,8 @@ CONFIG_POWER_RESET_VERSATILE=y
CONFIG_POWER_RESET_VEXPRESS=y
CONFIG_POWER_RESET_XGENE=y
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -6262,12 +6316,14 @@ CONFIG_PVPANIC_PCI=m
CONFIG_PVPANIC=y
CONFIG_PWM_APPLE=m
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
CONFIG_PWM_BCM2835=m
CONFIG_PWM_CLK=m
CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -6315,6 +6371,7 @@ CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_COINCELL=m
CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_CPR=m
+CONFIG_QCOM_CPUCP_MBOX=m
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
@@ -6341,6 +6398,7 @@ CONFIG_QCOM_MPM=m
CONFIG_QCOM_OCMEM=m
CONFIG_QCOM_PBS=m
CONFIG_QCOM_PDC=y
+CONFIG_QCOM_PD_MAPPER=m
CONFIG_QCOM_PIL_INFO=m
CONFIG_QCOM_PMIC_GLINK=m
CONFIG_QCOM_PMIC_PDCHARGER_ULOG=m
@@ -6378,6 +6436,8 @@ CONFIG_QCOM_SSC_BLOCK_BUS=y
CONFIG_QCOM_STATS=m
CONFIG_QCOM_SYSMON=m
CONFIG_QCOM_TSENS=m
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
CONFIG_QCOM_WCNSS_CTRL=m
CONFIG_QCOM_WCNSS_PIL=m
CONFIG_QCOM_WDT=m
@@ -6510,6 +6570,7 @@ CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
CONFIG_REGULATOR_ACT8865=m
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_ANATOP=m
@@ -6519,6 +6580,7 @@ CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_AXP20X=m
CONFIG_REGULATOR_BD718XX=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
CONFIG_REGULATOR_CROS_EC=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
@@ -6574,6 +6636,7 @@ CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88090 is not set
CONFIG_REGULATOR_PWM=y
CONFIG_REGULATOR_QCOM_LABIBB=m
+CONFIG_REGULATOR_QCOM_PM8008=m
CONFIG_REGULATOR_QCOM_REFGEN=m
CONFIG_REGULATOR_QCOM_RPMH=y
# CONFIG_REGULATOR_QCOM_RPM is not set
@@ -6597,6 +6660,7 @@ CONFIG_REGULATOR_RTMV20=m
CONFIG_REGULATOR_RTQ2134=m
CONFIG_REGULATOR_RTQ2208=m
CONFIG_REGULATOR_RTQ6752=m
+CONFIG_REGULATOR_RZG2L_VBCTRL=m
# CONFIG_REGULATOR_SLG51000 is not set
# CONFIG_REGULATOR_SUN20I is not set
CONFIG_REGULATOR_SY7636A=m
@@ -6649,6 +6713,7 @@ CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=m
CONFIG_RESET_HISI=y
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=m
# CONFIG_RESET_INTEL_GW is not set
CONFIG_RESET_MESON_AUDIO_ARB=m
CONFIG_RESET_MESON=m
@@ -6667,7 +6732,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -6736,6 +6803,7 @@ CONFIG_RPMSG_TTY=m
CONFIG_RPMSG_VIRTIO=m
CONFIG_RPMSG_WWAN_CTRL=m
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -6888,8 +6956,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -6908,6 +6977,7 @@ CONFIG_RTLLIB=m
CONFIG_RTLWIFI_DEBUG=y
CONFIG_RTLWIFI=m
# CONFIG_RTS5208 is not set
+CONFIG_RTSN=m
CONFIG_RTW88_8723CS=m
CONFIG_RTW88_8723DE=m
CONFIG_RTW88_8723DS=m
@@ -6933,6 +7003,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -7224,6 +7301,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -7339,10 +7417,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -7390,6 +7472,8 @@ CONFIG_SENSORS_SMPRO=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -7567,6 +7651,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -7588,13 +7673,16 @@ CONFIG_SMARTJOYPLUS_FF=y
# CONFIG_SMB_SERVER is not set
CONFIG_SMC91X=m
# CONFIG_SM_CAMCC_6350 is not set
+CONFIG_SM_CAMCC_7150=m
CONFIG_SM_CAMCC_8250=m
# CONFIG_SM_CAMCC_8450 is not set
# CONFIG_SM_CAMCC_8550 is not set
+CONFIG_SM_CAMCC_8650=m
CONFIG_SMC_DIAG=m
# CONFIG_SMC_LO is not set
CONFIG_SMC=m
CONFIG_SM_DISPCC_6115=m
+CONFIG_SM_DISPCC_7150=m
CONFIG_SM_DISPCC_8250=m
CONFIG_SM_DISPCC_8450=m
# CONFIG_SM_DISPCC_8550 is not set
@@ -7605,7 +7693,7 @@ CONFIG_SM_GCC_6115=m
# CONFIG_SM_GCC_6125 is not set
# CONFIG_SM_GCC_6350 is not set
# CONFIG_SM_GCC_6375 is not set
-# CONFIG_SM_GCC_7150 is not set
+CONFIG_SM_GCC_7150=m
CONFIG_SM_GCC_8150=y
CONFIG_SM_GCC_8250=m
CONFIG_SM_GCC_8350=m
@@ -7636,6 +7724,7 @@ CONFIG_SMS_SIANO_RC=y
CONFIG_SMS_USB_DRV=m
# CONFIG_SM_TCSRCC_8550 is not set
CONFIG_SM_TCSRCC_8650=m
+CONFIG_SM_VIDEOCC_7150=m
# CONFIG_SM_VIDEOCC_8150 is not set
CONFIG_SM_VIDEOCC_8250=m
CONFIG_SM_VIDEOCC_8350=m
@@ -7719,6 +7808,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -7838,6 +7928,7 @@ CONFIG_SND_SOC_ADI=m
CONFIG_SND_SOC_AK4458=m
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -7884,6 +7975,7 @@ CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SDW=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
CONFIG_SND_SOC_CS4265=m
# CONFIG_SND_SOC_CS4270 is not set
@@ -7902,6 +7994,7 @@ CONFIG_SND_SOC_CS42XX8_I2C=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -7910,6 +8003,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8328_I2C=m
@@ -8093,6 +8187,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5659=m
@@ -8248,6 +8343,7 @@ CONFIG_SND_SOC_TSCS42XX=m
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
CONFIG_SND_SOC_WCD9335=m
CONFIG_SND_SOC_WCD934X=m
+CONFIG_SND_SOC_WCD937X_SDW=m
CONFIG_SND_SOC_WCD938X_SDW=m
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -8383,6 +8479,7 @@ CONFIG_SPI_BITBANG=m
CONFIG_SPI_CADENCE=m
CONFIG_SPI_CADENCE_QUADSPI=m
CONFIG_SPI_CADENCE_XSPI=m
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_DESIGNWARE=m
@@ -8708,6 +8805,7 @@ CONFIG_TEGRA_SOCTHERM=m
CONFIG_TEGRA_VDE=m
CONFIG_TEGRA_WATCHDOG=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -8793,6 +8891,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -8811,6 +8910,7 @@ CONFIG_TI_DAC7311=m
# CONFIG_TI_DAC7612 is not set
CONFIG_TI_DAVINCI_MDIO=m
CONFIG_TI_ECAP_CAPTURE=m
+CONFIG_TI_EQEP=m
CONFIG_TIFM_7XX1=m
CONFIG_TIFM_CORE=m
CONFIG_TIGON3_HWMON=y
@@ -9074,6 +9174,7 @@ CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_UCLAMP_TASK=y
CONFIG_UCSI_ACPI=m
CONFIG_UCSI_CCG=m
+CONFIG_UCSI_LENOVO_YOGA_C630=m
CONFIG_UCSI_PMIC_GLINK=m
CONFIG_UCSI_STM32G0=m
CONFIG_UDF_FS=m
@@ -9530,6 +9631,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -9556,6 +9658,7 @@ CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VDSO=y
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
CONFIG_VEML6070=m
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -9655,6 +9758,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -9664,6 +9768,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -9686,6 +9792,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -9713,6 +9820,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
CONFIG_VIDEO_MAX96712=m
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
CONFIG_VIDEO_MESON_GE2D=m
CONFIG_VIDEO_MESON_VDEC=m
@@ -9770,6 +9879,7 @@ CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
# CONFIG_VIDEO_RCAR_CSI2 is not set
# CONFIG_VIDEO_RCAR_ISP is not set
# CONFIG_VIDEO_RCAR_VIN is not set
@@ -9860,6 +9970,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -10167,7 +10278,6 @@ CONFIG_ZYNQMP_POWER=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-16k-fedora.config b/SOURCES/kernel-aarch64-16k-fedora.config
index 24594e0..1c99698 100644
--- a/SOURCES/kernel-aarch64-16k-fedora.config
+++ b/SOURCES/kernel-aarch64-16k-fedora.config
@@ -125,6 +125,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -198,7 +199,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
# CONFIG_AFFS_FS is not set
@@ -673,6 +674,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_AXI_DMAC=m
CONFIG_AXP20X_ADC=m
CONFIG_AXP20X_POWER=m
@@ -716,6 +718,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
CONFIG_BACKLIGHT_LM3630A=m
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -752,8 +755,10 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_DS2782 is not set
CONFIG_BATTERY_GAUGE_LTC2941=m
# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_BATTERY_LENOVO_YOGA_C630=m
CONFIG_BATTERY_MAX17040=m
CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_PM8916_BMS_VM is not set
CONFIG_BATTERY_QCOM_BATTMGR=m
@@ -806,6 +811,7 @@ CONFIG_BCM_SBA_RAID=m
CONFIG_BCM_VIDEOCORE=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -861,6 +867,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SX8 is not set
@@ -1174,6 +1181,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
CONFIG_CHARGER_BQ25980=m
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
CONFIG_CHARGER_CROS_USBPD=m
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1254,6 +1262,7 @@ CONFIG_CLK_IMX95_BLK_CTL=m
CONFIG_CLK_KUNIT_TEST=m
CONFIG_CLK_LS1028A_PLLDIG=y
CONFIG_CLK_PX30=y
+CONFIG_CLK_QCM2290_GPUCC=m
CONFIG_CLK_QORIQ=y
CONFIG_CLK_RASPBERRYPI=y
# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set
@@ -1319,6 +1328,8 @@ CONFIG_COMMON_CLK_AXG_AUDIO=y
CONFIG_COMMON_CLK_AXG=y
CONFIG_COMMON_CLK_AXI_CLKGEN=m
CONFIG_COMMON_CLK_BD718XX=m
+CONFIG_COMMON_CLK_C3_PERIPHERALS=y
+CONFIG_COMMON_CLK_C3_PLL=y
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
@@ -1373,6 +1384,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_VDSO is not set
CONFIG_COMPAT=y
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1713,6 +1725,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1913,6 +1926,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1947,6 +1961,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -2071,11 +2086,13 @@ CONFIG_DRM_PANEL_EDP=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
CONFIG_DRM_PANEL_HIMAX_HX8394=m
CONFIG_DRM_PANEL_ILITEK_IL9322=m
CONFIG_DRM_PANEL_ILITEK_ILI9341=m
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -2091,6 +2108,7 @@ CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
CONFIG_DRM_PANEL_LG_LG4573=m
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -2372,6 +2390,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
CONFIG_EC_ACER_ASPIRE1=m
CONFIG_ECHO=m
+CONFIG_EC_LENOVO_YOGA_C630=m
CONFIG_ECRYPT_FS=m
# CONFIG_ECRYPT_FS_MESSAGING is not set
CONFIG_EDAC_BLUEFIELD=m
@@ -2426,6 +2445,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2580,7 +2600,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2626,7 +2648,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2761,6 +2782,7 @@ CONFIG_GPIO_AGGREGATOR=m
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_BCM_XGS_IPROC is not set
CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_BRCMSTB=m
CONFIG_GPIO_BT8XX=m
CONFIG_GPIO_CADENCE=m
CONFIG_GPIO_CDEV_V1=y
@@ -2817,6 +2839,7 @@ CONFIG_GPIO_ROCKCHIP=y
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
CONFIG_GPIO_STMPE=y
CONFIG_GPIO_SYSCON=m
# CONFIG_GPIO_SYSFS is not set
@@ -2831,6 +2854,7 @@ CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_VF610=y
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
CONFIG_GPIO_WATCHDOG=m
CONFIG_GPIO_WCD934X=m
# CONFIG_GPIO_WINBOND is not set
@@ -3250,6 +3274,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -3430,6 +3455,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -3442,6 +3468,7 @@ CONFIG_INPUT_BBNSM_PWRKEY=m
# CONFIG_INPUT_CM109 is not set
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3536,6 +3563,7 @@ CONFIG_INTERCONNECT_QCOM_BCM_VOTER=y
# CONFIG_INTERCONNECT_QCOM_MSM8909 is not set
CONFIG_INTERCONNECT_QCOM_MSM8916=m
# CONFIG_INTERCONNECT_QCOM_MSM8939 is not set
+CONFIG_INTERCONNECT_QCOM_MSM8953=m
# CONFIG_INTERCONNECT_QCOM_MSM8974 is not set
CONFIG_INTERCONNECT_QCOM_MSM8996=m
CONFIG_INTERCONNECT_QCOM_OSM_L3=m
@@ -3668,6 +3696,7 @@ CONFIG_IPQ_GCC_5018=m
# CONFIG_IPQ_GCC_8074 is not set
# CONFIG_IPQ_GCC_9574 is not set
# CONFIG_IPQ_LCC_806X is not set
+CONFIG_IPQ_NSSCC_QCA8K=m
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_SCTP=m
@@ -3897,6 +3926,7 @@ CONFIG_KALLSYMS=y
# CONFIG_KCOV is not set
# CONFIG_KCSAN is not set
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZ4 is not set
@@ -4009,6 +4039,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -4047,6 +4078,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
CONFIG_LEDS_GPIO=m
@@ -4092,6 +4124,7 @@ CONFIG_LEDS_REGULATOR=m
CONFIG_LEDS_SGM3140=m
# CONFIG_LEDS_SPI_BYTE is not set
# CONFIG_LEDS_SUN50I_A100 is not set
+CONFIG_LEDS_SY7802=m
CONFIG_LEDS_SYSCON=y
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -4105,6 +4138,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -4243,6 +4277,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
CONFIG_MARVELL_88X2222_PHY=m
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -4367,6 +4402,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -4407,6 +4443,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
CONFIG_MFD_AC100=m
# CONFIG_MFD_ACT8945A is not set
@@ -4425,6 +4462,8 @@ CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_DEV=m
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -4492,6 +4531,7 @@ CONFIG_MFD_RK8XX_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
CONFIG_MFD_ROHM_BD718XX=y
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4664,6 +4704,7 @@ CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_AM654=m
+CONFIG_MMC_SDHCI_BRCMSTB=m
CONFIG_MMC_SDHCI_CADENCE=m
CONFIG_MMC_SDHCI_ESDHC_IMX=m
CONFIG_MMC_SDHCI_F_SDH30=m
@@ -5042,6 +5083,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -5146,8 +5188,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -5256,6 +5300,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -5584,6 +5629,7 @@ CONFIG_NVMEM=y
CONFIG_NVMEM_ZYNQMP=m
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -5607,6 +5653,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -5811,6 +5858,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5850,6 +5898,7 @@ CONFIG_PHY_CAN_TRANSCEIVER=m
# CONFIG_PHY_DM816X_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+CONFIG_PHY_FSL_IMX8QM_HSIO=m
CONFIG_PHY_FSL_LYNX_28G=m
CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY=m
CONFIG_PHY_HI3660_USB=m
@@ -5960,9 +6009,11 @@ CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QM=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+CONFIG_PINCTRL_IMX91=y
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+CONFIG_PINCTRL_IMX_SCMI=y
# CONFIG_PINCTRL_IPQ4019 is not set
# CONFIG_PINCTRL_IPQ5018 is not set
# CONFIG_PINCTRL_IPQ5332 is not set
@@ -6022,6 +6073,7 @@ CONFIG_PINCTRL_SDM845=m
# CONFIG_PINCTRL_SDX65 is not set
# CONFIG_PINCTRL_SDX75 is not set
CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_SM4250_LPASS_LPI=m
# CONFIG_PINCTRL_SM4450 is not set
CONFIG_PINCTRL_SM6115_LPASS_LPI=m
CONFIG_PINCTRL_SM6115=m
@@ -6131,6 +6183,8 @@ CONFIG_POWER_RESET_VERSATILE=y
CONFIG_POWER_RESET_VEXPRESS=y
CONFIG_POWER_RESET_XGENE=y
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -6235,12 +6289,14 @@ CONFIG_PVPANIC_PCI=m
CONFIG_PVPANIC=y
CONFIG_PWM_APPLE=m
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
CONFIG_PWM_BCM2835=m
CONFIG_PWM_CLK=m
CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -6288,6 +6344,7 @@ CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_COINCELL=m
CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_CPR=m
+CONFIG_QCOM_CPUCP_MBOX=m
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
@@ -6314,6 +6371,7 @@ CONFIG_QCOM_MPM=m
CONFIG_QCOM_OCMEM=m
CONFIG_QCOM_PBS=m
CONFIG_QCOM_PDC=y
+CONFIG_QCOM_PD_MAPPER=m
CONFIG_QCOM_PIL_INFO=m
CONFIG_QCOM_PMIC_GLINK=m
CONFIG_QCOM_PMIC_PDCHARGER_ULOG=m
@@ -6351,6 +6409,8 @@ CONFIG_QCOM_SSC_BLOCK_BUS=y
CONFIG_QCOM_STATS=m
CONFIG_QCOM_SYSMON=m
CONFIG_QCOM_TSENS=m
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
CONFIG_QCOM_WCNSS_CTRL=m
CONFIG_QCOM_WCNSS_PIL=m
CONFIG_QCOM_WDT=m
@@ -6483,6 +6543,7 @@ CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
CONFIG_REGULATOR_ACT8865=m
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_ANATOP=m
@@ -6492,6 +6553,7 @@ CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_AXP20X=m
CONFIG_REGULATOR_BD718XX=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
CONFIG_REGULATOR_CROS_EC=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
@@ -6547,6 +6609,7 @@ CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88090 is not set
CONFIG_REGULATOR_PWM=y
CONFIG_REGULATOR_QCOM_LABIBB=m
+CONFIG_REGULATOR_QCOM_PM8008=m
CONFIG_REGULATOR_QCOM_REFGEN=m
CONFIG_REGULATOR_QCOM_RPMH=y
# CONFIG_REGULATOR_QCOM_RPM is not set
@@ -6570,6 +6633,7 @@ CONFIG_REGULATOR_RTMV20=m
CONFIG_REGULATOR_RTQ2134=m
CONFIG_REGULATOR_RTQ2208=m
CONFIG_REGULATOR_RTQ6752=m
+CONFIG_REGULATOR_RZG2L_VBCTRL=m
# CONFIG_REGULATOR_SLG51000 is not set
# CONFIG_REGULATOR_SUN20I is not set
CONFIG_REGULATOR_SY7636A=m
@@ -6622,6 +6686,7 @@ CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=m
CONFIG_RESET_HISI=y
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=m
# CONFIG_RESET_INTEL_GW is not set
CONFIG_RESET_MESON_AUDIO_ARB=m
CONFIG_RESET_MESON=m
@@ -6640,7 +6705,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -6709,6 +6776,7 @@ CONFIG_RPMSG_TTY=m
CONFIG_RPMSG_VIRTIO=m
CONFIG_RPMSG_WWAN_CTRL=m
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -6861,8 +6929,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -6881,6 +6950,7 @@ CONFIG_RTLLIB=m
# CONFIG_RTLWIFI_DEBUG is not set
CONFIG_RTLWIFI=m
# CONFIG_RTS5208 is not set
+CONFIG_RTSN=m
CONFIG_RTW88_8723CS=m
CONFIG_RTW88_8723DE=m
CONFIG_RTW88_8723DS=m
@@ -6906,6 +6976,13 @@ CONFIG_RTW89_8922AE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -7197,6 +7274,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -7312,10 +7390,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -7363,6 +7445,8 @@ CONFIG_SENSORS_SMPRO=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -7540,6 +7624,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -7561,13 +7646,16 @@ CONFIG_SMARTJOYPLUS_FF=y
# CONFIG_SMB_SERVER is not set
CONFIG_SMC91X=m
# CONFIG_SM_CAMCC_6350 is not set
+CONFIG_SM_CAMCC_7150=m
CONFIG_SM_CAMCC_8250=m
# CONFIG_SM_CAMCC_8450 is not set
# CONFIG_SM_CAMCC_8550 is not set
+CONFIG_SM_CAMCC_8650=m
CONFIG_SMC_DIAG=m
# CONFIG_SMC_LO is not set
CONFIG_SMC=m
CONFIG_SM_DISPCC_6115=m
+CONFIG_SM_DISPCC_7150=m
CONFIG_SM_DISPCC_8250=m
CONFIG_SM_DISPCC_8450=m
# CONFIG_SM_DISPCC_8550 is not set
@@ -7578,7 +7666,7 @@ CONFIG_SM_GCC_6115=m
# CONFIG_SM_GCC_6125 is not set
# CONFIG_SM_GCC_6350 is not set
# CONFIG_SM_GCC_6375 is not set
-# CONFIG_SM_GCC_7150 is not set
+CONFIG_SM_GCC_7150=m
CONFIG_SM_GCC_8150=y
CONFIG_SM_GCC_8250=m
CONFIG_SM_GCC_8350=m
@@ -7609,6 +7697,7 @@ CONFIG_SMS_SIANO_RC=y
CONFIG_SMS_USB_DRV=m
# CONFIG_SM_TCSRCC_8550 is not set
CONFIG_SM_TCSRCC_8650=m
+CONFIG_SM_VIDEOCC_7150=m
# CONFIG_SM_VIDEOCC_8150 is not set
CONFIG_SM_VIDEOCC_8250=m
CONFIG_SM_VIDEOCC_8350=m
@@ -7692,6 +7781,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -7810,6 +7900,7 @@ CONFIG_SND_SOC_ADI=m
CONFIG_SND_SOC_AK4458=m
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -7856,6 +7947,7 @@ CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SDW=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
CONFIG_SND_SOC_CS4265=m
# CONFIG_SND_SOC_CS4270 is not set
@@ -7874,6 +7966,7 @@ CONFIG_SND_SOC_CS42XX8_I2C=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -7882,6 +7975,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8328_I2C=m
@@ -8065,6 +8159,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5659=m
@@ -8219,6 +8314,7 @@ CONFIG_SND_SOC_TSCS42XX=m
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
CONFIG_SND_SOC_WCD9335=m
CONFIG_SND_SOC_WCD934X=m
+CONFIG_SND_SOC_WCD937X_SDW=m
CONFIG_SND_SOC_WCD938X_SDW=m
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -8354,6 +8450,7 @@ CONFIG_SPI_BITBANG=m
CONFIG_SPI_CADENCE=m
CONFIG_SPI_CADENCE_QUADSPI=m
CONFIG_SPI_CADENCE_XSPI=m
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_DESIGNWARE=m
@@ -8679,6 +8776,7 @@ CONFIG_TEGRA_SOCTHERM=m
CONFIG_TEGRA_VDE=m
CONFIG_TEGRA_WATCHDOG=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -8764,6 +8862,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -8782,6 +8881,7 @@ CONFIG_TI_DAC7311=m
# CONFIG_TI_DAC7612 is not set
CONFIG_TI_DAVINCI_MDIO=m
CONFIG_TI_ECAP_CAPTURE=m
+CONFIG_TI_EQEP=m
CONFIG_TIFM_7XX1=m
CONFIG_TIFM_CORE=m
CONFIG_TIGON3_HWMON=y
@@ -9045,6 +9145,7 @@ CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_UCLAMP_TASK=y
CONFIG_UCSI_ACPI=m
CONFIG_UCSI_CCG=m
+CONFIG_UCSI_LENOVO_YOGA_C630=m
CONFIG_UCSI_PMIC_GLINK=m
CONFIG_UCSI_STM32G0=m
CONFIG_UDF_FS=m
@@ -9501,6 +9602,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -9527,6 +9629,7 @@ CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VDSO=y
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
CONFIG_VEML6070=m
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -9626,6 +9729,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -9635,6 +9739,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -9657,6 +9763,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -9684,6 +9791,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
CONFIG_VIDEO_MAX96712=m
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
CONFIG_VIDEO_MESON_GE2D=m
CONFIG_VIDEO_MESON_VDEC=m
@@ -9741,6 +9850,7 @@ CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
# CONFIG_VIDEO_RCAR_CSI2 is not set
# CONFIG_VIDEO_RCAR_ISP is not set
# CONFIG_VIDEO_RCAR_VIN is not set
@@ -9831,6 +9941,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -10138,7 +10249,6 @@ CONFIG_ZYNQMP_POWER=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-64k-debug-rhel.config b/SOURCES/kernel-aarch64-64k-debug-rhel.config
index a404466..fcdba04 100644
--- a/SOURCES/kernel-aarch64-64k-debug-rhel.config
+++ b/SOURCES/kernel-aarch64-64k-debug-rhel.config
@@ -105,6 +105,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -401,7 +402,10 @@ CONFIG_ARM_MHU=m
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PMU=y
# CONFIG_ARM_PSCI_CHECKER is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_PSCI=y
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
CONFIG_ARM_SBSA_WATCHDOG=m
CONFIG_ARM_SCMI_CPUFREQ=m
@@ -516,6 +520,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -529,6 +534,7 @@ CONFIG_BACKLIGHT_GPIO=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -553,6 +559,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -628,6 +635,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -1038,6 +1046,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1211,7 +1220,7 @@ CONFIG_CRYPTO_DEV_SA2UL=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
+CONFIG_CRYPTO_DEV_TEGRA=m
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1323,6 +1332,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1440,6 +1450,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1455,7 +1466,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
# CONFIG_DLM_DEPRECATED_API is not set
# CONFIG_DLM is not set
@@ -1516,6 +1527,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1531,7 +1543,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
CONFIG_DPAA2_CONSOLE=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
@@ -1548,6 +1560,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1587,6 +1600,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1636,11 +1650,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1656,6 +1672,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1892,6 +1909,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_BLUEFIELD=m
CONFIG_EDAC_DEBUG=y
@@ -1937,10 +1955,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_EPIC100 is not set
CONFIG_EPOLL=y
@@ -1948,10 +1969,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -2044,6 +2069,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2106,11 +2132,10 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_BMAN_TEST is not set
CONFIG_FSL_DPAA2_ETH_DCB=y
@@ -2287,6 +2312,7 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA186=y
@@ -2296,6 +2322,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_WATCHDOG=m
# CONFIG_GPIO_WINBOND is not set
@@ -2662,12 +2689,12 @@ CONFIG_I3C=m
# CONFIG_I40E_DCB is not set
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_ICE_HWMON=y
@@ -2680,6 +2707,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2877,6 +2905,7 @@ CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_PWM_BEEPER is not set
# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -2909,6 +2938,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -3207,6 +3237,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x1
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3228,8 +3259,8 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_CYPRESS_SF is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_IMX is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -3288,14 +3319,9 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
CONFIG_KVM_PROVE_MMU=y
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM=y
@@ -3306,6 +3332,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3364,6 +3393,7 @@ CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_NIC78BX is not set
+CONFIG_LEDS_PCA9532_GPIO=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
@@ -3374,6 +3404,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3387,6 +3418,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3439,7 +3471,7 @@ CONFIG_LOCKD=m
CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
CONFIG_LOCKD_V4=y
CONFIG_LOCK_EVENT_COUNTS=y
-# CONFIG_LOCK_STAT is not set
+CONFIG_LOCK_STAT=y
CONFIG_LOCK_TORTURE_TEST=m
CONFIG_LOCKUP_DETECTOR=y
CONFIG_LOG_BUF_SHIFT=20
@@ -3519,6 +3551,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -3615,9 +3648,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3627,6 +3657,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3652,6 +3683,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3665,6 +3697,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3727,6 +3761,7 @@ CONFIG_MFD_MAX77620=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4235,8 +4270,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4246,8 +4283,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4333,8 +4369,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4625,6 +4662,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4643,6 +4681,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -4816,6 +4855,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4858,6 +4898,7 @@ CONFIG_PHY_BRCM_SATA=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4914,9 +4955,11 @@ CONFIG_PINCTRL_IMX8MP=y
CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+# CONFIG_PINCTRL_IMX91 is not set
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
CONFIG_PINCTRL_IPROC_GPIO=y
@@ -5001,6 +5044,8 @@ CONFIG_POWER_RESET_SYSCON=y
# CONFIG_POWER_RESET_VEXPRESS is not set
# CONFIG_POWER_RESET_XGENE is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5104,6 +5149,7 @@ CONFIG_PWM_BCM_IPROC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -5120,14 +5166,15 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_BAM_DMA is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
CONFIG_QCOM_EMAC=m
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
@@ -5148,6 +5195,7 @@ CONFIG_QCOM_L3_PMU=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_QSEECOM is not set
@@ -5162,6 +5210,8 @@ CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SPM is not set
# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
# CONFIG_QCOM_WDT is not set
CONFIG_QEDE=m
CONFIG_QED_FCOE=y
@@ -5208,6 +5258,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5266,7 +5317,7 @@ CONFIG_REGMAP=y
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
-# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_ARM_SCMI=m
# CONFIG_REGULATOR_AW37503 is not set
CONFIG_REGULATOR_BD718XX=m
# CONFIG_REGULATOR_DA9121 is not set
@@ -5305,13 +5356,13 @@ CONFIG_REGULATOR_MAX77686=m
# CONFIG_REGULATOR_MPQ7920 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
-# CONFIG_REGULATOR_PCA9450 is not set
-# CONFIG_REGULATOR_PF8X00 is not set
+CONFIG_REGULATOR_PCA9450=m
+CONFIG_REGULATOR_PF8X00=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
-# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_REFGEN is not set
# CONFIG_REGULATOR_RAA215300 is not set
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
@@ -5356,6 +5407,7 @@ CONFIG_RENESAS_PHY=m
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_AOSS is not set
# CONFIG_RESET_QCOM_PDC is not set
@@ -5370,7 +5422,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5408,6 +5460,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5468,7 +5521,7 @@ CONFIG_RTC_DRV_FSL_FTM_ALARM=m
# CONFIG_RTC_DRV_FTRTC010 is not set
# CONFIG_RTC_DRV_GOLDFISH is not set
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_HYM8563=m
# CONFIG_RTC_DRV_IMXDI is not set
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_ISL12026 is not set
@@ -5504,10 +5557,10 @@ CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RS5C372=m
-# CONFIG_RTC_DRV_RV3028 is not set
+CONFIG_RTC_DRV_RV3028=m
CONFIG_RTC_DRV_RV3029C2=m
# CONFIG_RTC_DRV_RV3029_HWMON is not set
-# CONFIG_RTC_DRV_RV3032 is not set
+CONFIG_RTC_DRV_RV3032=m
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_RX6110 is not set
@@ -5519,7 +5572,7 @@ CONFIG_RTC_DRV_RX8581=m
# CONFIG_RTC_DRV_SD3078 is not set
# CONFIG_RTC_DRV_SNVS is not set
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_TEGRA is not set
+CONFIG_RTC_DRV_TEGRA=m
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_TI_K3=m
CONFIG_RTC_DRV_V3020=m
@@ -5543,6 +5596,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5582,6 +5636,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5933,9 +5994,13 @@ CONFIG_SENSORS_MAX31790=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5981,6 +6046,7 @@ CONFIG_SENSORS_SMPRO=m
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -6127,6 +6193,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6232,6 +6299,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6336,6 +6404,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6398,6 +6467,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6406,6 +6476,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6578,6 +6649,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6714,6 +6786,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6836,6 +6909,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+# CONFIG_SPI_CH341 is not set
CONFIG_SPI_DEBUG=y
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_DSPI=y
@@ -7149,6 +7223,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7205,7 +7280,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7687,6 +7762,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7698,6 +7774,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7708,6 +7785,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7804,6 +7882,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7819,6 +7899,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7838,6 +7919,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7954,6 +8037,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8130,7 +8214,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8187,7 +8271,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-64k-rhel.config b/SOURCES/kernel-aarch64-64k-rhel.config
index abb7ae0..4bf6707 100644
--- a/SOURCES/kernel-aarch64-64k-rhel.config
+++ b/SOURCES/kernel-aarch64-64k-rhel.config
@@ -105,6 +105,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -401,7 +402,10 @@ CONFIG_ARM_MHU=m
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PMU=y
# CONFIG_ARM_PSCI_CHECKER is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_PSCI=y
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
CONFIG_ARM_SBSA_WATCHDOG=m
CONFIG_ARM_SCMI_CPUFREQ=m
@@ -516,6 +520,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -529,6 +534,7 @@ CONFIG_BACKLIGHT_GPIO=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -553,6 +559,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -628,6 +635,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -1038,6 +1046,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1211,7 +1220,7 @@ CONFIG_CRYPTO_DEV_SA2UL=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
+CONFIG_CRYPTO_DEV_TEGRA=m
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1323,6 +1332,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1432,6 +1442,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1447,7 +1458,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
# CONFIG_DLM_DEPRECATED_API is not set
# CONFIG_DLM is not set
@@ -1508,6 +1519,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1523,7 +1535,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
CONFIG_DPAA2_CONSOLE=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
@@ -1540,6 +1552,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1579,6 +1592,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1628,11 +1642,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1648,6 +1664,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1884,6 +1901,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_BLUEFIELD=m
# CONFIG_EDAC_DEBUG is not set
@@ -1929,10 +1947,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_EPIC100 is not set
CONFIG_EPOLL=y
@@ -1940,10 +1961,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -2028,6 +2053,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2090,11 +2116,10 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_BMAN_TEST is not set
CONFIG_FSL_DPAA2_ETH_DCB=y
@@ -2271,6 +2296,7 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA186=y
@@ -2280,6 +2306,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_WATCHDOG=m
# CONFIG_GPIO_WINBOND is not set
@@ -2646,12 +2673,12 @@ CONFIG_I3C=m
# CONFIG_I40E_DCB is not set
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_ICE_HWMON=y
@@ -2664,6 +2691,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2861,6 +2889,7 @@ CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_PWM_BEEPER is not set
# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -2893,6 +2922,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -3186,6 +3216,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3207,8 +3238,8 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_CYPRESS_SF is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_IMX is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -3267,14 +3298,9 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# CONFIG_KVM_PROVE_MMU is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM=y
@@ -3285,6 +3311,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3343,6 +3372,7 @@ CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_NIC78BX is not set
+CONFIG_LEDS_PCA9532_GPIO=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
@@ -3353,6 +3383,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3366,6 +3397,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3498,6 +3530,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -3594,9 +3627,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3606,6 +3636,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3631,6 +3662,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3644,6 +3676,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3706,6 +3740,7 @@ CONFIG_MFD_MAX77620=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4214,8 +4249,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4225,8 +4262,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4312,8 +4348,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4604,6 +4641,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4622,6 +4660,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -4793,6 +4832,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4835,6 +4875,7 @@ CONFIG_PHY_BRCM_SATA=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4891,9 +4932,11 @@ CONFIG_PINCTRL_IMX8MP=y
CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+# CONFIG_PINCTRL_IMX91 is not set
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
CONFIG_PINCTRL_IPROC_GPIO=y
@@ -4978,6 +5021,8 @@ CONFIG_POWER_RESET_SYSCON=y
# CONFIG_POWER_RESET_VEXPRESS is not set
# CONFIG_POWER_RESET_XGENE is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5081,6 +5126,7 @@ CONFIG_PWM_BCM_IPROC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -5097,14 +5143,15 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_BAM_DMA is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
CONFIG_QCOM_EMAC=m
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
@@ -5125,6 +5172,7 @@ CONFIG_QCOM_L3_PMU=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_QSEECOM is not set
@@ -5139,6 +5187,8 @@ CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SPM is not set
# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
# CONFIG_QCOM_WDT is not set
CONFIG_QEDE=m
CONFIG_QED_FCOE=y
@@ -5185,6 +5235,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5243,7 +5294,7 @@ CONFIG_REGMAP=y
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
-# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_ARM_SCMI=m
# CONFIG_REGULATOR_AW37503 is not set
CONFIG_REGULATOR_BD718XX=m
# CONFIG_REGULATOR_DA9121 is not set
@@ -5282,13 +5333,13 @@ CONFIG_REGULATOR_MAX77686=m
# CONFIG_REGULATOR_MPQ7920 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
-# CONFIG_REGULATOR_PCA9450 is not set
-# CONFIG_REGULATOR_PF8X00 is not set
+CONFIG_REGULATOR_PCA9450=m
+CONFIG_REGULATOR_PF8X00=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
-# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_REFGEN is not set
# CONFIG_REGULATOR_RAA215300 is not set
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
@@ -5333,6 +5384,7 @@ CONFIG_RENESAS_PHY=m
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_AOSS is not set
# CONFIG_RESET_QCOM_PDC is not set
@@ -5347,7 +5399,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5385,6 +5437,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5445,7 +5498,7 @@ CONFIG_RTC_DRV_FSL_FTM_ALARM=m
# CONFIG_RTC_DRV_FTRTC010 is not set
# CONFIG_RTC_DRV_GOLDFISH is not set
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_HYM8563=m
# CONFIG_RTC_DRV_IMXDI is not set
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_ISL12026 is not set
@@ -5481,10 +5534,10 @@ CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RS5C372=m
-# CONFIG_RTC_DRV_RV3028 is not set
+CONFIG_RTC_DRV_RV3028=m
CONFIG_RTC_DRV_RV3029C2=m
# CONFIG_RTC_DRV_RV3029_HWMON is not set
-# CONFIG_RTC_DRV_RV3032 is not set
+CONFIG_RTC_DRV_RV3032=m
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_RX6110 is not set
@@ -5496,7 +5549,7 @@ CONFIG_RTC_DRV_RX8581=m
# CONFIG_RTC_DRV_SD3078 is not set
# CONFIG_RTC_DRV_SNVS is not set
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_TEGRA is not set
+CONFIG_RTC_DRV_TEGRA=m
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_TI_K3=m
CONFIG_RTC_DRV_V3020=m
@@ -5520,6 +5573,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5559,6 +5613,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5910,9 +5971,13 @@ CONFIG_SENSORS_MAX31790=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5958,6 +6023,7 @@ CONFIG_SENSORS_SMPRO=m
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -6104,6 +6170,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6209,6 +6276,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6312,6 +6380,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6374,6 +6443,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6382,6 +6452,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6554,6 +6625,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6689,6 +6761,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6811,6 +6884,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_DSPI=y
@@ -7124,6 +7198,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7180,7 +7255,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7662,6 +7737,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7673,6 +7749,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7683,6 +7760,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7779,6 +7857,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7794,6 +7874,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7813,6 +7894,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7929,6 +8012,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8105,7 +8189,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8162,7 +8246,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-debug-fedora.config b/SOURCES/kernel-aarch64-debug-fedora.config
index 4ba469b..6ac6ab2 100644
--- a/SOURCES/kernel-aarch64-debug-fedora.config
+++ b/SOURCES/kernel-aarch64-debug-fedora.config
@@ -125,6 +125,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -198,7 +199,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
# CONFIG_AFFS_FS is not set
@@ -673,6 +674,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_AXI_DMAC=m
CONFIG_AXP20X_ADC=m
CONFIG_AXP20X_POWER=m
@@ -716,6 +718,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
CONFIG_BACKLIGHT_LM3630A=m
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -752,8 +755,10 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_DS2782 is not set
CONFIG_BATTERY_GAUGE_LTC2941=m
# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_BATTERY_LENOVO_YOGA_C630=m
CONFIG_BATTERY_MAX17040=m
CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_PM8916_BMS_VM is not set
CONFIG_BATTERY_QCOM_BATTMGR=m
@@ -806,6 +811,7 @@ CONFIG_BCM_SBA_RAID=m
CONFIG_BCM_VIDEOCORE=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -861,6 +867,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SX8 is not set
@@ -1174,6 +1181,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
CONFIG_CHARGER_BQ25980=m
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
CONFIG_CHARGER_CROS_USBPD=m
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1254,6 +1262,7 @@ CONFIG_CLK_IMX95_BLK_CTL=m
CONFIG_CLK_KUNIT_TEST=m
CONFIG_CLK_LS1028A_PLLDIG=y
CONFIG_CLK_PX30=y
+CONFIG_CLK_QCM2290_GPUCC=m
CONFIG_CLK_QORIQ=y
CONFIG_CLK_RASPBERRYPI=y
# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set
@@ -1319,6 +1328,8 @@ CONFIG_COMMON_CLK_AXG_AUDIO=y
CONFIG_COMMON_CLK_AXG=y
CONFIG_COMMON_CLK_AXI_CLKGEN=m
CONFIG_COMMON_CLK_BD718XX=m
+CONFIG_COMMON_CLK_C3_PERIPHERALS=y
+CONFIG_COMMON_CLK_C3_PLL=y
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
@@ -1373,6 +1384,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_VDSO is not set
CONFIG_COMPAT=y
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1713,6 +1725,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1922,6 +1935,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1956,6 +1970,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -2080,11 +2095,13 @@ CONFIG_DRM_PANEL_EDP=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
CONFIG_DRM_PANEL_HIMAX_HX8394=m
CONFIG_DRM_PANEL_ILITEK_IL9322=m
CONFIG_DRM_PANEL_ILITEK_ILI9341=m
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -2100,6 +2117,7 @@ CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
CONFIG_DRM_PANEL_LG_LG4573=m
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -2381,6 +2399,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
CONFIG_EC_ACER_ASPIRE1=m
CONFIG_ECHO=m
+CONFIG_EC_LENOVO_YOGA_C630=m
CONFIG_ECRYPT_FS=m
# CONFIG_ECRYPT_FS_MESSAGING is not set
CONFIG_EDAC_BLUEFIELD=m
@@ -2435,6 +2454,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2597,7 +2617,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2643,7 +2665,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2778,6 +2799,7 @@ CONFIG_GPIO_AGGREGATOR=m
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_BCM_XGS_IPROC is not set
CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_BRCMSTB=m
CONFIG_GPIO_BT8XX=m
CONFIG_GPIO_CADENCE=m
CONFIG_GPIO_CDEV_V1=y
@@ -2834,6 +2856,7 @@ CONFIG_GPIO_ROCKCHIP=y
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
CONFIG_GPIO_STMPE=y
CONFIG_GPIO_SYSCON=m
# CONFIG_GPIO_SYSFS is not set
@@ -2848,6 +2871,7 @@ CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_VF610=y
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
CONFIG_GPIO_WATCHDOG=m
CONFIG_GPIO_WCD934X=m
# CONFIG_GPIO_WINBOND is not set
@@ -3267,6 +3291,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -3447,6 +3472,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -3459,6 +3485,7 @@ CONFIG_INPUT_BBNSM_PWRKEY=m
# CONFIG_INPUT_CM109 is not set
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3553,6 +3580,7 @@ CONFIG_INTERCONNECT_QCOM_BCM_VOTER=y
# CONFIG_INTERCONNECT_QCOM_MSM8909 is not set
CONFIG_INTERCONNECT_QCOM_MSM8916=m
# CONFIG_INTERCONNECT_QCOM_MSM8939 is not set
+CONFIG_INTERCONNECT_QCOM_MSM8953=m
# CONFIG_INTERCONNECT_QCOM_MSM8974 is not set
CONFIG_INTERCONNECT_QCOM_MSM8996=m
CONFIG_INTERCONNECT_QCOM_OSM_L3=m
@@ -3685,6 +3713,7 @@ CONFIG_IPQ_GCC_5018=m
# CONFIG_IPQ_GCC_8074 is not set
# CONFIG_IPQ_GCC_9574 is not set
# CONFIG_IPQ_LCC_806X is not set
+CONFIG_IPQ_NSSCC_QCA8K=m
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_SCTP=m
@@ -3921,6 +3950,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZ4 is not set
@@ -4033,6 +4063,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -4071,6 +4102,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
CONFIG_LEDS_GPIO=m
@@ -4116,6 +4148,7 @@ CONFIG_LEDS_REGULATOR=m
CONFIG_LEDS_SGM3140=m
# CONFIG_LEDS_SPI_BYTE is not set
# CONFIG_LEDS_SUN50I_A100 is not set
+CONFIG_LEDS_SY7802=m
CONFIG_LEDS_SYSCON=y
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -4129,6 +4162,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -4267,6 +4301,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
CONFIG_MARVELL_88X2222_PHY=m
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -4392,6 +4427,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -4432,6 +4468,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
CONFIG_MFD_AC100=m
# CONFIG_MFD_ACT8945A is not set
@@ -4450,6 +4487,8 @@ CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_DEV=m
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -4517,6 +4556,7 @@ CONFIG_MFD_RK8XX_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
CONFIG_MFD_ROHM_BD718XX=y
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4689,6 +4729,7 @@ CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_AM654=m
+CONFIG_MMC_SDHCI_BRCMSTB=m
CONFIG_MMC_SDHCI_CADENCE=m
CONFIG_MMC_SDHCI_ESDHC_IMX=m
CONFIG_MMC_SDHCI_F_SDH30=m
@@ -5068,6 +5109,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -5172,8 +5214,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -5282,6 +5326,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -5610,6 +5655,7 @@ CONFIG_NVMEM=y
CONFIG_NVMEM_ZYNQMP=m
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -5633,6 +5679,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -5837,6 +5884,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5876,6 +5924,7 @@ CONFIG_PHY_CAN_TRANSCEIVER=m
# CONFIG_PHY_DM816X_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+CONFIG_PHY_FSL_IMX8QM_HSIO=m
CONFIG_PHY_FSL_LYNX_28G=m
CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY=m
CONFIG_PHY_HI3660_USB=m
@@ -5986,9 +6035,11 @@ CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QM=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+CONFIG_PINCTRL_IMX91=y
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+CONFIG_PINCTRL_IMX_SCMI=y
# CONFIG_PINCTRL_IPQ4019 is not set
# CONFIG_PINCTRL_IPQ5018 is not set
# CONFIG_PINCTRL_IPQ5332 is not set
@@ -6048,6 +6099,7 @@ CONFIG_PINCTRL_SDM845=m
# CONFIG_PINCTRL_SDX65 is not set
# CONFIG_PINCTRL_SDX75 is not set
CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_SM4250_LPASS_LPI=m
# CONFIG_PINCTRL_SM4450 is not set
CONFIG_PINCTRL_SM6115_LPASS_LPI=m
CONFIG_PINCTRL_SM6115=m
@@ -6157,6 +6209,8 @@ CONFIG_POWER_RESET_VERSATILE=y
CONFIG_POWER_RESET_VEXPRESS=y
CONFIG_POWER_RESET_XGENE=y
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -6261,12 +6315,14 @@ CONFIG_PVPANIC_PCI=m
CONFIG_PVPANIC=y
CONFIG_PWM_APPLE=m
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
CONFIG_PWM_BCM2835=m
CONFIG_PWM_CLK=m
CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -6314,6 +6370,7 @@ CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_COINCELL=m
CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_CPR=m
+CONFIG_QCOM_CPUCP_MBOX=m
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
@@ -6340,6 +6397,7 @@ CONFIG_QCOM_MPM=m
CONFIG_QCOM_OCMEM=m
CONFIG_QCOM_PBS=m
CONFIG_QCOM_PDC=y
+CONFIG_QCOM_PD_MAPPER=m
CONFIG_QCOM_PIL_INFO=m
CONFIG_QCOM_PMIC_GLINK=m
CONFIG_QCOM_PMIC_PDCHARGER_ULOG=m
@@ -6377,6 +6435,8 @@ CONFIG_QCOM_SSC_BLOCK_BUS=y
CONFIG_QCOM_STATS=m
CONFIG_QCOM_SYSMON=m
CONFIG_QCOM_TSENS=m
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
CONFIG_QCOM_WCNSS_CTRL=m
CONFIG_QCOM_WCNSS_PIL=m
CONFIG_QCOM_WDT=m
@@ -6509,6 +6569,7 @@ CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
CONFIG_REGULATOR_ACT8865=m
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_ANATOP=m
@@ -6518,6 +6579,7 @@ CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_AXP20X=m
CONFIG_REGULATOR_BD718XX=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
CONFIG_REGULATOR_CROS_EC=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
@@ -6573,6 +6635,7 @@ CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88090 is not set
CONFIG_REGULATOR_PWM=y
CONFIG_REGULATOR_QCOM_LABIBB=m
+CONFIG_REGULATOR_QCOM_PM8008=m
CONFIG_REGULATOR_QCOM_REFGEN=m
CONFIG_REGULATOR_QCOM_RPMH=y
# CONFIG_REGULATOR_QCOM_RPM is not set
@@ -6596,6 +6659,7 @@ CONFIG_REGULATOR_RTMV20=m
CONFIG_REGULATOR_RTQ2134=m
CONFIG_REGULATOR_RTQ2208=m
CONFIG_REGULATOR_RTQ6752=m
+CONFIG_REGULATOR_RZG2L_VBCTRL=m
# CONFIG_REGULATOR_SLG51000 is not set
# CONFIG_REGULATOR_SUN20I is not set
CONFIG_REGULATOR_SY7636A=m
@@ -6648,6 +6712,7 @@ CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=m
CONFIG_RESET_HISI=y
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=m
# CONFIG_RESET_INTEL_GW is not set
CONFIG_RESET_MESON_AUDIO_ARB=m
CONFIG_RESET_MESON=m
@@ -6666,7 +6731,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -6735,6 +6802,7 @@ CONFIG_RPMSG_TTY=m
CONFIG_RPMSG_VIRTIO=m
CONFIG_RPMSG_WWAN_CTRL=m
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -6887,8 +6955,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -6907,6 +6976,7 @@ CONFIG_RTLLIB=m
CONFIG_RTLWIFI_DEBUG=y
CONFIG_RTLWIFI=m
# CONFIG_RTS5208 is not set
+CONFIG_RTSN=m
CONFIG_RTW88_8723CS=m
CONFIG_RTW88_8723DE=m
CONFIG_RTW88_8723DS=m
@@ -6932,6 +7002,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -7223,6 +7300,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -7338,10 +7416,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -7389,6 +7471,8 @@ CONFIG_SENSORS_SMPRO=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -7566,6 +7650,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -7587,13 +7672,16 @@ CONFIG_SMARTJOYPLUS_FF=y
# CONFIG_SMB_SERVER is not set
CONFIG_SMC91X=m
# CONFIG_SM_CAMCC_6350 is not set
+CONFIG_SM_CAMCC_7150=m
CONFIG_SM_CAMCC_8250=m
# CONFIG_SM_CAMCC_8450 is not set
# CONFIG_SM_CAMCC_8550 is not set
+CONFIG_SM_CAMCC_8650=m
CONFIG_SMC_DIAG=m
# CONFIG_SMC_LO is not set
CONFIG_SMC=m
CONFIG_SM_DISPCC_6115=m
+CONFIG_SM_DISPCC_7150=m
CONFIG_SM_DISPCC_8250=m
CONFIG_SM_DISPCC_8450=m
# CONFIG_SM_DISPCC_8550 is not set
@@ -7604,7 +7692,7 @@ CONFIG_SM_GCC_6115=m
# CONFIG_SM_GCC_6125 is not set
# CONFIG_SM_GCC_6350 is not set
# CONFIG_SM_GCC_6375 is not set
-# CONFIG_SM_GCC_7150 is not set
+CONFIG_SM_GCC_7150=m
CONFIG_SM_GCC_8150=y
CONFIG_SM_GCC_8250=m
CONFIG_SM_GCC_8350=m
@@ -7635,6 +7723,7 @@ CONFIG_SMS_SIANO_RC=y
CONFIG_SMS_USB_DRV=m
# CONFIG_SM_TCSRCC_8550 is not set
CONFIG_SM_TCSRCC_8650=m
+CONFIG_SM_VIDEOCC_7150=m
# CONFIG_SM_VIDEOCC_8150 is not set
CONFIG_SM_VIDEOCC_8250=m
CONFIG_SM_VIDEOCC_8350=m
@@ -7718,6 +7807,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -7837,6 +7927,7 @@ CONFIG_SND_SOC_ADI=m
CONFIG_SND_SOC_AK4458=m
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -7883,6 +7974,7 @@ CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SDW=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
CONFIG_SND_SOC_CS4265=m
# CONFIG_SND_SOC_CS4270 is not set
@@ -7901,6 +7993,7 @@ CONFIG_SND_SOC_CS42XX8_I2C=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -7909,6 +8002,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8328_I2C=m
@@ -8092,6 +8186,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5659=m
@@ -8247,6 +8342,7 @@ CONFIG_SND_SOC_TSCS42XX=m
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
CONFIG_SND_SOC_WCD9335=m
CONFIG_SND_SOC_WCD934X=m
+CONFIG_SND_SOC_WCD937X_SDW=m
CONFIG_SND_SOC_WCD938X_SDW=m
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -8382,6 +8478,7 @@ CONFIG_SPI_BITBANG=m
CONFIG_SPI_CADENCE=m
CONFIG_SPI_CADENCE_QUADSPI=m
CONFIG_SPI_CADENCE_XSPI=m
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_DESIGNWARE=m
@@ -8707,6 +8804,7 @@ CONFIG_TEGRA_SOCTHERM=m
CONFIG_TEGRA_VDE=m
CONFIG_TEGRA_WATCHDOG=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -8792,6 +8890,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -8810,6 +8909,7 @@ CONFIG_TI_DAC7311=m
# CONFIG_TI_DAC7612 is not set
CONFIG_TI_DAVINCI_MDIO=m
CONFIG_TI_ECAP_CAPTURE=m
+CONFIG_TI_EQEP=m
CONFIG_TIFM_7XX1=m
CONFIG_TIFM_CORE=m
CONFIG_TIGON3_HWMON=y
@@ -9073,6 +9173,7 @@ CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_UCLAMP_TASK=y
CONFIG_UCSI_ACPI=m
CONFIG_UCSI_CCG=m
+CONFIG_UCSI_LENOVO_YOGA_C630=m
CONFIG_UCSI_PMIC_GLINK=m
CONFIG_UCSI_STM32G0=m
CONFIG_UDF_FS=m
@@ -9529,6 +9630,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -9555,6 +9657,7 @@ CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VDSO=y
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
CONFIG_VEML6070=m
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -9654,6 +9757,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -9663,6 +9767,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -9685,6 +9791,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -9712,6 +9819,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
CONFIG_VIDEO_MAX96712=m
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
CONFIG_VIDEO_MESON_GE2D=m
CONFIG_VIDEO_MESON_VDEC=m
@@ -9769,6 +9878,7 @@ CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
# CONFIG_VIDEO_RCAR_CSI2 is not set
# CONFIG_VIDEO_RCAR_ISP is not set
# CONFIG_VIDEO_RCAR_VIN is not set
@@ -9859,6 +9969,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -10166,7 +10277,6 @@ CONFIG_ZYNQMP_POWER=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-debug-rhel.config b/SOURCES/kernel-aarch64-debug-rhel.config
index 7dba0fe..8fa9205 100644
--- a/SOURCES/kernel-aarch64-debug-rhel.config
+++ b/SOURCES/kernel-aarch64-debug-rhel.config
@@ -105,6 +105,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -399,7 +400,10 @@ CONFIG_ARM_MHU=m
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PMU=y
# CONFIG_ARM_PSCI_CHECKER is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_PSCI=y
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
CONFIG_ARM_SBSA_WATCHDOG=m
CONFIG_ARM_SCMI_CPUFREQ=m
@@ -514,6 +518,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -527,6 +532,7 @@ CONFIG_BACKLIGHT_GPIO=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -551,6 +557,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -626,6 +633,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -1036,6 +1044,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1209,7 +1218,7 @@ CONFIG_CRYPTO_DEV_SA2UL=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
+CONFIG_CRYPTO_DEV_TEGRA=m
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1321,6 +1330,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1438,6 +1448,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1453,7 +1464,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
# CONFIG_DLM_DEPRECATED_API is not set
# CONFIG_DLM is not set
@@ -1514,6 +1525,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1529,7 +1541,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
CONFIG_DPAA2_CONSOLE=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
@@ -1546,6 +1558,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1585,6 +1598,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1634,11 +1648,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1654,6 +1670,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1890,6 +1907,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_BLUEFIELD=m
CONFIG_EDAC_DEBUG=y
@@ -1935,10 +1953,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_EPIC100 is not set
CONFIG_EPOLL=y
@@ -1946,10 +1967,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -2042,6 +2067,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2103,11 +2129,10 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_BMAN_TEST is not set
CONFIG_FSL_DPAA2_ETH_DCB=y
@@ -2284,6 +2309,7 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA186=y
@@ -2293,6 +2319,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_WATCHDOG=m
# CONFIG_GPIO_WINBOND is not set
@@ -2659,12 +2686,12 @@ CONFIG_I3C=m
# CONFIG_I40E_DCB is not set
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_ICE_HWMON=y
@@ -2677,6 +2704,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2874,6 +2902,7 @@ CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_PWM_BEEPER is not set
# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -2906,6 +2935,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -3204,6 +3234,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x1
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3225,8 +3256,8 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_CYPRESS_SF is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_IMX is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -3285,14 +3316,9 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
CONFIG_KVM_PROVE_MMU=y
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM=y
@@ -3303,6 +3329,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3361,6 +3390,7 @@ CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_NIC78BX is not set
+CONFIG_LEDS_PCA9532_GPIO=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
@@ -3371,6 +3401,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3384,6 +3415,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3436,7 +3468,7 @@ CONFIG_LOCKD=m
CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
CONFIG_LOCKD_V4=y
CONFIG_LOCK_EVENT_COUNTS=y
-# CONFIG_LOCK_STAT is not set
+CONFIG_LOCK_STAT=y
CONFIG_LOCK_TORTURE_TEST=m
CONFIG_LOCKUP_DETECTOR=y
CONFIG_LOG_BUF_SHIFT=20
@@ -3516,6 +3548,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -3612,9 +3645,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3624,6 +3654,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3649,6 +3680,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3662,6 +3694,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3724,6 +3758,7 @@ CONFIG_MFD_MAX77620=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4232,8 +4267,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4243,8 +4280,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4330,8 +4366,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4622,6 +4659,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4640,6 +4678,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -4812,6 +4851,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4854,6 +4894,7 @@ CONFIG_PHY_BRCM_SATA=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4910,9 +4951,11 @@ CONFIG_PINCTRL_IMX8MP=y
CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+# CONFIG_PINCTRL_IMX91 is not set
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
CONFIG_PINCTRL_IPROC_GPIO=y
@@ -4997,6 +5040,8 @@ CONFIG_POWER_RESET_SYSCON=y
# CONFIG_POWER_RESET_VEXPRESS is not set
# CONFIG_POWER_RESET_XGENE is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5100,6 +5145,7 @@ CONFIG_PWM_BCM_IPROC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -5116,14 +5162,15 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_BAM_DMA is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
CONFIG_QCOM_EMAC=m
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
@@ -5144,6 +5191,7 @@ CONFIG_QCOM_L3_PMU=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_QSEECOM is not set
@@ -5158,6 +5206,8 @@ CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SPM is not set
# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
# CONFIG_QCOM_WDT is not set
CONFIG_QEDE=m
CONFIG_QED_FCOE=y
@@ -5204,6 +5254,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5262,7 +5313,7 @@ CONFIG_REGMAP=y
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
-# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_ARM_SCMI=m
# CONFIG_REGULATOR_AW37503 is not set
CONFIG_REGULATOR_BD718XX=m
# CONFIG_REGULATOR_DA9121 is not set
@@ -5301,13 +5352,13 @@ CONFIG_REGULATOR_MAX77686=m
# CONFIG_REGULATOR_MPQ7920 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
-# CONFIG_REGULATOR_PCA9450 is not set
-# CONFIG_REGULATOR_PF8X00 is not set
+CONFIG_REGULATOR_PCA9450=m
+CONFIG_REGULATOR_PF8X00=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
-# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_REFGEN is not set
# CONFIG_REGULATOR_RAA215300 is not set
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
@@ -5352,6 +5403,7 @@ CONFIG_RENESAS_PHY=m
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_AOSS is not set
# CONFIG_RESET_QCOM_PDC is not set
@@ -5366,7 +5418,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5404,6 +5456,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5464,7 +5517,7 @@ CONFIG_RTC_DRV_FSL_FTM_ALARM=m
# CONFIG_RTC_DRV_FTRTC010 is not set
# CONFIG_RTC_DRV_GOLDFISH is not set
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_HYM8563=m
# CONFIG_RTC_DRV_IMXDI is not set
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_ISL12026 is not set
@@ -5500,10 +5553,10 @@ CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RS5C372=m
-# CONFIG_RTC_DRV_RV3028 is not set
+CONFIG_RTC_DRV_RV3028=m
CONFIG_RTC_DRV_RV3029C2=m
# CONFIG_RTC_DRV_RV3029_HWMON is not set
-# CONFIG_RTC_DRV_RV3032 is not set
+CONFIG_RTC_DRV_RV3032=m
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_RX6110 is not set
@@ -5515,7 +5568,7 @@ CONFIG_RTC_DRV_RX8581=m
# CONFIG_RTC_DRV_SD3078 is not set
# CONFIG_RTC_DRV_SNVS is not set
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_TEGRA is not set
+CONFIG_RTC_DRV_TEGRA=m
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_TI_K3=m
CONFIG_RTC_DRV_V3020=m
@@ -5539,6 +5592,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5578,6 +5632,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5929,9 +5990,13 @@ CONFIG_SENSORS_MAX31790=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5977,6 +6042,7 @@ CONFIG_SENSORS_SMPRO=m
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -6123,6 +6189,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6228,6 +6295,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6332,6 +6400,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6394,6 +6463,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6402,6 +6472,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6574,6 +6645,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6710,6 +6782,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6832,6 +6905,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+# CONFIG_SPI_CH341 is not set
CONFIG_SPI_DEBUG=y
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_DSPI=y
@@ -7145,6 +7219,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7201,7 +7276,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7683,6 +7758,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7694,6 +7770,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7704,6 +7781,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7800,6 +7878,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7815,6 +7895,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7834,6 +7915,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7950,6 +8033,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8126,7 +8210,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8183,7 +8267,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-fedora.config b/SOURCES/kernel-aarch64-fedora.config
index 3c67f6a..8062fcd 100644
--- a/SOURCES/kernel-aarch64-fedora.config
+++ b/SOURCES/kernel-aarch64-fedora.config
@@ -125,6 +125,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -198,7 +199,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
# CONFIG_AFFS_FS is not set
@@ -673,6 +674,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_AXI_DMAC=m
CONFIG_AXP20X_ADC=m
CONFIG_AXP20X_POWER=m
@@ -716,6 +718,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
CONFIG_BACKLIGHT_LM3630A=m
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -752,8 +755,10 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_DS2782 is not set
CONFIG_BATTERY_GAUGE_LTC2941=m
# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_BATTERY_LENOVO_YOGA_C630=m
CONFIG_BATTERY_MAX17040=m
CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_PM8916_BMS_VM is not set
CONFIG_BATTERY_QCOM_BATTMGR=m
@@ -806,6 +811,7 @@ CONFIG_BCM_SBA_RAID=m
CONFIG_BCM_VIDEOCORE=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -861,6 +867,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SX8 is not set
@@ -1174,6 +1181,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
CONFIG_CHARGER_BQ25980=m
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
CONFIG_CHARGER_CROS_USBPD=m
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1254,6 +1262,7 @@ CONFIG_CLK_IMX95_BLK_CTL=m
CONFIG_CLK_KUNIT_TEST=m
CONFIG_CLK_LS1028A_PLLDIG=y
CONFIG_CLK_PX30=y
+CONFIG_CLK_QCM2290_GPUCC=m
CONFIG_CLK_QORIQ=y
CONFIG_CLK_RASPBERRYPI=y
# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set
@@ -1319,6 +1328,8 @@ CONFIG_COMMON_CLK_AXG_AUDIO=y
CONFIG_COMMON_CLK_AXG=y
CONFIG_COMMON_CLK_AXI_CLKGEN=m
CONFIG_COMMON_CLK_BD718XX=m
+CONFIG_COMMON_CLK_C3_PERIPHERALS=y
+CONFIG_COMMON_CLK_C3_PLL=y
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
@@ -1373,6 +1384,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_VDSO is not set
CONFIG_COMPAT=y
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1713,6 +1725,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1913,6 +1926,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1947,6 +1961,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -2071,11 +2086,13 @@ CONFIG_DRM_PANEL_EDP=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
CONFIG_DRM_PANEL_HIMAX_HX8394=m
CONFIG_DRM_PANEL_ILITEK_IL9322=m
CONFIG_DRM_PANEL_ILITEK_ILI9341=m
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -2091,6 +2108,7 @@ CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
CONFIG_DRM_PANEL_LG_LG4573=m
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -2372,6 +2390,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
CONFIG_EC_ACER_ASPIRE1=m
CONFIG_ECHO=m
+CONFIG_EC_LENOVO_YOGA_C630=m
CONFIG_ECRYPT_FS=m
# CONFIG_ECRYPT_FS_MESSAGING is not set
CONFIG_EDAC_BLUEFIELD=m
@@ -2426,6 +2445,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2580,7 +2600,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2626,7 +2648,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2761,6 +2782,7 @@ CONFIG_GPIO_AGGREGATOR=m
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_BCM_XGS_IPROC is not set
CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_BRCMSTB=m
CONFIG_GPIO_BT8XX=m
CONFIG_GPIO_CADENCE=m
CONFIG_GPIO_CDEV_V1=y
@@ -2817,6 +2839,7 @@ CONFIG_GPIO_ROCKCHIP=y
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
CONFIG_GPIO_STMPE=y
CONFIG_GPIO_SYSCON=m
# CONFIG_GPIO_SYSFS is not set
@@ -2831,6 +2854,7 @@ CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_VF610=y
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
CONFIG_GPIO_WATCHDOG=m
CONFIG_GPIO_WCD934X=m
# CONFIG_GPIO_WINBOND is not set
@@ -3250,6 +3274,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -3430,6 +3455,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -3442,6 +3468,7 @@ CONFIG_INPUT_BBNSM_PWRKEY=m
# CONFIG_INPUT_CM109 is not set
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3536,6 +3563,7 @@ CONFIG_INTERCONNECT_QCOM_BCM_VOTER=y
# CONFIG_INTERCONNECT_QCOM_MSM8909 is not set
CONFIG_INTERCONNECT_QCOM_MSM8916=m
# CONFIG_INTERCONNECT_QCOM_MSM8939 is not set
+CONFIG_INTERCONNECT_QCOM_MSM8953=m
# CONFIG_INTERCONNECT_QCOM_MSM8974 is not set
CONFIG_INTERCONNECT_QCOM_MSM8996=m
CONFIG_INTERCONNECT_QCOM_OSM_L3=m
@@ -3668,6 +3696,7 @@ CONFIG_IPQ_GCC_5018=m
# CONFIG_IPQ_GCC_8074 is not set
# CONFIG_IPQ_GCC_9574 is not set
# CONFIG_IPQ_LCC_806X is not set
+CONFIG_IPQ_NSSCC_QCA8K=m
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_SCTP=m
@@ -3897,6 +3926,7 @@ CONFIG_KALLSYMS=y
# CONFIG_KCOV is not set
# CONFIG_KCSAN is not set
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZ4 is not set
@@ -4009,6 +4039,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -4047,6 +4078,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
CONFIG_LEDS_GPIO=m
@@ -4092,6 +4124,7 @@ CONFIG_LEDS_REGULATOR=m
CONFIG_LEDS_SGM3140=m
# CONFIG_LEDS_SPI_BYTE is not set
# CONFIG_LEDS_SUN50I_A100 is not set
+CONFIG_LEDS_SY7802=m
CONFIG_LEDS_SYSCON=y
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -4105,6 +4138,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -4243,6 +4277,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
CONFIG_MARVELL_88X2222_PHY=m
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -4367,6 +4402,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -4407,6 +4443,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
CONFIG_MFD_AC100=m
# CONFIG_MFD_ACT8945A is not set
@@ -4425,6 +4462,8 @@ CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_DEV=m
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -4492,6 +4531,7 @@ CONFIG_MFD_RK8XX_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
CONFIG_MFD_ROHM_BD718XX=y
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4664,6 +4704,7 @@ CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_AM654=m
+CONFIG_MMC_SDHCI_BRCMSTB=m
CONFIG_MMC_SDHCI_CADENCE=m
CONFIG_MMC_SDHCI_ESDHC_IMX=m
CONFIG_MMC_SDHCI_F_SDH30=m
@@ -5042,6 +5083,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -5146,8 +5188,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -5256,6 +5300,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -5584,6 +5629,7 @@ CONFIG_NVMEM=y
CONFIG_NVMEM_ZYNQMP=m
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -5607,6 +5653,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -5810,6 +5857,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5849,6 +5897,7 @@ CONFIG_PHY_CAN_TRANSCEIVER=m
# CONFIG_PHY_DM816X_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+CONFIG_PHY_FSL_IMX8QM_HSIO=m
CONFIG_PHY_FSL_LYNX_28G=m
CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY=m
CONFIG_PHY_HI3660_USB=m
@@ -5959,9 +6008,11 @@ CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QM=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+CONFIG_PINCTRL_IMX91=y
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+CONFIG_PINCTRL_IMX_SCMI=y
# CONFIG_PINCTRL_IPQ4019 is not set
# CONFIG_PINCTRL_IPQ5018 is not set
# CONFIG_PINCTRL_IPQ5332 is not set
@@ -6021,6 +6072,7 @@ CONFIG_PINCTRL_SDM845=m
# CONFIG_PINCTRL_SDX65 is not set
# CONFIG_PINCTRL_SDX75 is not set
CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_SM4250_LPASS_LPI=m
# CONFIG_PINCTRL_SM4450 is not set
CONFIG_PINCTRL_SM6115_LPASS_LPI=m
CONFIG_PINCTRL_SM6115=m
@@ -6130,6 +6182,8 @@ CONFIG_POWER_RESET_VERSATILE=y
CONFIG_POWER_RESET_VEXPRESS=y
CONFIG_POWER_RESET_XGENE=y
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -6234,12 +6288,14 @@ CONFIG_PVPANIC_PCI=m
CONFIG_PVPANIC=y
CONFIG_PWM_APPLE=m
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
CONFIG_PWM_BCM2835=m
CONFIG_PWM_CLK=m
CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -6287,6 +6343,7 @@ CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_COINCELL=m
CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_CPR=m
+CONFIG_QCOM_CPUCP_MBOX=m
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
@@ -6313,6 +6370,7 @@ CONFIG_QCOM_MPM=m
CONFIG_QCOM_OCMEM=m
CONFIG_QCOM_PBS=m
CONFIG_QCOM_PDC=y
+CONFIG_QCOM_PD_MAPPER=m
CONFIG_QCOM_PIL_INFO=m
CONFIG_QCOM_PMIC_GLINK=m
CONFIG_QCOM_PMIC_PDCHARGER_ULOG=m
@@ -6350,6 +6408,8 @@ CONFIG_QCOM_SSC_BLOCK_BUS=y
CONFIG_QCOM_STATS=m
CONFIG_QCOM_SYSMON=m
CONFIG_QCOM_TSENS=m
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
CONFIG_QCOM_WCNSS_CTRL=m
CONFIG_QCOM_WCNSS_PIL=m
CONFIG_QCOM_WDT=m
@@ -6482,6 +6542,7 @@ CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
CONFIG_REGULATOR_ACT8865=m
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_ANATOP=m
@@ -6491,6 +6552,7 @@ CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_AXP20X=m
CONFIG_REGULATOR_BD718XX=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
CONFIG_REGULATOR_CROS_EC=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
@@ -6546,6 +6608,7 @@ CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88090 is not set
CONFIG_REGULATOR_PWM=y
CONFIG_REGULATOR_QCOM_LABIBB=m
+CONFIG_REGULATOR_QCOM_PM8008=m
CONFIG_REGULATOR_QCOM_REFGEN=m
CONFIG_REGULATOR_QCOM_RPMH=y
# CONFIG_REGULATOR_QCOM_RPM is not set
@@ -6569,6 +6632,7 @@ CONFIG_REGULATOR_RTMV20=m
CONFIG_REGULATOR_RTQ2134=m
CONFIG_REGULATOR_RTQ2208=m
CONFIG_REGULATOR_RTQ6752=m
+CONFIG_REGULATOR_RZG2L_VBCTRL=m
# CONFIG_REGULATOR_SLG51000 is not set
# CONFIG_REGULATOR_SUN20I is not set
CONFIG_REGULATOR_SY7636A=m
@@ -6621,6 +6685,7 @@ CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=m
CONFIG_RESET_HISI=y
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=m
# CONFIG_RESET_INTEL_GW is not set
CONFIG_RESET_MESON_AUDIO_ARB=m
CONFIG_RESET_MESON=m
@@ -6639,7 +6704,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -6708,6 +6775,7 @@ CONFIG_RPMSG_TTY=m
CONFIG_RPMSG_VIRTIO=m
CONFIG_RPMSG_WWAN_CTRL=m
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -6860,8 +6928,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -6880,6 +6949,7 @@ CONFIG_RTLLIB=m
# CONFIG_RTLWIFI_DEBUG is not set
CONFIG_RTLWIFI=m
# CONFIG_RTS5208 is not set
+CONFIG_RTSN=m
CONFIG_RTW88_8723CS=m
CONFIG_RTW88_8723DE=m
CONFIG_RTW88_8723DS=m
@@ -6905,6 +6975,13 @@ CONFIG_RTW89_8922AE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -7196,6 +7273,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -7311,10 +7389,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -7362,6 +7444,8 @@ CONFIG_SENSORS_SMPRO=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -7539,6 +7623,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -7560,13 +7645,16 @@ CONFIG_SMARTJOYPLUS_FF=y
# CONFIG_SMB_SERVER is not set
CONFIG_SMC91X=m
# CONFIG_SM_CAMCC_6350 is not set
+CONFIG_SM_CAMCC_7150=m
CONFIG_SM_CAMCC_8250=m
# CONFIG_SM_CAMCC_8450 is not set
# CONFIG_SM_CAMCC_8550 is not set
+CONFIG_SM_CAMCC_8650=m
CONFIG_SMC_DIAG=m
# CONFIG_SMC_LO is not set
CONFIG_SMC=m
CONFIG_SM_DISPCC_6115=m
+CONFIG_SM_DISPCC_7150=m
CONFIG_SM_DISPCC_8250=m
CONFIG_SM_DISPCC_8450=m
# CONFIG_SM_DISPCC_8550 is not set
@@ -7577,7 +7665,7 @@ CONFIG_SM_GCC_6115=m
# CONFIG_SM_GCC_6125 is not set
# CONFIG_SM_GCC_6350 is not set
# CONFIG_SM_GCC_6375 is not set
-# CONFIG_SM_GCC_7150 is not set
+CONFIG_SM_GCC_7150=m
CONFIG_SM_GCC_8150=y
CONFIG_SM_GCC_8250=m
CONFIG_SM_GCC_8350=m
@@ -7608,6 +7696,7 @@ CONFIG_SMS_SIANO_RC=y
CONFIG_SMS_USB_DRV=m
# CONFIG_SM_TCSRCC_8550 is not set
CONFIG_SM_TCSRCC_8650=m
+CONFIG_SM_VIDEOCC_7150=m
# CONFIG_SM_VIDEOCC_8150 is not set
CONFIG_SM_VIDEOCC_8250=m
CONFIG_SM_VIDEOCC_8350=m
@@ -7691,6 +7780,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -7809,6 +7899,7 @@ CONFIG_SND_SOC_ADI=m
CONFIG_SND_SOC_AK4458=m
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -7855,6 +7946,7 @@ CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SDW=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
CONFIG_SND_SOC_CS4265=m
# CONFIG_SND_SOC_CS4270 is not set
@@ -7873,6 +7965,7 @@ CONFIG_SND_SOC_CS42XX8_I2C=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -7881,6 +7974,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8328_I2C=m
@@ -8064,6 +8158,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5659=m
@@ -8218,6 +8313,7 @@ CONFIG_SND_SOC_TSCS42XX=m
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
CONFIG_SND_SOC_WCD9335=m
CONFIG_SND_SOC_WCD934X=m
+CONFIG_SND_SOC_WCD937X_SDW=m
CONFIG_SND_SOC_WCD938X_SDW=m
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -8353,6 +8449,7 @@ CONFIG_SPI_BITBANG=m
CONFIG_SPI_CADENCE=m
CONFIG_SPI_CADENCE_QUADSPI=m
CONFIG_SPI_CADENCE_XSPI=m
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_DESIGNWARE=m
@@ -8678,6 +8775,7 @@ CONFIG_TEGRA_SOCTHERM=m
CONFIG_TEGRA_VDE=m
CONFIG_TEGRA_WATCHDOG=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -8763,6 +8861,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -8781,6 +8880,7 @@ CONFIG_TI_DAC7311=m
# CONFIG_TI_DAC7612 is not set
CONFIG_TI_DAVINCI_MDIO=m
CONFIG_TI_ECAP_CAPTURE=m
+CONFIG_TI_EQEP=m
CONFIG_TIFM_7XX1=m
CONFIG_TIFM_CORE=m
CONFIG_TIGON3_HWMON=y
@@ -9044,6 +9144,7 @@ CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_UCLAMP_TASK=y
CONFIG_UCSI_ACPI=m
CONFIG_UCSI_CCG=m
+CONFIG_UCSI_LENOVO_YOGA_C630=m
CONFIG_UCSI_PMIC_GLINK=m
CONFIG_UCSI_STM32G0=m
CONFIG_UDF_FS=m
@@ -9500,6 +9601,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -9526,6 +9628,7 @@ CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VDSO=y
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
CONFIG_VEML6070=m
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -9625,6 +9728,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -9634,6 +9738,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -9656,6 +9762,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -9683,6 +9790,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
CONFIG_VIDEO_MAX96712=m
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
CONFIG_VIDEO_MESON_GE2D=m
CONFIG_VIDEO_MESON_VDEC=m
@@ -9740,6 +9849,7 @@ CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
# CONFIG_VIDEO_RCAR_CSI2 is not set
# CONFIG_VIDEO_RCAR_ISP is not set
# CONFIG_VIDEO_RCAR_VIN is not set
@@ -9830,6 +9940,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -10137,7 +10248,6 @@ CONFIG_ZYNQMP_POWER=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-rhel.config b/SOURCES/kernel-aarch64-rhel.config
index 4450f4a..cf241fc 100644
--- a/SOURCES/kernel-aarch64-rhel.config
+++ b/SOURCES/kernel-aarch64-rhel.config
@@ -105,6 +105,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -399,7 +400,10 @@ CONFIG_ARM_MHU=m
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PMU=y
# CONFIG_ARM_PSCI_CHECKER is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_PSCI=y
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
CONFIG_ARM_SBSA_WATCHDOG=m
CONFIG_ARM_SCMI_CPUFREQ=m
@@ -514,6 +518,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -527,6 +532,7 @@ CONFIG_BACKLIGHT_GPIO=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -551,6 +557,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -626,6 +633,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -1036,6 +1044,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1209,7 +1218,7 @@ CONFIG_CRYPTO_DEV_SA2UL=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
+CONFIG_CRYPTO_DEV_TEGRA=m
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1321,6 +1330,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1430,6 +1440,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1445,7 +1456,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
# CONFIG_DLM_DEPRECATED_API is not set
# CONFIG_DLM is not set
@@ -1506,6 +1517,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1521,7 +1533,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
CONFIG_DPAA2_CONSOLE=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
@@ -1538,6 +1550,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1577,6 +1590,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1626,11 +1640,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1646,6 +1662,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1882,6 +1899,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_BLUEFIELD=m
# CONFIG_EDAC_DEBUG is not set
@@ -1927,10 +1945,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_EPIC100 is not set
CONFIG_EPOLL=y
@@ -1938,10 +1959,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -2026,6 +2051,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2087,11 +2113,10 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_BMAN_TEST is not set
CONFIG_FSL_DPAA2_ETH_DCB=y
@@ -2268,6 +2293,7 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA186=y
@@ -2277,6 +2303,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_WATCHDOG=m
# CONFIG_GPIO_WINBOND is not set
@@ -2643,12 +2670,12 @@ CONFIG_I3C=m
# CONFIG_I40E_DCB is not set
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_ICE_HWMON=y
@@ -2661,6 +2688,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2858,6 +2886,7 @@ CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_PWM_BEEPER is not set
# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -2890,6 +2919,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -3183,6 +3213,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3204,8 +3235,8 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_CYPRESS_SF is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_IMX is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -3264,14 +3295,9 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# CONFIG_KVM_PROVE_MMU is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM=y
@@ -3282,6 +3308,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3340,6 +3369,7 @@ CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_NIC78BX is not set
+CONFIG_LEDS_PCA9532_GPIO=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
@@ -3350,6 +3380,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3363,6 +3394,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3495,6 +3527,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -3591,9 +3624,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3603,6 +3633,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3628,6 +3659,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3641,6 +3673,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3703,6 +3737,7 @@ CONFIG_MFD_MAX77620=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4211,8 +4246,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4222,8 +4259,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4309,8 +4345,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4601,6 +4638,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4619,6 +4657,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -4789,6 +4828,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4831,6 +4871,7 @@ CONFIG_PHY_BRCM_SATA=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4887,9 +4928,11 @@ CONFIG_PINCTRL_IMX8MP=y
CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+# CONFIG_PINCTRL_IMX91 is not set
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
CONFIG_PINCTRL_IPROC_GPIO=y
@@ -4974,6 +5017,8 @@ CONFIG_POWER_RESET_SYSCON=y
# CONFIG_POWER_RESET_VEXPRESS is not set
# CONFIG_POWER_RESET_XGENE is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5077,6 +5122,7 @@ CONFIG_PWM_BCM_IPROC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -5093,14 +5139,15 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_BAM_DMA is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
CONFIG_QCOM_EMAC=m
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
@@ -5121,6 +5168,7 @@ CONFIG_QCOM_L3_PMU=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_QSEECOM is not set
@@ -5135,6 +5183,8 @@ CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SPM is not set
# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
# CONFIG_QCOM_WDT is not set
CONFIG_QEDE=m
CONFIG_QED_FCOE=y
@@ -5181,6 +5231,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5239,7 +5290,7 @@ CONFIG_REGMAP=y
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
-# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_ARM_SCMI=m
# CONFIG_REGULATOR_AW37503 is not set
CONFIG_REGULATOR_BD718XX=m
# CONFIG_REGULATOR_DA9121 is not set
@@ -5278,13 +5329,13 @@ CONFIG_REGULATOR_MAX77686=m
# CONFIG_REGULATOR_MPQ7920 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
-# CONFIG_REGULATOR_PCA9450 is not set
-# CONFIG_REGULATOR_PF8X00 is not set
+CONFIG_REGULATOR_PCA9450=m
+CONFIG_REGULATOR_PF8X00=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
-# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_REFGEN is not set
# CONFIG_REGULATOR_RAA215300 is not set
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
@@ -5329,6 +5380,7 @@ CONFIG_RENESAS_PHY=m
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_AOSS is not set
# CONFIG_RESET_QCOM_PDC is not set
@@ -5343,7 +5395,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5381,6 +5433,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5441,7 +5494,7 @@ CONFIG_RTC_DRV_FSL_FTM_ALARM=m
# CONFIG_RTC_DRV_FTRTC010 is not set
# CONFIG_RTC_DRV_GOLDFISH is not set
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_HYM8563=m
# CONFIG_RTC_DRV_IMXDI is not set
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_ISL12026 is not set
@@ -5477,10 +5530,10 @@ CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RS5C372=m
-# CONFIG_RTC_DRV_RV3028 is not set
+CONFIG_RTC_DRV_RV3028=m
CONFIG_RTC_DRV_RV3029C2=m
# CONFIG_RTC_DRV_RV3029_HWMON is not set
-# CONFIG_RTC_DRV_RV3032 is not set
+CONFIG_RTC_DRV_RV3032=m
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_RX6110 is not set
@@ -5492,7 +5545,7 @@ CONFIG_RTC_DRV_RX8581=m
# CONFIG_RTC_DRV_SD3078 is not set
# CONFIG_RTC_DRV_SNVS is not set
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_TEGRA is not set
+CONFIG_RTC_DRV_TEGRA=m
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_TI_K3=m
CONFIG_RTC_DRV_V3020=m
@@ -5516,6 +5569,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5555,6 +5609,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5906,9 +5967,13 @@ CONFIG_SENSORS_MAX31790=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5954,6 +6019,7 @@ CONFIG_SENSORS_SMPRO=m
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -6100,6 +6166,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6205,6 +6272,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6308,6 +6376,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6370,6 +6439,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6378,6 +6448,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6550,6 +6621,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6685,6 +6757,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6807,6 +6880,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_DSPI=y
@@ -7120,6 +7194,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7176,7 +7251,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7658,6 +7733,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7669,6 +7745,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7679,6 +7756,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7775,6 +7853,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7790,6 +7870,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7809,6 +7890,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7925,6 +8008,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8101,7 +8185,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8158,7 +8242,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-rt-debug-rhel.config b/SOURCES/kernel-aarch64-rt-debug-rhel.config
index 673311a..fdcbdbe 100644
--- a/SOURCES/kernel-aarch64-rt-debug-rhel.config
+++ b/SOURCES/kernel-aarch64-rt-debug-rhel.config
@@ -105,6 +105,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -399,7 +400,10 @@ CONFIG_ARM_MHU=m
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PMU=y
# CONFIG_ARM_PSCI_CHECKER is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_PSCI=y
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
CONFIG_ARM_SBSA_WATCHDOG=m
CONFIG_ARM_SCMI_CPUFREQ=m
@@ -514,6 +518,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -527,6 +532,7 @@ CONFIG_BACKLIGHT_GPIO=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -551,6 +557,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -626,6 +633,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -1036,6 +1044,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1210,7 +1219,7 @@ CONFIG_CRYPTO_DEV_SA2UL=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
+CONFIG_CRYPTO_DEV_TEGRA=m
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1322,6 +1331,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1440,6 +1450,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1455,7 +1466,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
# CONFIG_DLM_DEPRECATED_API is not set
# CONFIG_DLM is not set
@@ -1516,6 +1527,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1531,7 +1543,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
CONFIG_DPAA2_CONSOLE=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
@@ -1548,6 +1560,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1587,6 +1600,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1636,11 +1650,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1656,6 +1672,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1928,6 +1945,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_BLUEFIELD=m
CONFIG_EDAC_DEBUG=y
@@ -1973,10 +1991,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_EPIC100 is not set
CONFIG_EPOLL=y
@@ -1984,10 +2005,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -2080,6 +2105,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2141,11 +2167,10 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_BMAN_TEST is not set
CONFIG_FSL_DPAA2_ETH_DCB=y
@@ -2323,6 +2348,7 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA186=y
@@ -2332,6 +2358,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_WATCHDOG=m
# CONFIG_GPIO_WINBOND is not set
@@ -2699,12 +2726,12 @@ CONFIG_I3C=m
# CONFIG_I40E_DCB is not set
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_ICE_HWMON=y
@@ -2717,6 +2744,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2914,6 +2942,7 @@ CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_PWM_BEEPER is not set
# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -2946,6 +2975,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -3244,6 +3274,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x1
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3265,8 +3296,8 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_CYPRESS_SF is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_IMX is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -3325,14 +3356,9 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
CONFIG_KVM_PROVE_MMU=y
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM=y
@@ -3343,6 +3369,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3401,6 +3430,7 @@ CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_NIC78BX is not set
+CONFIG_LEDS_PCA9532_GPIO=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
@@ -3411,6 +3441,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3424,6 +3455,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3464,7 +3496,7 @@ CONFIG_LLC=m
CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_LOCKDEP_BITS=16
+CONFIG_LOCKDEP_BITS=17
CONFIG_LOCKDEP_CHAINS_BITS=18
CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12
CONFIG_LOCKDEP_STACK_TRACE_BITS=19
@@ -3476,7 +3508,7 @@ CONFIG_LOCKD=m
CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
CONFIG_LOCKD_V4=y
CONFIG_LOCK_EVENT_COUNTS=y
-# CONFIG_LOCK_STAT is not set
+CONFIG_LOCK_STAT=y
CONFIG_LOCK_TORTURE_TEST=m
CONFIG_LOCKUP_DETECTOR=y
CONFIG_LOG_BUF_SHIFT=20
@@ -3556,6 +3588,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -3652,14 +3685,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-# CONFIG_MEDIA_TUNER_MAX2165 is not set
-# CONFIG_MEDIA_TUNER_MSI001 is not set
-# CONFIG_MEDIA_TUNER_MT2266 is not set
-# CONFIG_MEDIA_TUNER_MXL301RF is not set
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
-# CONFIG_MEDIA_TUNER_TDA18250 is not set
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3669,6 +3694,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3694,6 +3720,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3707,6 +3734,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3769,6 +3798,7 @@ CONFIG_MFD_MAX77620=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4277,8 +4307,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4288,8 +4320,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4375,8 +4406,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4667,6 +4699,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4685,6 +4718,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -4857,6 +4891,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4899,6 +4934,7 @@ CONFIG_PHY_BRCM_SATA=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4955,9 +4991,11 @@ CONFIG_PINCTRL_IMX8MP=y
CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+# CONFIG_PINCTRL_IMX91 is not set
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
CONFIG_PINCTRL_IPROC_GPIO=y
@@ -5042,6 +5080,8 @@ CONFIG_POWER_RESET_SYSCON=y
# CONFIG_POWER_RESET_VEXPRESS is not set
# CONFIG_POWER_RESET_XGENE is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5149,6 +5189,7 @@ CONFIG_PWM_BCM_IPROC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -5165,14 +5206,15 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_BAM_DMA is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
CONFIG_QCOM_EMAC=m
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
@@ -5193,6 +5235,7 @@ CONFIG_QCOM_L3_PMU=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_QSEECOM is not set
@@ -5207,6 +5250,8 @@ CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SPM is not set
# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
# CONFIG_QCOM_WDT is not set
CONFIG_QEDE=m
CONFIG_QED_FCOE=y
@@ -5253,6 +5298,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5314,7 +5360,7 @@ CONFIG_REGMAP=y
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
-# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_ARM_SCMI=m
# CONFIG_REGULATOR_AW37503 is not set
CONFIG_REGULATOR_BD718XX=m
# CONFIG_REGULATOR_DA9121 is not set
@@ -5353,13 +5399,13 @@ CONFIG_REGULATOR_MAX77686=m
# CONFIG_REGULATOR_MPQ7920 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
-# CONFIG_REGULATOR_PCA9450 is not set
-# CONFIG_REGULATOR_PF8X00 is not set
+CONFIG_REGULATOR_PCA9450=m
+CONFIG_REGULATOR_PF8X00=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
-# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_REFGEN is not set
# CONFIG_REGULATOR_RAA215300 is not set
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
@@ -5404,6 +5450,7 @@ CONFIG_RENESAS_PHY=m
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_AOSS is not set
# CONFIG_RESET_QCOM_PDC is not set
@@ -5418,7 +5465,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5456,6 +5503,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5516,7 +5564,7 @@ CONFIG_RTC_DRV_FSL_FTM_ALARM=m
# CONFIG_RTC_DRV_FTRTC010 is not set
# CONFIG_RTC_DRV_GOLDFISH is not set
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_HYM8563=m
# CONFIG_RTC_DRV_IMXDI is not set
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_ISL12026 is not set
@@ -5552,10 +5600,10 @@ CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RS5C372=m
-# CONFIG_RTC_DRV_RV3028 is not set
+CONFIG_RTC_DRV_RV3028=m
CONFIG_RTC_DRV_RV3029C2=m
# CONFIG_RTC_DRV_RV3029_HWMON is not set
-# CONFIG_RTC_DRV_RV3032 is not set
+CONFIG_RTC_DRV_RV3032=m
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_RX6110 is not set
@@ -5567,7 +5615,7 @@ CONFIG_RTC_DRV_RX8581=m
# CONFIG_RTC_DRV_SD3078 is not set
# CONFIG_RTC_DRV_SNVS is not set
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_TEGRA is not set
+CONFIG_RTC_DRV_TEGRA=m
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_TI_K3=m
CONFIG_RTC_DRV_V3020=m
@@ -5591,6 +5639,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5630,6 +5679,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5981,9 +6037,13 @@ CONFIG_SENSORS_MAX31790=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -6029,6 +6089,7 @@ CONFIG_SENSORS_SMPRO=m
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -6175,6 +6236,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6281,6 +6343,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6385,6 +6448,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6447,6 +6511,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6455,6 +6520,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6627,6 +6693,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6763,6 +6830,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6885,6 +6953,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+# CONFIG_SPI_CH341 is not set
CONFIG_SPI_DEBUG=y
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_DSPI=y
@@ -7198,6 +7267,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7254,7 +7324,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7737,6 +7807,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7748,6 +7819,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7758,6 +7830,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7854,6 +7927,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7869,6 +7944,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7888,6 +7964,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -8004,6 +8082,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8181,7 +8260,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8243,7 +8322,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-aarch64-rt-rhel.config b/SOURCES/kernel-aarch64-rt-rhel.config
index a932510..ddd8998 100644
--- a/SOURCES/kernel-aarch64-rt-rhel.config
+++ b/SOURCES/kernel-aarch64-rt-rhel.config
@@ -105,6 +105,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -399,7 +400,10 @@ CONFIG_ARM_MHU=m
# CONFIG_ARM_PL172_MPMC is not set
CONFIG_ARM_PMU=y
# CONFIG_ARM_PSCI_CHECKER is not set
-# CONFIG_ARM_PSCI_CPUIDLE is not set
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_PSCI=y
# CONFIG_ARM_QCOM_CPUFREQ_HW is not set
CONFIG_ARM_SBSA_WATCHDOG=m
CONFIG_ARM_SCMI_CPUFREQ=m
@@ -514,6 +518,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -527,6 +532,7 @@ CONFIG_BACKLIGHT_GPIO=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -551,6 +557,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -626,6 +633,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -1036,6 +1044,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1210,7 +1219,7 @@ CONFIG_CRYPTO_DEV_SA2UL=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
+CONFIG_CRYPTO_DEV_TEGRA=m
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1322,6 +1331,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1432,6 +1442,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1447,7 +1458,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
# CONFIG_DLM_DEPRECATED_API is not set
# CONFIG_DLM is not set
@@ -1508,6 +1519,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1523,7 +1535,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
CONFIG_DPAA2_CONSOLE=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
@@ -1540,6 +1552,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1579,6 +1592,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1628,11 +1642,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1648,6 +1664,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1920,6 +1937,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_BLUEFIELD=m
# CONFIG_EDAC_DEBUG is not set
@@ -1965,10 +1983,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_EPIC100 is not set
CONFIG_EPOLL=y
@@ -1976,10 +1997,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -2064,6 +2089,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2125,11 +2151,10 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_BMAN_TEST is not set
CONFIG_FSL_DPAA2_ETH_DCB=y
@@ -2307,6 +2332,7 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA186=y
@@ -2316,6 +2342,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_WATCHDOG=m
# CONFIG_GPIO_WINBOND is not set
@@ -2683,12 +2710,12 @@ CONFIG_I3C=m
# CONFIG_I40E_DCB is not set
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_ICE_HWMON=y
@@ -2701,6 +2728,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2898,6 +2926,7 @@ CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_PWM_BEEPER is not set
# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
CONFIG_INPUT_SPARSEKMAP=m
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -2930,6 +2959,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -3223,6 +3253,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3244,8 +3275,8 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_CYPRESS_SF is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_KEYBOARD_GPIO_POLLED is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_IMX is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_LM8323 is not set
@@ -3304,14 +3335,9 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# CONFIG_KVM_PROVE_MMU is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM=y
@@ -3322,6 +3348,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3380,6 +3409,7 @@ CONFIG_LEDS_LT3593=m
CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_NIC78BX is not set
+CONFIG_LEDS_PCA9532_GPIO=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
@@ -3390,6 +3420,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3403,6 +3434,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3535,6 +3567,7 @@ CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MARVELL_CN10K_DDR_PMU=m
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_CN10K_TAD_PMU=m
CONFIG_MARVELL_GTI_WDT=y
CONFIG_MARVELL_PHY=m
@@ -3631,14 +3664,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-# CONFIG_MEDIA_TUNER_MAX2165 is not set
-# CONFIG_MEDIA_TUNER_MSI001 is not set
-# CONFIG_MEDIA_TUNER_MT2266 is not set
-# CONFIG_MEDIA_TUNER_MXL301RF is not set
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
-# CONFIG_MEDIA_TUNER_TDA18250 is not set
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3648,6 +3673,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3673,6 +3699,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3686,6 +3713,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3748,6 +3777,7 @@ CONFIG_MFD_MAX77620=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4256,8 +4286,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4267,8 +4299,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4354,8 +4385,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4646,6 +4678,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4664,6 +4697,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCTEONTX2_AF=m
CONFIG_OCTEONTX2_MBOX=m
@@ -4834,6 +4868,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4876,6 +4911,7 @@ CONFIG_PHY_BRCM_SATA=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_FSL_IMX8M_PCIE=y
CONFIG_PHY_FSL_IMX8MQ_USB=m
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4932,9 +4968,11 @@ CONFIG_PINCTRL_IMX8MP=y
CONFIG_PINCTRL_IMX8MQ=y
CONFIG_PINCTRL_IMX8QXP=y
CONFIG_PINCTRL_IMX8ULP=y
+# CONFIG_PINCTRL_IMX91 is not set
CONFIG_PINCTRL_IMX93=y
# CONFIG_PINCTRL_IMXRT1050 is not set
# CONFIG_PINCTRL_IMXRT1170 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
CONFIG_PINCTRL_IPROC_GPIO=y
@@ -5019,6 +5057,8 @@ CONFIG_POWER_RESET_SYSCON=y
# CONFIG_POWER_RESET_VEXPRESS is not set
# CONFIG_POWER_RESET_XGENE is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5126,6 +5166,7 @@ CONFIG_PWM_BCM_IPROC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_IMX1 is not set
CONFIG_PWM_IMX27=m
@@ -5142,14 +5183,15 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_BAM_DMA is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
CONFIG_QCOM_EMAC=m
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
@@ -5170,6 +5212,7 @@ CONFIG_QCOM_L3_PMU=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_QSEECOM is not set
@@ -5184,6 +5227,8 @@ CONFIG_QCOM_SCM=y
# CONFIG_QCOM_SPM is not set
# CONFIG_QCOM_SPMI_VADC is not set
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
+CONFIG_QCOM_TZMEM_MODE_GENERIC=y
+# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set
# CONFIG_QCOM_WDT is not set
CONFIG_QEDE=m
CONFIG_QED_FCOE=y
@@ -5230,6 +5275,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5291,7 +5337,7 @@ CONFIG_REGMAP=y
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
-# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_ARM_SCMI=m
# CONFIG_REGULATOR_AW37503 is not set
CONFIG_REGULATOR_BD718XX=m
# CONFIG_REGULATOR_DA9121 is not set
@@ -5330,13 +5376,13 @@ CONFIG_REGULATOR_MAX77686=m
# CONFIG_REGULATOR_MPQ7920 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
-# CONFIG_REGULATOR_PCA9450 is not set
-# CONFIG_REGULATOR_PF8X00 is not set
+CONFIG_REGULATOR_PCA9450=m
+CONFIG_REGULATOR_PF8X00=m
CONFIG_REGULATOR_PFUZE100=m
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
-# CONFIG_REGULATOR_PWM is not set
+CONFIG_REGULATOR_PWM=y
# CONFIG_REGULATOR_QCOM_REFGEN is not set
# CONFIG_REGULATOR_RAA215300 is not set
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
@@ -5381,6 +5427,7 @@ CONFIG_RENESAS_PHY=m
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
CONFIG_RESET_IMX7=y
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_AOSS is not set
# CONFIG_RESET_QCOM_PDC is not set
@@ -5395,7 +5442,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5433,6 +5480,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5493,7 +5541,7 @@ CONFIG_RTC_DRV_FSL_FTM_ALARM=m
# CONFIG_RTC_DRV_FTRTC010 is not set
# CONFIG_RTC_DRV_GOLDFISH is not set
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
-# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_HYM8563=m
# CONFIG_RTC_DRV_IMXDI is not set
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_ISL12026 is not set
@@ -5529,10 +5577,10 @@ CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RP5C01=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RS5C372=m
-# CONFIG_RTC_DRV_RV3028 is not set
+CONFIG_RTC_DRV_RV3028=m
CONFIG_RTC_DRV_RV3029C2=m
# CONFIG_RTC_DRV_RV3029_HWMON is not set
-# CONFIG_RTC_DRV_RV3032 is not set
+CONFIG_RTC_DRV_RV3032=m
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_RX6110 is not set
@@ -5544,7 +5592,7 @@ CONFIG_RTC_DRV_RX8581=m
# CONFIG_RTC_DRV_SD3078 is not set
# CONFIG_RTC_DRV_SNVS is not set
CONFIG_RTC_DRV_STK17TA8=m
-# CONFIG_RTC_DRV_TEGRA is not set
+CONFIG_RTC_DRV_TEGRA=m
# CONFIG_RTC_DRV_TEST is not set
CONFIG_RTC_DRV_TI_K3=m
CONFIG_RTC_DRV_V3020=m
@@ -5568,6 +5616,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5607,6 +5656,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5958,9 +6014,13 @@ CONFIG_SENSORS_MAX31790=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -6006,6 +6066,7 @@ CONFIG_SENSORS_SMPRO=m
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -6152,6 +6213,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6258,6 +6320,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6361,6 +6424,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6423,6 +6487,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6431,6 +6496,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6603,6 +6669,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6738,6 +6805,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6860,6 +6928,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_DSPI=y
@@ -7173,6 +7242,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7229,7 +7299,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7712,6 +7782,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7723,6 +7794,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7733,6 +7805,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7829,6 +7902,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7844,6 +7919,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7863,6 +7939,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7979,6 +8057,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8156,7 +8235,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8218,7 +8297,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-ppc64le-debug-fedora.config b/SOURCES/kernel-ppc64le-debug-fedora.config
index 0cd84a4..b93da2a 100644
--- a/SOURCES/kernel-ppc64le-debug-fedora.config
+++ b/SOURCES/kernel-ppc64le-debug-fedora.config
@@ -116,6 +116,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -189,7 +190,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
CONFIG_AFFS_FS=m
@@ -301,7 +302,6 @@ CONFIG_ARM64_ERRATUM_2253138=y
CONFIG_ARM64_USE_LSE_ATOMICS=y
CONFIG_ARM_CMN=m
# CONFIG_ARM_MHU_V2 is not set
-CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
CONFIG_ARM_PTDUMP_DEBUGFS=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set
@@ -413,6 +413,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_BCMA=y
CONFIG_B43_BUSES_BCMA_AND_SSB=y
@@ -450,6 +451,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -484,6 +486,7 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RT5033=m
CONFIG_BATTERY_SAMSUNG_SDI=y
@@ -525,6 +528,7 @@ CONFIG_BCMGENET=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -578,6 +582,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
CONFIG_BLK_DEV_RSXX=m
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SX8=m
@@ -868,6 +873,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
# CONFIG_CHARGER_CROS_USBPD is not set
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1102,6 +1108,7 @@ CONFIG_CRYPTO_CRCT10DIF_VPMSUM=m
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_CURVE25519_PPC64=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
@@ -1232,8 +1239,8 @@ CONFIG_CXD2880_SPI_DRV=m
# CONFIG_CX_ECAT is not set
CONFIG_CXL_ACPI=m
CONFIG_CXL_BUS=m
-CONFIG_CXLFLASH=m
-CONFIG_CXL=m
+# CONFIG_CXLFLASH is not set
+# CONFIG_CXL is not set
CONFIG_CXL_MEM=m
# CONFIG_CXL_MEM_RAW_COMMANDS is not set
CONFIG_CXL_PCI=m
@@ -1241,6 +1248,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1438,6 +1446,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1471,6 +1480,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -1551,11 +1561,13 @@ CONFIG_DRM_PANEL_DSI_CM=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -1571,6 +1583,7 @@ CONFIG_DRM_PANEL_JDI_R63452=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -1861,6 +1874,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2020,7 +2034,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2064,7 +2080,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2215,7 +2230,7 @@ CONFIG_GPIO_MLXBF2=m
CONFIG_GPIO_MXC=m
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCA9570=m
+# CONFIG_GPIO_PCA9570 is not set
CONFIG_GPIO_PCF857X=m
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -2226,6 +2241,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
@@ -2233,6 +2249,7 @@ CONFIG_GPIO_TPS65219=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
CONFIG_GPIO_WM8994=m
@@ -2597,6 +2614,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -2746,6 +2764,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -2756,6 +2775,7 @@ CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3156,6 +3176,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZ4 is not set
@@ -3261,6 +3282,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -3301,9 +3323,10 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
-CONFIG_LEDS_GPIO=m
+# CONFIG_LEDS_GPIO is not set
CONFIG_LEDS_GROUP_MULTICOLOR=m
# CONFIG_LEDS_IS31FL319X is not set
CONFIG_LEDS_IS31FL32XX=m
@@ -3331,8 +3354,7 @@ CONFIG_LEDS_MLXREG=m
CONFIG_LEDS_NCP5623=m
CONFIG_LEDS_NIC78BX=m
# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_PCA9532=m
+# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_PCA995X=m
@@ -3344,6 +3366,7 @@ CONFIG_LEDS_REGULATOR=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3357,6 +3380,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3608,6 +3632,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3632,6 +3657,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3647,6 +3673,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -3710,6 +3738,7 @@ CONFIG_MFD_MAX77714=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4183,6 +4212,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -4287,8 +4317,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4395,6 +4427,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -4700,6 +4733,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4723,6 +4757,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
CONFIG_OF_FPGA_REGION=m
@@ -4875,6 +4910,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5010,6 +5046,8 @@ CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5151,10 +5189,12 @@ CONFIG_PTP_DFL_TOD=m
# CONFIG_PVPANIC_PCI is not set
CONFIG_PVPANIC=y
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
# CONFIG_PWM_CLK is not set
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
CONFIG_PWM_OMAP_DMTIMER=m
# CONFIG_PWM_PCA9685 is not set
@@ -5179,6 +5219,7 @@ CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_LMH is not set
# CONFIG_QCOM_OCMEM is not set
CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_QCOM_SPM is not set
@@ -5294,10 +5335,12 @@ CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_KUNIT=m
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -5404,7 +5447,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -5448,6 +5493,7 @@ CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_TTY=m
# CONFIG_RPMSG_VIRTIO is not set
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -5583,8 +5629,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -5628,6 +5675,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5876,6 +5930,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -5992,10 +6047,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -6042,6 +6101,8 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -6183,6 +6244,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6290,6 +6352,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6401,6 +6464,7 @@ CONFIG_SND_SOC_ADI=m
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -6445,6 +6509,7 @@ CONFIG_SND_SOC_CS35L45_I2C=m
CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
@@ -6463,6 +6528,7 @@ CONFIG_SND_SOC_CS42L83=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6471,6 +6537,7 @@ CONFIG_SND_SOC_CX2072X=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
# CONFIG_SND_SOC_ES8316 is not set
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6640,6 +6707,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5659=m
@@ -6777,6 +6845,7 @@ CONFIG_SND_SOC_TSCS42XX=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
# CONFIG_SND_SOC_WCD938X_SDW is not set
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -6898,6 +6967,7 @@ CONFIG_SPI_AX88796C=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
@@ -7126,6 +7196,7 @@ CONFIG_TCP_MD5SIG=y
CONFIG_TDX_GUEST_DRIVER=m
CONFIG_TEE=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -7207,6 +7278,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -7830,6 +7902,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7854,6 +7927,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7941,6 +8015,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -7950,6 +8025,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -7968,6 +8045,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -7987,6 +8065,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MGB4 is not set
CONFIG_VIDEO_ML86V7667=m
@@ -8039,6 +8119,7 @@ CONFIG_VIDEO_OV9734=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
CONFIG_VIDEO_RDACM20=m
# CONFIG_VIDEO_RDACM21 is not set
CONFIG_VIDEO_RJ54N1=m
@@ -8104,6 +8185,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -8398,7 +8480,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-ppc64le-debug-rhel.config b/SOURCES/kernel-ppc64le-debug-rhel.config
index f1fd5f1..18e2aa7 100644
--- a/SOURCES/kernel-ppc64le-debug-rhel.config
+++ b/SOURCES/kernel-ppc64le-debug-rhel.config
@@ -99,6 +99,7 @@ CONFIG_ACPI_VIDEO=m
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -375,6 +376,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -388,6 +390,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -412,6 +415,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -481,6 +485,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -857,6 +862,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -959,6 +965,7 @@ CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_CURVE25519_PPC64=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
@@ -993,7 +1000,6 @@ CONFIG_CRYPTO_DEV_NX=y
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m
CONFIG_CRYPTO_DEV_VMX=y
@@ -1089,8 +1095,8 @@ CONFIG_CUSE=m
# CONFIG_CX_ECAT is not set
CONFIG_CXL_ACPI=m
CONFIG_CXL_BUS=m
-CONFIG_CXLFLASH=m
-CONFIG_CXL=m
+# CONFIG_CXLFLASH is not set
+# CONFIG_CXL is not set
CONFIG_CXL_MEM=m
# CONFIG_CXL_MEM_RAW_COMMANDS is not set
CONFIG_CXL_PCI=m
@@ -1098,6 +1104,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1217,6 +1224,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1232,11 +1240,10 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
CONFIG_DMA_API_DEBUG_SG=y
CONFIG_DMA_API_DEBUG=y
@@ -1294,6 +1301,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1309,7 +1317,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1325,6 +1333,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1364,6 +1373,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
CONFIG_DRM_I2C_SIL164=m
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1410,11 +1420,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1429,6 +1441,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1655,6 +1668,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_CPC925=m
CONFIG_EDAC_DEBUG=y
@@ -1693,10 +1707,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1704,10 +1721,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -1801,6 +1822,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1861,17 +1883,17 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_LBC is not set
# CONFIG_FSL_PQ_MDIO is not set
@@ -1944,8 +1966,7 @@ CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=1
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2014,6 +2035,7 @@ CONFIG_GPIO_PCF857X=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2021,6 +2043,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2360,12 +2383,12 @@ CONFIG_I2C=y
CONFIG_I40E_DCB=y
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_IBM_BSR=m
@@ -2382,6 +2405,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2593,6 +2617,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -2885,6 +2910,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -2964,7 +2990,6 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_BOOK3S_64_HV=m
CONFIG_KVM_BOOK3S_64=m
# CONFIG_KVM_BOOK3S_64_PR is not set
@@ -2974,11 +2999,9 @@ CONFIG_KVM_BOOK3S_HV_NESTED_PMU_WORKAROUND=y
# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
CONFIG_KVM_BOOK3S_PR_POSSIBLE=y
CONFIG_KVM_GUEST=y
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
CONFIG_KVM_PROVE_MMU=y
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM_XICS=y
@@ -2989,6 +3012,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3059,6 +3085,7 @@ CONFIG_LEDS_POWERNV=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3072,6 +3099,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3202,6 +3230,7 @@ CONFIG_MANTIS_CORE=m
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_PHY=m
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3291,9 +3320,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3303,6 +3329,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3328,6 +3355,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3341,6 +3369,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3402,6 +3432,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -3885,8 +3916,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -3896,8 +3929,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -3982,8 +4014,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4261,6 +4294,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4279,6 +4313,7 @@ CONFIG_NVRAM=m
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
CONFIG_OF_KUNIT_TEST=m
@@ -4424,6 +4459,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4456,6 +4492,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4493,6 +4530,8 @@ CONFIG_PID_NS=y
# CONFIG_PINCTRL_CS42L43 is not set
# CONFIG_PINCTRL_CY8C95X0 is not set
# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
@@ -4563,6 +4602,8 @@ CONFIG_POWER_RESET_GPIO=y
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4705,6 +4746,7 @@ CONFIG_PTP_1588_CLOCK=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_PCA9685 is not set
# CONFIG_PWM_XILINX is not set
@@ -4714,13 +4756,14 @@ CONFIG_PWM=y
# CONFIG_PWRSEQ_SIMPLE is not set
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4733,6 +4776,7 @@ CONFIG_PWM=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -4787,6 +4831,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
CONFIG_RANDOM32_SELFTEST=y
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -4870,6 +4915,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -4903,6 +4949,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -4914,7 +4961,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -4952,6 +4999,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5079,6 +5127,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5118,6 +5167,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5471,9 +5527,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5518,6 +5578,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5658,6 +5719,7 @@ CONFIG_SIGNATURE=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -5758,6 +5820,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -5862,6 +5925,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -5924,6 +5988,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -5932,6 +5997,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6104,6 +6170,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6240,6 +6307,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6358,6 +6426,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6630,6 +6699,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6677,7 +6747,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7151,6 +7221,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7161,6 +7232,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7171,6 +7243,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7264,6 +7337,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7279,6 +7354,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7298,6 +7374,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7414,6 +7492,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7589,7 +7668,7 @@ CONFIG_XMON=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -7645,7 +7724,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-ppc64le-fedora.config b/SOURCES/kernel-ppc64le-fedora.config
index d0470d8..d29030e 100644
--- a/SOURCES/kernel-ppc64le-fedora.config
+++ b/SOURCES/kernel-ppc64le-fedora.config
@@ -116,6 +116,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -189,7 +190,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
CONFIG_AFFS_FS=m
@@ -301,7 +302,6 @@ CONFIG_ARM64_ERRATUM_2253138=y
CONFIG_ARM64_USE_LSE_ATOMICS=y
CONFIG_ARM_CMN=m
# CONFIG_ARM_MHU_V2 is not set
-CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set
# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
@@ -411,6 +411,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_BCMA=y
CONFIG_B43_BUSES_BCMA_AND_SSB=y
@@ -448,6 +449,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -482,6 +484,7 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RT5033=m
CONFIG_BATTERY_SAMSUNG_SDI=y
@@ -523,6 +526,7 @@ CONFIG_BCMGENET=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -576,6 +580,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
CONFIG_BLK_DEV_RSXX=m
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SX8=m
@@ -866,6 +871,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
# CONFIG_CHARGER_CROS_USBPD is not set
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1100,6 +1106,7 @@ CONFIG_CRYPTO_CRCT10DIF_VPMSUM=m
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_CURVE25519_PPC64=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
@@ -1230,8 +1237,8 @@ CONFIG_CXD2880_SPI_DRV=m
# CONFIG_CX_ECAT is not set
CONFIG_CXL_ACPI=m
CONFIG_CXL_BUS=m
-CONFIG_CXLFLASH=m
-CONFIG_CXL=m
+# CONFIG_CXLFLASH is not set
+# CONFIG_CXL is not set
CONFIG_CXL_MEM=m
# CONFIG_CXL_MEM_RAW_COMMANDS is not set
CONFIG_CXL_PCI=m
@@ -1239,6 +1246,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1427,6 +1435,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1460,6 +1469,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -1540,11 +1550,13 @@ CONFIG_DRM_PANEL_DSI_CM=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -1560,6 +1572,7 @@ CONFIG_DRM_PANEL_JDI_R63452=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -1850,6 +1863,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2001,7 +2015,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2045,7 +2061,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2196,7 +2211,7 @@ CONFIG_GPIO_MLXBF2=m
CONFIG_GPIO_MXC=m
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCA9570=m
+# CONFIG_GPIO_PCA9570 is not set
CONFIG_GPIO_PCF857X=m
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -2207,6 +2222,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
@@ -2214,6 +2230,7 @@ CONFIG_GPIO_TPS65219=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
CONFIG_GPIO_WM8994=m
@@ -2577,6 +2594,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -2726,6 +2744,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -2736,6 +2755,7 @@ CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3130,6 +3150,7 @@ CONFIG_KALLSYMS=y
# CONFIG_KCOV is not set
# CONFIG_KCSAN is not set
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZ4 is not set
@@ -3235,6 +3256,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -3275,9 +3297,10 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
-CONFIG_LEDS_GPIO=m
+# CONFIG_LEDS_GPIO is not set
CONFIG_LEDS_GROUP_MULTICOLOR=m
# CONFIG_LEDS_IS31FL319X is not set
CONFIG_LEDS_IS31FL32XX=m
@@ -3305,8 +3328,7 @@ CONFIG_LEDS_MLXREG=m
CONFIG_LEDS_NCP5623=m
CONFIG_LEDS_NIC78BX=m
# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_PCA9532=m
+# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_PCA995X=m
@@ -3318,6 +3340,7 @@ CONFIG_LEDS_REGULATOR=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3331,6 +3354,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3581,6 +3605,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3605,6 +3630,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3620,6 +3646,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -3683,6 +3711,7 @@ CONFIG_MFD_MAX77714=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4155,6 +4184,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -4259,8 +4289,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4367,6 +4399,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -4672,6 +4705,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4695,6 +4729,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
CONFIG_OF_FPGA_REGION=m
@@ -4846,6 +4881,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4981,6 +5017,8 @@ CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5122,10 +5160,12 @@ CONFIG_PTP_DFL_TOD=m
# CONFIG_PVPANIC_PCI is not set
CONFIG_PVPANIC=y
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
# CONFIG_PWM_CLK is not set
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
CONFIG_PWM_OMAP_DMTIMER=m
# CONFIG_PWM_PCA9685 is not set
@@ -5150,6 +5190,7 @@ CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_LMH is not set
# CONFIG_QCOM_OCMEM is not set
CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_QCOM_SPM is not set
@@ -5265,10 +5306,12 @@ CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_KUNIT=m
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -5375,7 +5418,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -5419,6 +5464,7 @@ CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_TTY=m
# CONFIG_RPMSG_VIRTIO is not set
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -5554,8 +5600,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -5599,6 +5646,13 @@ CONFIG_RTW89_8922AE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5847,6 +5901,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -5963,10 +6018,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -6013,6 +6072,8 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -6154,6 +6215,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6261,6 +6323,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6371,6 +6434,7 @@ CONFIG_SND_SOC_ADI=m
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -6415,6 +6479,7 @@ CONFIG_SND_SOC_CS35L45_I2C=m
CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
@@ -6433,6 +6498,7 @@ CONFIG_SND_SOC_CS42L83=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6441,6 +6507,7 @@ CONFIG_SND_SOC_CX2072X=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
# CONFIG_SND_SOC_ES8316 is not set
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6610,6 +6677,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5659=m
@@ -6746,6 +6814,7 @@ CONFIG_SND_SOC_TSCS42XX=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
# CONFIG_SND_SOC_WCD938X_SDW is not set
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -6867,6 +6936,7 @@ CONFIG_SPI_AX88796C=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
@@ -7095,6 +7165,7 @@ CONFIG_TCP_MD5SIG=y
CONFIG_TDX_GUEST_DRIVER=m
CONFIG_TEE=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -7176,6 +7247,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -7799,6 +7871,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7823,6 +7896,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7910,6 +7984,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -7919,6 +7994,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -7937,6 +8014,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -7956,6 +8034,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MGB4 is not set
CONFIG_VIDEO_ML86V7667=m
@@ -8008,6 +8088,7 @@ CONFIG_VIDEO_OV9734=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
CONFIG_VIDEO_RDACM20=m
# CONFIG_VIDEO_RDACM21 is not set
CONFIG_VIDEO_RJ54N1=m
@@ -8073,6 +8154,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -8367,7 +8449,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-ppc64le-rhel.config b/SOURCES/kernel-ppc64le-rhel.config
index 5fd266b..326ae90 100644
--- a/SOURCES/kernel-ppc64le-rhel.config
+++ b/SOURCES/kernel-ppc64le-rhel.config
@@ -99,6 +99,7 @@ CONFIG_ACPI_VIDEO=m
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -375,6 +376,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -388,6 +390,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -412,6 +415,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -481,6 +485,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -857,6 +862,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -959,6 +965,7 @@ CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_CTR=y
CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_CURVE25519_PPC64=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
@@ -993,7 +1000,6 @@ CONFIG_CRYPTO_DEV_NX=y
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m
CONFIG_CRYPTO_DEV_VMX=y
@@ -1089,8 +1095,8 @@ CONFIG_CUSE=m
# CONFIG_CX_ECAT is not set
CONFIG_CXL_ACPI=m
CONFIG_CXL_BUS=m
-CONFIG_CXLFLASH=m
-CONFIG_CXL=m
+# CONFIG_CXLFLASH is not set
+# CONFIG_CXL is not set
CONFIG_CXL_MEM=m
# CONFIG_CXL_MEM_RAW_COMMANDS is not set
CONFIG_CXL_PCI=m
@@ -1098,6 +1104,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1209,6 +1216,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1224,11 +1232,10 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_DMA_API_DEBUG_SG is not set
@@ -1286,6 +1293,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1301,7 +1309,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1317,6 +1325,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1356,6 +1365,7 @@ CONFIG_DRM_I2C_CH7006=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
CONFIG_DRM_I2C_SIL164=m
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1402,11 +1412,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1421,6 +1433,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1647,6 +1660,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_CPC925=m
# CONFIG_EDAC_DEBUG is not set
@@ -1685,10 +1699,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1696,10 +1713,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -1785,6 +1806,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1845,17 +1867,17 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_LBC is not set
# CONFIG_FSL_PQ_MDIO is not set
@@ -1928,8 +1950,7 @@ CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=1
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -1998,6 +2019,7 @@ CONFIG_GPIO_PCF857X=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2005,6 +2027,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2344,12 +2367,12 @@ CONFIG_I2C=y
CONFIG_I40E_DCB=y
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_IBM_BSR=m
@@ -2366,6 +2389,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2577,6 +2601,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -2865,6 +2890,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -2944,7 +2970,6 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_BOOK3S_64_HV=m
CONFIG_KVM_BOOK3S_64=m
# CONFIG_KVM_BOOK3S_64_PR is not set
@@ -2954,11 +2979,9 @@ CONFIG_KVM_BOOK3S_HV_NESTED_PMU_WORKAROUND=y
# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
CONFIG_KVM_BOOK3S_PR_POSSIBLE=y
CONFIG_KVM_GUEST=y
-CONFIG_KVM_HYPERV=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# CONFIG_KVM_PROVE_MMU is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
CONFIG_KVM_XICS=y
@@ -2969,6 +2992,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3039,6 +3065,7 @@ CONFIG_LEDS_POWERNV=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3052,6 +3079,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3182,6 +3210,7 @@ CONFIG_MANTIS_CORE=m
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_PHY=m
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3271,9 +3300,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3283,6 +3309,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3308,6 +3335,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3321,6 +3349,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3382,6 +3412,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -3865,8 +3896,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -3876,8 +3909,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -3962,8 +3994,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4241,6 +4274,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4259,6 +4293,7 @@ CONFIG_NVRAM=m
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
CONFIG_OF_KUNIT_TEST=m
@@ -4403,6 +4438,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4435,6 +4471,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4472,6 +4509,8 @@ CONFIG_PID_NS=y
# CONFIG_PINCTRL_CS42L43 is not set
# CONFIG_PINCTRL_CY8C95X0 is not set
# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
@@ -4542,6 +4581,8 @@ CONFIG_POWER_RESET_GPIO=y
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4684,6 +4725,7 @@ CONFIG_PTP_1588_CLOCK=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM_PCA9685 is not set
# CONFIG_PWM_XILINX is not set
@@ -4693,13 +4735,14 @@ CONFIG_PWM=y
# CONFIG_PWRSEQ_SIMPLE is not set
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4712,6 +4755,7 @@ CONFIG_PWM=y
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -4766,6 +4810,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -4849,6 +4894,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -4882,6 +4928,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -4893,7 +4940,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -4931,6 +4978,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5058,6 +5106,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5097,6 +5146,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5450,9 +5506,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5497,6 +5557,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5637,6 +5698,7 @@ CONFIG_SIGNATURE=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -5737,6 +5799,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -5840,6 +5903,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -5902,6 +5966,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -5910,6 +5975,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6082,6 +6148,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6217,6 +6284,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6335,6 +6403,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6607,6 +6676,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6654,7 +6724,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7128,6 +7198,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7138,6 +7209,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7148,6 +7220,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7241,6 +7314,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7256,6 +7331,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7275,6 +7351,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7391,6 +7469,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7566,7 +7645,7 @@ CONFIG_XMON=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -7622,7 +7701,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-riscv64-debug-fedora.config b/SOURCES/kernel-riscv64-debug-fedora.config
new file mode 100644
index 0000000..51b92ad
--- /dev/null
+++ b/SOURCES/kernel-riscv64-debug-fedora.config
@@ -0,0 +1,8607 @@
+# riscv
+# CONFIG_60XX_WDT is not set
+CONFIG_6LOWPAN_DEBUGFS=y
+CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m
+CONFIG_6LOWPAN_GHC_ICMPV6=m
+CONFIG_6LOWPAN_GHC_UDP=m
+CONFIG_6LOWPAN=m
+CONFIG_6LOWPAN_NHC_DEST=m
+CONFIG_6LOWPAN_NHC_FRAGMENT=m
+CONFIG_6LOWPAN_NHC_HOP=m
+CONFIG_6LOWPAN_NHC_IPV6=m
+CONFIG_6LOWPAN_NHC=m
+CONFIG_6LOWPAN_NHC_MOBILITY=m
+CONFIG_6LOWPAN_NHC_ROUTING=m
+CONFIG_6LOWPAN_NHC_UDP=m
+CONFIG_6PACK=m
+CONFIG_8139CP=m
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_8139TOO_8129=y
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_9P_FSCACHE=y
+CONFIG_9P_FS=m
+CONFIG_9P_FS_POSIX_ACL=y
+CONFIG_9P_FS_SECURITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+CONFIG_ABP060MG=m
+CONFIG_ACCESSIBILITY=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_ALS=m
+CONFIG_ACPI_APEI_EINJ_CXL=y
+CONFIG_ACPI_APEI_EINJ=m
+CONFIG_ACPI_APEI_ERST_DEBUG=m
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BGRT=y
+CONFIG_ACPI_BUTTON=y
+# CONFIG_ACPI_CMPC is not set
+CONFIG_ACPI_CONFIGFS=m
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_CPPC_CPUFREQ_FIE=y
+CONFIG_ACPI_CPPC_CPUFREQ=m
+CONFIG_ACPI_CUSTOM_METHOD=m
+CONFIG_ACPI_DEBUGGER_USER=m
+CONFIG_ACPI_DEBUGGER=y
+CONFIG_ACPI_DEBUG=y
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_EC_DEBUGFS=m
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_FFH=y
+# CONFIG_ACPI_FPDT is not set
+CONFIG_ACPI_HED=y
+CONFIG_ACPI_HMAT=y
+CONFIG_ACPI_I2C_OPREGION=y
+CONFIG_ACPI_IPMI=m
+CONFIG_ACPI_NFIT=m
+CONFIG_ACPI_NUMA=y
+CONFIG_ACPI_PCC=y
+CONFIG_ACPI_PCI_SLOT=y
+CONFIG_ACPI_PFRUT=m
+CONFIG_ACPI_PLATFORM_PROFILE=m
+CONFIG_ACPI_PRMT=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_SPCR_TABLE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TAD=m
+CONFIG_ACPI_THERMAL=y
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI=y
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_AD2S1200 is not set
+# CONFIG_AD2S1210 is not set
+# CONFIG_AD2S90 is not set
+CONFIG_AD3552R=m
+CONFIG_AD4130=m
+# CONFIG_AD5064 is not set
+CONFIG_AD5110=m
+# CONFIG_AD525X_DPOT is not set
+CONFIG_AD5272=m
+# CONFIG_AD5360 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5421 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_AD5449 is not set
+# CONFIG_AD5504 is not set
+# CONFIG_AD5592R is not set
+# CONFIG_AD5593R is not set
+# CONFIG_AD5624R_SPI is not set
+# CONFIG_AD5686_SPI is not set
+# CONFIG_AD5696_I2C is not set
+# CONFIG_AD5755 is not set
+# CONFIG_AD5758 is not set
+# CONFIG_AD5761 is not set
+# CONFIG_AD5764 is not set
+CONFIG_AD5766=m
+CONFIG_AD5770R=m
+# CONFIG_AD5791 is not set
+# CONFIG_AD5933 is not set
+# CONFIG_AD7091R5 is not set
+CONFIG_AD7091R8=m
+CONFIG_AD7124=m
+# CONFIG_AD7150 is not set
+# CONFIG_AD7173 is not set
+# CONFIG_AD7192 is not set
+# CONFIG_AD7266 is not set
+# CONFIG_AD7280 is not set
+# CONFIG_AD7291 is not set
+CONFIG_AD7292=m
+CONFIG_AD7293=m
+# CONFIG_AD7298 is not set
+# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
+CONFIG_AD74115=m
+CONFIG_AD74413R=m
+# CONFIG_AD7476 is not set
+# CONFIG_AD7606_IFACE_PARALLEL is not set
+# CONFIG_AD7606_IFACE_SPI is not set
+# CONFIG_AD7746 is not set
+CONFIG_AD7766=m
+# CONFIG_AD7768_1 is not set
+# CONFIG_AD7780 is not set
+# CONFIG_AD7791 is not set
+# CONFIG_AD7793 is not set
+# CONFIG_AD7816 is not set
+# CONFIG_AD7887 is not set
+# CONFIG_AD7923 is not set
+# CONFIG_AD7944 is not set
+CONFIG_AD7949=m
+# CONFIG_AD799X is not set
+# CONFIG_AD8366 is not set
+# CONFIG_AD8801 is not set
+CONFIG_AD9467=m
+# CONFIG_AD9523 is not set
+# CONFIG_AD9739A is not set
+# CONFIG_AD9832 is not set
+# CONFIG_AD9834 is not set
+# CONFIG_ADA4250 is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADDRESS_MASKING is not set
+# CONFIG_ADE7854 is not set
+# CONFIG_ADF4350 is not set
+# CONFIG_ADF4371 is not set
+CONFIG_ADF4377=m
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADI_AXI_ADC is not set
+# CONFIG_ADI_AXI_DAC is not set
+# CONFIG_ADIN1100_PHY is not set
+CONFIG_ADIN1110=m
+CONFIG_ADIN_PHY=m
+# CONFIG_ADIS16080 is not set
+# CONFIG_ADIS16130 is not set
+# CONFIG_ADIS16136 is not set
+# CONFIG_ADIS16201 is not set
+# CONFIG_ADIS16203 is not set
+# CONFIG_ADIS16209 is not set
+# CONFIG_ADIS16240 is not set
+# CONFIG_ADIS16260 is not set
+# CONFIG_ADIS16400 is not set
+# CONFIG_ADIS16460 is not set
+CONFIG_ADIS16475=m
+# CONFIG_ADIS16480 is not set
+# CONFIG_ADJD_S311 is not set
+# CONFIG_ADMFM2000 is not set
+# CONFIG_ADMV1013 is not set
+# CONFIG_ADMV1014 is not set
+# CONFIG_ADMV4420 is not set
+# CONFIG_ADMV8818 is not set
+# CONFIG_ADRF6780 is not set
+# CONFIG_ADT7316 is not set
+CONFIG_ADUX1020=m
+# CONFIG_ADVANTECH_WDT is not set
+CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_ADV_SWBUTTON is not set
+CONFIG_ADXL313_I2C=m
+CONFIG_ADXL313_SPI=m
+# CONFIG_ADXL345_I2C is not set
+# CONFIG_ADXL345_SPI is not set
+CONFIG_ADXL355_I2C=m
+CONFIG_ADXL355_SPI=m
+CONFIG_ADXL367_I2C=m
+CONFIG_ADXL367_SPI=m
+CONFIG_ADXL372_I2C=m
+CONFIG_ADXL372_SPI=m
+CONFIG_ADXRS290=m
+# CONFIG_ADXRS450 is not set
+CONFIG_AF8133J=m
+# CONFIG_AFE4403 is not set
+# CONFIG_AFE4404 is not set
+CONFIG_AFFS_FS=m
+CONFIG_AF_KCM=m
+CONFIG_AF_RXRPC_DEBUG=y
+# CONFIG_AF_RXRPC_INJECT_LOSS is not set
+# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set
+CONFIG_AF_RXRPC_IPV6=y
+CONFIG_AF_RXRPC=m
+# CONFIG_AFS_DEBUG_CURSOR is not set
+CONFIG_AFS_DEBUG=y
+CONFIG_AFS_FSCACHE=y
+CONFIG_AFS_FS=m
+# CONFIG_AHCI_CEVA is not set
+CONFIG_AHCI_DWC=m
+# CONFIG_AHCI_QORIQ is not set
+CONFIG_AIC79XX_CMDS_PER_DEVICE=4
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+CONFIG_AIO=y
+CONFIG_AIR_EN8811H_PHY=m
+CONFIG_AIX_PARTITION=y
+# CONFIG_AK09911 is not set
+# CONFIG_AK8974 is not set
+# CONFIG_AK8975 is not set
+CONFIG_AL3010=m
+# CONFIG_AL3320A is not set
+# CONFIG_AL_FIC is not set
+# CONFIG_ALIBABA_ENI_VDPA is not set
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_DEV_COREDUMP=y
+# CONFIG_ALTERA_FREEZE_BRIDGE is not set
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
+CONFIG_ALTERA_PR_IP_CORE=m
+CONFIG_ALTERA_PR_IP_CORE_PLAT=m
+CONFIG_ALTERA_STAPL=m
+CONFIG_ALTERA_TSE=m
+CONFIG_ALX=m
+# CONFIG_AM2315 is not set
+# CONFIG_AMBA_PL08X is not set
+CONFIG_AMD8111_ETH=m
+CONFIG_AMD_ATL=m
+# CONFIG_AMD_IOMMU_DEBUGFS is not set
+CONFIG_AMD_PHY=m
+CONFIG_AMD_PMC=m
+# CONFIG_AMD_PTDMA is not set
+# CONFIG_AMDTEE is not set
+# CONFIG_AMD_XGBE_DCB is not set
+# CONFIG_AMIGA_PARTITION is not set
+CONFIG_AMT=m
+CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
+CONFIG_ANDROID_BINDERFS=y
+# CONFIG_ANDROID_BINDER_IPC is not set
+# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
+# CONFIG_ANON_VMA_NAME is not set
+# CONFIG_AOSONG_AGS02MA is not set
+# CONFIG_APDS9300 is not set
+CONFIG_APDS9306=m
+CONFIG_APDS9802ALS=m
+# CONFIG_APDS9960 is not set
+CONFIG_APPLE_MFI_FASTCHARGE=m
+# CONFIG_APPLE_PROPERTIES is not set
+# CONFIG_APPLICOM is not set
+CONFIG_AQTION=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AR5523=m
+# CONFIG_ARCH_APPLE is not set
+# CONFIG_ARCH_BCM4908 is not set
+CONFIG_ARCH_CANAAN=y
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_KEEMBAY is not set
+CONFIG_ARCH_MICROCHIP_POLARFIRE=y
+CONFIG_ARCH_MICROCHIP=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_R9A07G043 is not set
+CONFIG_ARCH_RANDOM=y
+# CONFIG_ARCH_REALTEK is not set
+# CONFIG_ARCH_RENESAS is not set
+# CONFIG_ARCH_RV32I is not set
+CONFIG_ARCH_RV64I=y
+# CONFIG_ARCH_S32 is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_SIFIVE=y
+CONFIG_ARCH_SOPHGO=y
+# CONFIG_ARCH_SPARX5 is not set
+CONFIG_ARCH_STARFIVE=y
+# CONFIG_ARCH_SUNXI is not set
+CONFIG_ARCH_THEAD=y
+CONFIG_ARCH_VIRT=y
+# CONFIG_ARCNET is not set
+CONFIG_ARM64_AMU_EXTN=y
+CONFIG_ARM64_E0PD=y
+CONFIG_ARM64_EPAN=y
+CONFIG_ARM64_ERRATUM_1319367=y
+CONFIG_ARM64_ERRATUM_1530923=y
+CONFIG_ARM64_ERRATUM_1542419=y
+CONFIG_ARM64_ERRATUM_2054223=y
+CONFIG_ARM64_ERRATUM_2067961=y
+CONFIG_ARM64_ERRATUM_2119858=y
+CONFIG_ARM64_ERRATUM_2139208=y
+CONFIG_ARM64_ERRATUM_2224489=y
+CONFIG_ARM64_ERRATUM_2253138=y
+CONFIG_ARM64_USE_LSE_ATOMICS=y
+CONFIG_ARM_CMN=m
+# CONFIG_ARM_MHU is not set
+# CONFIG_ARM_MHU_V2 is not set
+# CONFIG_ARM_MHU_V3 is not set
+CONFIG_ARM_PTDUMP_DEBUGFS=y
+# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
+# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set
+# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set
+# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
+CONFIG_ARM_SMCCC_SOC_ID=y
+# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set
+# CONFIG_AS3935 is not set
+# CONFIG_AS73211 is not set
+# CONFIG_ASUS_TF103C_DOCK is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE=m
+CONFIG_ASYNC_RAID6_TEST=m
+CONFIG_ASYNC_TX_DMA=y
+CONFIG_AT803X_PHY=m
+CONFIG_ATA_ACPI=y
+CONFIG_ATA_BMDMA=y
+CONFIG_ATA_FORCE=y
+CONFIG_ATA_GENERIC=m
+CONFIG_ATALK=m
+CONFIG_ATA_OVER_ETH=m
+CONFIG_ATA_PIIX=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_ATA_SFF=y
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA=y
+CONFIG_ATH10K_AHB=y
+CONFIG_ATH10K_DEBUGFS=y
+CONFIG_ATH10K_DEBUG=y
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+CONFIG_ATH10K_SDIO=m
+# CONFIG_ATH10K_SPECTRAL is not set
+CONFIG_ATH10K_TRACING=y
+CONFIG_ATH10K_USB=m
+# CONFIG_ATH11K_AHB is not set
+CONFIG_ATH11K_DEBUGFS=y
+CONFIG_ATH11K_DEBUG=y
+CONFIG_ATH11K=m
+CONFIG_ATH11K_PCI=m
+CONFIG_ATH11K_SPECTRAL=y
+CONFIG_ATH11K_TRACING=y
+CONFIG_ATH12K_DEBUGFS=y
+CONFIG_ATH12K_DEBUG=y
+CONFIG_ATH12K=m
+CONFIG_ATH12K_TRACING=y
+CONFIG_ATH5K_DEBUG=y
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_TRACER is not set
+CONFIG_ATH6KL_DEBUG=y
+CONFIG_ATH6KL=m
+CONFIG_ATH6KL_SDIO=m
+# CONFIG_ATH6KL_TRACING is not set
+CONFIG_ATH6KL_USB=m
+CONFIG_ATH9K_AHB=y
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+# CONFIG_ATH9K_COMMON_SPECTRAL is not set
+CONFIG_ATH9K_DEBUGFS=y
+# CONFIG_ATH9K_DYNACK is not set
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HWRNG is not set
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI_NO_EEPROM=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_PCOEM=y
+CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_STATION_STATISTICS is not set
+# CONFIG_ATH9K_WOW is not set
+CONFIG_ATH_COMMON=m
+CONFIG_ATH_DEBUG=y
+# CONFIG_ATH_TRACEPOINTS is not set
+CONFIG_ATL1C=m
+CONFIG_ATL1E=m
+CONFIG_ATL1=m
+CONFIG_ATL2=m
+# CONFIG_ATLAS_EZO_SENSOR is not set
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_ATM_BR2684=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_ENI_DEBUG is not set
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+# CONFIG_ATM_FORE200E is not set
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_LANAI is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM=m
+# CONFIG_ATM_MPOA is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_ATM_TCP=m
+CONFIG_ATOMIC64_SELFTEST=y
+CONFIG_ATP=m
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUXDISPLAY=y
+CONFIG_AX25_DAMA_SLAVE=y
+CONFIG_AX25=m
+# CONFIG_AX45MP_L2_CACHE is not set
+CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
+CONFIG_AXP20X_ADC=m
+CONFIG_AXP20X_POWER=m
+CONFIG_AXP288_ADC=m
+CONFIG_B43_BCMA_PIO=y
+CONFIG_B43_BCMA=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
+CONFIG_B43_DEBUG=y
+CONFIG_B43LEGACY_DEBUG=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY=m
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43=m
+CONFIG_B43_PHY_G=y
+CONFIG_B43_PHY_HT=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_SDIO=y
+CONFIG_B44=m
+CONFIG_B44_PCI=y
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SERDES=m
+CONFIG_B53_SPI_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+CONFIG_BACKLIGHT_ARCXCNN=m
+# CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GPIO is not set
+CONFIG_BACKLIGHT_KTD253=m
+# CONFIG_BACKLIGHT_KTD2801 is not set
+CONFIG_BACKLIGHT_KTZ8866=m
+CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
+# CONFIG_BACKLIGHT_LM3630A is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+CONFIG_BACKLIGHT_LP855X=m
+# CONFIG_BACKLIGHT_LV5207LP is not set
+CONFIG_BACKLIGHT_MP3309C=m
+CONFIG_BACKLIGHT_MT6370=m
+CONFIG_BACKLIGHT_PWM=m
+# CONFIG_BACKLIGHT_QCOM_WLED is not set
+CONFIG_BACKLIGHT_RT4831=m
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+CONFIG_BALLOON_COMPACTION=y
+# CONFIG_BARCO_P50_GPIO is not set
+CONFIG_BAREUDP=m
+CONFIG_BASE_FULL=y
+# CONFIG_BASE_SMALL is not set
+CONFIG_BATMAN_ADV_BATMAN_V=y
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+# CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_TRACING=y
+CONFIG_BATTERY_AXP20X=m
+# CONFIG_BATTERY_BQ27XXX is not set
+CONFIG_BATTERY_CW2015=m
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_MAX1720X=m
+# CONFIG_BATTERY_MAX1721X is not set
+CONFIG_BATTERY_RT5033=m
+CONFIG_BATTERY_SAMSUNG_SDI=y
+# CONFIG_BATTERY_SBS is not set
+CONFIG_BATTERY_SURFACE=m
+CONFIG_BATTERY_UG3105=m
+CONFIG_BAYCOM_EPP=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+# CONFIG_BCACHE_ASYNC_REGISTRATION is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+# CONFIG_BCACHE_DEBUG is not set
+CONFIG_BCACHEFS_DEBUG_TRANSACTIONS=y
+CONFIG_BCACHEFS_DEBUG=y
+# CONFIG_BCACHEFS_ERASURE_CODING is not set
+CONFIG_BCACHEFS_FS=m
+CONFIG_BCACHEFS_LOCK_TIME_STATS=y
+# CONFIG_BCACHEFS_NO_LATENCY_ACCT is not set
+CONFIG_BCACHEFS_POSIX_ACL=y
+CONFIG_BCACHEFS_QUOTA=y
+CONFIG_BCACHEFS_SIX_OPTIMISTIC_SPIN=y
+# CONFIG_BCACHEFS_TESTS is not set
+CONFIG_BCACHE=m
+CONFIG_BCM54140_PHY=m
+CONFIG_BCM7XXX_PHY=m
+# CONFIG_BCM84881_PHY is not set
+CONFIG_BCM87XX_PHY=m
+CONFIG_BCMA_BLOCKIO=y
+# CONFIG_BCMA_DEBUG is not set
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+# CONFIG_BCMA_HOST_SOC is not set
+CONFIG_BCMA=m
+CONFIG_BCMGENET=m
+# CONFIG_BCM_KONA_USB2_PHY is not set
+CONFIG_BCM_NET_PHYPTP=m
+CONFIG_BCM_VK=m
+CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
+CONFIG_BE2ISCSI=m
+CONFIG_BE2NET_BE2=y
+CONFIG_BE2NET_BE3=y
+# CONFIG_BE2NET_HWMON is not set
+CONFIG_BE2NET_LANCER=y
+CONFIG_BE2NET=m
+CONFIG_BE2NET_SKYHAWK=y
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BEFS_FS=m
+# CONFIG_BFQ_CGROUP_DEBUG is not set
+CONFIG_BFQ_GROUP_IOSCHED=y
+# CONFIG_BFS_FS is not set
+CONFIG_BH1750=m
+# CONFIG_BH1780 is not set
+CONFIG_BIG_KEYS=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_FLAT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_BINFMT_SCRIPT=y
+CONFIG_BITFIELD_KUNIT=m
+CONFIG_BITS_TEST=m
+CONFIG_BLK_CGROUP_FC_APPID=y
+CONFIG_BLK_CGROUP_IOCOST=y
+CONFIG_BLK_CGROUP_IOLATENCY=y
+CONFIG_BLK_CGROUP_IOPRIO=y
+CONFIG_BLK_CGROUP=y
+CONFIG_BLK_DEBUG_FS=y
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_BLK_DEV_DRBD=m
+CONFIG_BLK_DEV_FD=m
+# CONFIG_BLK_DEV_FD_RAWCMD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
+CONFIG_BLK_DEV_MD=y
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION=y
+CONFIG_BLK_DEV_NULL_BLK=m
+CONFIG_BLK_DEV_NVME=m
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_RBD=m
+CONFIG_BLK_DEV_RNBD_CLIENT=m
+CONFIG_BLK_DEV_RNBD_SERVER=m
+# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_THROTTLING_LOW is not set
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_BLKDEV_UBLK_LEGACY_OPCODES=y
+CONFIG_BLK_DEV_UBLK=m
+CONFIG_BLK_DEV_WRITE_MOUNTED=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_ZONED=y
+# CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK is not set
+CONFIG_BLK_INLINE_ENCRYPTION=y
+CONFIG_BLK_SED_OPAL=y
+CONFIG_BLK_WBT_MQ=y
+CONFIG_BLK_WBT=y
+CONFIG_BLOCK_LEGACY_AUTOLOAD=y
+CONFIG_BLOCK=y
+# CONFIG_BMA180 is not set
+# CONFIG_BMA220 is not set
+# CONFIG_BMA400 is not set
+CONFIG_BMC150_ACCEL=m
+CONFIG_BMC150_MAGN_I2C=m
+CONFIG_BMC150_MAGN_SPI=m
+CONFIG_BME680=m
+# CONFIG_BMG160 is not set
+# CONFIG_BMI088_ACCEL is not set
+CONFIG_BMI160_I2C=m
+CONFIG_BMI160_SPI=m
+CONFIG_BMI323_I2C=m
+CONFIG_BMI323_SPI=m
+CONFIG_BMP280=m
+CONFIG_BNA=m
+CONFIG_BNX2=m
+CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
+CONFIG_BNXT_HWMON=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
+CONFIG_BONDING=m
+# CONFIG_BOOT_CONFIG_EMBED is not set
+# CONFIG_BOOT_CONFIG_FORCE is not set
+CONFIG_BOOT_CONFIG=y
+# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOT_PRINTK_DELAY=y
+CONFIG_BOOTTIME_TRACING=y
+CONFIG_BOSCH_BNO055_I2C=m
+CONFIG_BOSCH_BNO055_SERIAL=m
+CONFIG_BOUNCE=y
+# CONFIG_BPFILTER is not set
+CONFIG_BPF_JIT_ALWAYS_ON=y
+CONFIG_BPF_JIT=y
+CONFIG_BPF_KPROBE_OVERRIDE=y
+CONFIG_BPF_LIRC_MODE2=y
+CONFIG_BPF_LSM=y
+CONFIG_BPF_PRELOAD_UMD=m
+CONFIG_BPF_PRELOAD=y
+CONFIG_BPF_STREAM_PARSER=y
+CONFIG_BPF_SYSCALL=y
+CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
+CONFIG_BPQETHER=m
+CONFIG_BQL=y
+CONFIG_BRANCH_PROFILE_NONE=y
+CONFIG_BRCMDBG=y
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PCIE=y
+CONFIG_BRCMFMAC_SDIO=y
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMSMAC=m
+CONFIG_BRCM_TRACING=y
+CONFIG_BRIDGE_CFM=y
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_MRP=y
+CONFIG_BRIDGE_NETFILTER=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_BROADCOM_PHY=m
+CONFIG_BSD_DISKLABEL=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BT_6LOWPAN=m
+CONFIG_BT_AOSPEXT=y
+CONFIG_BT_ATH3K=m
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_BREDR=y
+# CONFIG_BT_DEBUGFS is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBCM4377=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_MTK=y
+CONFIG_BT_HCIBTUSB_POLL_SYNC=y
+CONFIG_BT_HCIBTUSB_RTL=y
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_AG6XX=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_INTEL=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_MRVL=y
+CONFIG_BT_HCIUART_NOKIA=m
+CONFIG_BT_HCIUART_QCA=y
+# CONFIG_BT_HCIUART_RTL is not set
+CONFIG_BT_HCIUART_SERDEV=y
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_HIDP=m
+# CONFIG_BT_HS is not set
+CONFIG_BT_INTEL_PCIE=m
+CONFIG_BT_LEDS=y
+CONFIG_BT_LE_L2CAP_ECRED=y
+CONFIG_BT_LE=y
+CONFIG_BT=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_MSFTEXT=y
+CONFIG_BT_MTKSDIO=m
+CONFIG_BT_MTKUART=m
+CONFIG_BT_NXPUART=m
+CONFIG_BT_QCA=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BTRFS_ASSERT=y
+# CONFIG_BTRFS_DEBUG is not set
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_REF_VERIFY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+CONFIG_BTRFS_FS=y
+# CONFIG_BT_SELFTEST is not set
+# CONFIG_BTT is not set
+CONFIG_BT_VIRTIO=m
+CONFIG_BUG_ON_DATA_CORRUPTION=y
+CONFIG_BUG=y
+CONFIG_BUILD_SALT=""
+# CONFIG_C2PORT is not set
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_ERROR_INJECTION is not set
+CONFIG_CACHEFILES=m
+CONFIG_CACHEFILES_ONDEMAND=y
+CONFIG_CACHESTAT_SYSCALL=y
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_CAIF is not set
+CONFIG_CAN_8DEV_USB=m
+CONFIG_CAN_BCM=m
+CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_CAN327=m
+# CONFIG_CAN_CC770 is not set
+# CONFIG_CAN_C_CAN is not set
+CONFIG_CAN_CTUCANFD_PCI=m
+CONFIG_CAN_CTUCANFD_PLATFORM=m
+CONFIG_CAN_DEBUG_DEVICES=y
+CONFIG_CAN_DEV=m
+CONFIG_CAN_EMS_USB=m
+# CONFIG_CAN_ESD_402_PCI is not set
+CONFIG_CAN_ESD_USB2=m
+CONFIG_CAN_ESD_USB=m
+# CONFIG_CAN_ETAS_ES58X is not set
+CONFIG_CAN_F81604=m
+# CONFIG_CAN_FLEXCAN is not set
+# CONFIG_CAN_GRCAN is not set
+CONFIG_CAN_GS_USB=m
+CONFIG_CAN_GW=m
+CONFIG_CAN_HI311X=m
+CONFIG_CAN_IFI_CANFD=m
+CONFIG_CAN_ISOTP=m
+CONFIG_CAN_J1939=m
+# CONFIG_CAN_KVASER_PCIEFD is not set
+CONFIG_CAN_KVASER_USB=m
+CONFIG_CAN=m
+CONFIG_CAN_M_CAN=m
+CONFIG_CAN_M_CAN_PCI=m
+# CONFIG_CAN_M_CAN_PLATFORM is not set
+# CONFIG_CAN_M_CAN_TCAN4X5X is not set
+CONFIG_CAN_MCBA_USB=m
+CONFIG_CAN_MCP251XFD=m
+# CONFIG_CAN_MCP251XFD_SANITY is not set
+CONFIG_CAN_MCP251X=m
+CONFIG_CAN_NETLINK=y
+CONFIG_CAN_PEAK_PCIEFD=m
+CONFIG_CAN_PEAK_USB=m
+CONFIG_CAN_RAW=m
+# CONFIG_CAN_SJA1000 is not set
+CONFIG_CAN_SLCAN=m
+# CONFIG_CAN_SOFTING is not set
+CONFIG_CAN_SUN4I=m
+# CONFIG_CAN_UCAN is not set
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_VXCAN=m
+# CONFIG_CARDBUS is not set
+CONFIG_CARL9170_DEBUGFS=y
+# CONFIG_CARL9170_HWRNG is not set
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170=m
+CONFIG_CASSINI=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+# CONFIG_CC10001_ADC is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+CONFIG_CDROM_PKTCDVD=m
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CDX_CONTROLLER=m
+CONFIG_CEC_CH7322=m
+CONFIG_CEC_GPIO=m
+# CONFIG_CEC_PIN_ERROR_INJ is not set
+CONFIG_CEC_PIN=y
+# CONFIG_CEC_SECO is not set
+CONFIG_CEC_SECO_RC=y
+CONFIG_CEPH_FSCACHE=y
+CONFIG_CEPH_FS=m
+CONFIG_CEPH_FS_POSIX_ACL=y
+CONFIG_CEPH_FS_SECURITY_LABEL=y
+CONFIG_CEPH_LIB=m
+CONFIG_CEPH_LIB_PRETTYDEBUG=y
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+CONFIG_CFAG12864B=m
+CONFIG_CFAG12864B_RATE=20
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_DEBUGFS=y
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_KUNIT_TEST=m
+CONFIG_CFG80211=m
+# CONFIG_CFI_CLANG is not set
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_CGROUP_BPF=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_DEBUG=y
+CONFIG_CGROUP_DEVICE=y
+# CONFIG_CGROUP_FAVOR_DYNMODS is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_CGROUP_MISC=y
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_RDMA=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CGROUPS=y
+# CONFIG_CHARGER_ADP5061 is not set
+CONFIG_CHARGER_AXP20X=m
+CONFIG_CHARGER_BD99954=m
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
+# CONFIG_CHARGER_BQ24735 is not set
+CONFIG_CHARGER_BQ2515X=m
+CONFIG_CHARGER_BQ256XX=m
+# CONFIG_CHARGER_BQ25890 is not set
+# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
+CONFIG_CHARGER_CROS_PCHG=m
+# CONFIG_CHARGER_CROS_USBPD is not set
+# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_LP8727 is not set
+CONFIG_CHARGER_LT3651=m
+CONFIG_CHARGER_LTC4162L=m
+# CONFIG_CHARGER_MANAGER is not set
+CONFIG_CHARGER_MAX77650=m
+CONFIG_CHARGER_MAX77976=m
+# CONFIG_CHARGER_MAX8903 is not set
+CONFIG_CHARGER_MT6370=m
+# CONFIG_CHARGER_RT9455 is not set
+CONFIG_CHARGER_RT9467=m
+CONFIG_CHARGER_RT9471=m
+# CONFIG_CHARGER_SBS is not set
+CONFIG_CHARGER_SMB347=m
+CONFIG_CHARGER_SURFACE=m
+CONFIG_CHARGER_UCS1002=m
+CONFIG_CHARLCD_BL_FLASH=y
+# CONFIG_CHARLCD_BL_OFF is not set
+# CONFIG_CHARLCD_BL_ON is not set
+CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_CHECKSUM_KUNIT=m
+CONFIG_CHELSIO_INLINE_CRYPTO=y
+CONFIG_CHELSIO_IPSEC_INLINE=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4_DCB=y
+# CONFIG_CHELSIO_T4_FCOE is not set
+CONFIG_CHELSIO_T4=m
+CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_TLS_DEVICE=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_CHR_DEV_SG=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHROMEOS_ACPI=m
+CONFIG_CHROMEOS_PRIVACY_SCREEN=m
+CONFIG_CHROMEOS_TBMC=y
+CONFIG_CHROME_PLATFORMS=y
+CONFIG_CHT_DC_TI_PMIC_OPREGION=y
+CONFIG_CICADA_PHY=m
+CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set
+CONFIG_CIFS_DEBUG=y
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_FSCACHE=y
+CONFIG_CIFS=m
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_SMB_DIRECT is not set
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_SWN_UPCALL=y
+CONFIG_CIFS_UPCALL=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIO2_BRIDGE=y
+CONFIG_CLEANCACHE=y
+CONFIG_CLK_FD_KUNIT_TEST=m
+CONFIG_CLK_GATE_KUNIT_TEST=m
+# CONFIG_CLK_ICST is not set
+CONFIG_CLK_KUNIT_TEST=m
+# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLK_RASPBERRYPI is not set
+CONFIG_CLK_SIFIVE_PRCI=y
+CONFIG_CLK_SIFIVE=y
+CONFIG_CLK_SOPHGO_CV1800=y
+# CONFIG_CLK_SOPHGO_SG2042_PLL is not set
+# CONFIG_CLK_SP810 is not set
+CONFIG_CLK_STARFIVE_JH7100_AUDIO=m
+CONFIG_CLK_STARFIVE_JH7100=y
+CONFIG_CLK_STARFIVE_JH7110_AON=y
+CONFIG_CLK_STARFIVE_JH7110_ISP=y
+CONFIG_CLK_STARFIVE_JH7110_PLL=y
+CONFIG_CLK_STARFIVE_JH7110_STG=y
+CONFIG_CLK_STARFIVE_JH7110_SYS=y
+CONFIG_CLK_STARFIVE_JH7110_VOUT=y
+CONFIG_CLK_STARFIVE_JH71X0=y
+# CONFIG_CLK_SUNXI_CLOCKS is not set
+# CONFIG_CLK_SUNXI is not set
+# CONFIG_CLK_SUNXI_PRCM_SUN6I is not set
+# CONFIG_CLK_SUNXI_PRCM_SUN8I is not set
+# CONFIG_CLK_SUNXI_PRCM_SUN9I is not set
+CONFIG_CLK_THEAD_TH1520_AP=y
+CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100
+CONFIG_CLS_U32_MARK=y
+CONFIG_CLS_U32_PERF=y
+CONFIG_CM32181=m
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
+CONFIG_CM3605=m
+# CONFIG_CM36651 is not set
+CONFIG_CMA_AREAS=7
+# CONFIG_CMA_DEBUGFS is not set
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA is not set
+CONFIG_CMA_SYSFS=y
+CONFIG_CMDLINE=""
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+CONFIG_CMDLINE_KUNIT_TEST=m
+# CONFIG_CMDLINE_PARTITION is not set
+CONFIG_CMODEL_MEDANY=y
+# CONFIG_CMODEL_MEDLOW is not set
+CONFIG_CNIC=m
+CONFIG_CODA_FS=m
+# CONFIG_COMEDI is not set
+CONFIG_COMMAND_LINE_SIZE=4096
+CONFIG_COMMON_CLK_AXG_AUDIO=y
+CONFIG_COMMON_CLK_AXI_CLKGEN=m
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_FIXED_MMIO is not set
+# CONFIG_COMMON_CLK_FSL_FLEXSPI is not set
+# CONFIG_COMMON_CLK_FSL_SAI is not set
+# CONFIG_COMMON_CLK_LAN966X is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_MMP2_AUDIO is not set
+CONFIG_COMMON_CLK_PWM=m
+CONFIG_COMMON_CLK_RS9_PCIE=m
+# CONFIG_COMMON_CLK_SI514 is not set
+CONFIG_COMMON_CLK_SI521XX=y
+# CONFIG_COMMON_CLK_SI5341 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+CONFIG_COMMON_CLK_SI544=m
+# CONFIG_COMMON_CLK_SI570 is not set
+CONFIG_COMMON_CLK_VC3=m
+# CONFIG_COMMON_CLK_VC5 is not set
+CONFIG_COMMON_CLK_VC7=m
+# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
+CONFIG_COMMON_CLK=y
+CONFIG_COMPACTION=y
+CONFIG_COMPAT_32BIT_TIME=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_COMPAT is not set
+# CONFIG_COMPILE_TEST is not set
+CONFIG_CONFIGFS_FS=y
+CONFIG_CONNECTOR=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=3
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+# CONFIG_CONTEXT_TRACKING_USER_FORCE is not set
+CONFIG_CORDIC=m
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_COREDUMP=y
+# CONFIG_CORESIGHT_CPU_DEBUG_DEFAULT_ON is not set
+CONFIG_CORTINA_PHY=m
+# CONFIG_COUNTER is not set
+# CONFIG_CPU5_WDT is not set
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND 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_SCHEDUTIL is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPUFREQ_DT=m
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_THERMAL=y
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
+# CONFIG_CPU_IDLE_GOV_LADDER is not set
+# CONFIG_CPU_IDLE_GOV_TEO is not set
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_ISOLATION=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPUMASK_KUNIT_TEST=m
+CONFIG_CPUMASK_OFFSTACK=y
+CONFIG_CPU_MITIGATIONS=y
+CONFIG_CPUSETS=y
+# CONFIG_CPU_THERMAL is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_CRAMFS_MTD is not set
+CONFIG_CRASH_DUMP=y
+CONFIG_CRASH_HOTPLUG=y
+CONFIG_CRASH_MAX_MEMORY_RANGES=8192
+CONFIG_CRC16=y
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_SELFTEST is not set
+# CONFIG_CRC32_SLICEBY4 is not set
+CONFIG_CRC32_SLICEBY8=y
+CONFIG_CRC32=y
+CONFIG_CRC4=m
+CONFIG_CRC64=y
+CONFIG_CRC7=y
+CONFIG_CRC8=m
+CONFIG_CRC_CCITT=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC_T10DIF=y
+# CONFIG_CROS_EC_DEBUGFS is not set
+# CONFIG_CROS_EC is not set
+# CONFIG_CROS_EC_LIGHTBAR is not set
+CONFIG_CROS_EC_MKBP_PROXIMITY=m
+CONFIG_CROS_EC_RPMSG=m
+CONFIG_CROS_EC_SENSORHUB=m
+CONFIG_CROS_EC_TYPEC=m
+CONFIG_CROS_EC_UART=m
+CONFIG_CROS_EC_WATCHDOG=m
+CONFIG_CROS_HPS_I2C=m
+CONFIG_CROS_KBD_LED_BACKLIGHT=m
+CONFIG_CROS_KUNIT_EC_PROTO_TEST=m
+CONFIG_CROS_KUNIT=m
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CROS_TYPEC_SWITCH=m
+CONFIG_CROS_USBPD_LOGGER=m
+CONFIG_CROS_USBPD_NOTIFY=m
+CONFIG_CRYPTO_842=y
+CONFIG_CRYPTO_ADIANTUM=m
+CONFIG_CRYPTO_AEGIS128=m
+# CONFIG_CRYPTO_AES_ARM64 is not set
+CONFIG_CRYPTO_AES_RISCV64=y
+CONFIG_CRYPTO_AES_TI=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ANSI_CPRNG=m
+# CONFIG_CRYPTO_ARIA is not set
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_BLAKE2B=y
+CONFIG_CRYPTO_BLAKE2S=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_CHACHA20=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
+CONFIG_CRYPTO_CHACHA_RISCV64=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_CRC32C_VPMSUM=m
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_CTR=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
+CONFIG_CRYPTO_DEV_ATMEL_ECC=m
+CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m
+CONFIG_CRYPTO_DEV_CCP_DEBUGFS=y
+# CONFIG_CRYPTO_DEV_CCREE is not set
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_TEST is not set
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+# CONFIG_CRYPTO_DEV_HISI_HPRE is not set
+# CONFIG_CRYPTO_DEV_HISI_SEC2 is not set
+# CONFIG_CRYPTO_DEV_HISI_SEC is not set
+# CONFIG_CRYPTO_DEV_HISI_TRNG is not set
+CONFIG_CRYPTO_DEV_JH7110=m
+CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
+# CONFIG_CRYPTO_DEV_OCTEONTX_CPT is not set
+CONFIG_CRYPTO_DEV_QAT_420XX=m
+CONFIG_CRYPTO_DEV_QAT_4XXX=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION is not set
+# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
+CONFIG_CRYPTO_DEV_VIRTIO=m
+CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
+CONFIG_CRYPTO_DH=y
+CONFIG_CRYPTO_DRBG_CTR=y
+CONFIG_CRYPTO_DRBG_HASH=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_ECDSA=y
+CONFIG_CRYPTO_ECHAINIV=m
+CONFIG_CRYPTO_ECRDSA=m
+CONFIG_CRYPTO_ESSIV=m
+CONFIG_CRYPTO_FCRYPT=m
+# CONFIG_CRYPTO_FIPS_CUSTOM_VERSION is not set
+CONFIG_CRYPTO_FIPS_NAME="Linux Kernel Cryptographic API"
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_GHASH_RISCV64=y
+CONFIG_CRYPTO_GHASH=y
+CONFIG_CRYPTO_HCTR2=m
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_1024 is not set
+# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_128 is not set
+CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_2=y
+# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_8192 is not set
+CONFIG_CRYPTO_JITTERENTROPY_OSR=1
+# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set
+CONFIG_CRYPTO_KEYWRAP=m
+CONFIG_CRYPTO_LIB_BLAKE2S=m
+CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y
+CONFIG_CRYPTO_LIB_CHACHA=y
+CONFIG_CRYPTO_LIB_CURVE25519=m
+CONFIG_CRYPTO_LIB_POLY1305=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_LZ4HC=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+# CONFIG_CRYPTO_MANAGER_EXTRA_TESTS is not set
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_PCRYPT=m
+CONFIG_CRYPTO_POLY1305=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256_RISCV64=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA3=y
+CONFIG_CRYPTO_SHA512_RISCV64=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SIMD=y
+# CONFIG_CRYPTO_SM2 is not set
+# CONFIG_CRYPTO_SM3_GENERIC is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_SM3_RISCV64 is not set
+# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set
+# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set
+# CONFIG_CRYPTO_SM4_GENERIC is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_SM4_RISCV64 is not set
+# CONFIG_CRYPTO_STATS is not set
+CONFIG_CRYPTO_STREEBOG=m
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_USER_API_AEAD=y
+# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set
+CONFIG_CRYPTO_USER_API_HASH=y
+# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set
+CONFIG_CRYPTO_USER_API_RNG=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_USER=m
+CONFIG_CRYPTO_VMAC=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_XXHASH=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ZSTD=m
+# CONFIG_CSD_LOCK_WAIT_DEBUG_DEFAULT is not set
+CONFIG_CSD_LOCK_WAIT_DEBUG=y
+CONFIG_CUSE=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_CW1200_WLAN_SPI=m
+CONFIG_CXD2880_SPI_DRV=m
+# CONFIG_CX_ECAT is not set
+CONFIG_CXL_ACPI=m
+CONFIG_CXL_BUS=m
+CONFIG_CXL_MEM=m
+# CONFIG_CXL_MEM_RAW_COMMANDS is not set
+CONFIG_CXL_PCI=m
+CONFIG_CXL_PMEM=m
+CONFIG_CXL_PMU=m
+# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
+CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
+CONFIG_DA280=m
+CONFIG_DA311=m
+CONFIG_DA9063_WATCHDOG=m
+# CONFIG_DAMON_DBGFS_DEPRECATED is not set
+CONFIG_DAMON_DBGFS=y
+# CONFIG_DAMON_LRU_SORT is not set
+CONFIG_DAMON_PADDR=y
+CONFIG_DAMON_RECLAIM=y
+CONFIG_DAMON_SYSFS=y
+CONFIG_DAMON_VADDR=y
+CONFIG_DAMON=y
+CONFIG_DAVICOM_PHY=m
+CONFIG_DAX=y
+CONFIG_DCB=y
+# CONFIG_DDR is not set
+CONFIG_DE2104X_DSL=0
+CONFIG_DE2104X=m
+CONFIG_DEBUG_ATOMIC_SLEEP=y
+CONFIG_DEBUG_BOOT_PARAMS=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_CGROUP_REF is not set
+# CONFIG_DEBUG_CLOSURES is not set
+CONFIG_DEBUG_CREDENTIALS=y
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_ENTRY is not set
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set
+CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_DEBUG_HIGHMEM=y
+CONFIG_DEBUG_INFO_BTF_MODULES=y
+CONFIG_DEBUG_INFO_BTF=y
+# CONFIG_DEBUG_INFO_COMPRESSED is not set
+CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
+# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
+# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set
+# CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_DEBUG_INFO_DWARF5 is not set
+CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
+# CONFIG_DEBUG_INFO_NONE is not set
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_IRQFLAGS=y
+# CONFIG_DEBUG_KERNEL_DC is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_KMAP_LOCAL=y
+CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN=y
+CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
+CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE=40000
+# CONFIG_DEBUG_KMEMLEAK_TEST is not set
+CONFIG_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_KOBJECT_RELEASE is not set
+CONFIG_DEBUG_LIST=y
+CONFIG_DEBUG_LOCK_ALLOC=y
+# CONFIG_DEBUG_LOCKDEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_MAPLE_TREE is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_DEBUG_MISC=y
+CONFIG_DEBUG_MUTEXES=y
+CONFIG_DEBUG_NET=y
+CONFIG_DEBUG_NOTIFIERS=y
+CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
+CONFIG_DEBUG_OBJECTS_FREE=y
+CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
+CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
+# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
+CONFIG_DEBUG_OBJECTS_TIMERS=y
+CONFIG_DEBUG_OBJECTS_WORK=y
+CONFIG_DEBUG_OBJECTS=y
+# CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT is not set
+CONFIG_DEBUG_PAGEALLOC=y
+CONFIG_DEBUG_PAGE_REF=y
+CONFIG_DEBUG_PER_CPU_MAPS=y
+CONFIG_DEBUG_PERF_USE_VMALLOC=y
+# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_DEBUG_PLIST is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_RSEQ is not set
+CONFIG_DEBUG_RT_MUTEXES=y
+CONFIG_DEBUG_RWSEMS=y
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_DEBUG_SG=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_VM_MAPLE_TREE is not set
+CONFIG_DEBUG_VM_PGFLAGS=y
+CONFIG_DEBUG_VM_PGTABLE=y
+# CONFIG_DEBUG_VM_RB is not set
+CONFIG_DEBUG_VM_SHOOT_LAZIES=y
+# CONFIG_DEBUG_VM_VMACACHE is not set
+CONFIG_DEBUG_VM=y
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
+CONFIG_DEBUG_WX=y
+# CONFIG_DECNET is not set
+CONFIG_DEFAULT_CUBIC=y
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+# CONFIG_DEFAULT_RENO is not set
+# CONFIG_DEFAULT_SECURITY_DAC is not set
+CONFIG_DEFAULT_SECURITY_SELINUX=y
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEV_DAX_CXL=m
+CONFIG_DEV_DAX_HMEM=m
+# CONFIG_DEV_DAX_KMEM is not set
+CONFIG_DEV_DAX=m
+# CONFIG_DEV_DAX_PMEM_COMPAT is not set
+CONFIG_DEVMEM=y
+CONFIG_DEVPORT=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DEVTMPFS_SAFE=y
+CONFIG_DEVTMPFS=y
+CONFIG_DHT11=m
+CONFIG_DL2K=m
+# CONFIG_DLHL60D is not set
+CONFIG_DLM_DEBUG=y
+# CONFIG_DLM_DEPRECATED_API is not set
+CONFIG_DLM=m
+CONFIG_DLN2_ADC=m
+CONFIG_DM9051=m
+CONFIG_DM9102=m
+CONFIG_DMA_API_DEBUG_SG=y
+CONFIG_DMA_API_DEBUG=y
+CONFIG_DMABUF_DEBUG=y
+CONFIG_DMABUF_HEAPS_CMA=y
+CONFIG_DMABUF_HEAPS_SYSTEM=y
+CONFIG_DMABUF_HEAPS=y
+# CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_SELFTESTS is not set
+# CONFIG_DMABUF_SYSFS_STATS is not set
+# CONFIG_DMA_CMA is not set
+CONFIG_DMADEVICES_DEBUG=y
+CONFIG_DMADEVICES_VDEBUG=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+# CONFIG_DMA_FENCE_TRACE is not set
+# CONFIG_DMA_MAP_BENCHMARK is not set
+# CONFIG_DMA_NUMA_CMA is not set
+# CONFIG_DMAPOOL_TEST is not set
+# CONFIG_DMARD06 is not set
+# CONFIG_DMARD09 is not set
+CONFIG_DMARD10=m
+# CONFIG_DMA_RESTRICTED_POOL is not set
+# CONFIG_DMATEST is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_SMQ=m
+CONFIG_DM_CLONE=m
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+CONFIG_DM_DEBUG=y
+CONFIG_DM_DELAY=m
+CONFIG_DM_DUST=m
+CONFIG_DM_EBS=m
+CONFIG_DM_ERA=m
+CONFIG_DM_FLAKEY=m
+CONFIG_DMIID=y
+CONFIG_DM_INIT=y
+CONFIG_DM_INTEGRITY=m
+CONFIG_DMI_SYSFS=y
+CONFIG_DMI=y
+# CONFIG_DM_KUNIT_TEST is not set
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_LOG_WRITES=m
+CONFIG_DM_MIRROR=y
+CONFIG_DM_MULTIPATH_HST=m
+CONFIG_DM_MULTIPATH_IOA=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+CONFIG_DM_RAID=m
+CONFIG_DM_SNAPSHOT=y
+CONFIG_DM_SWITCH=m
+CONFIG_DM_THIN_PROVISIONING=m
+CONFIG_DM_UEVENT=y
+CONFIG_DM_UNSTRIPED=m
+CONFIG_DM_VDO=m
+CONFIG_DM_VERITY_FEC=y
+CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
+CONFIG_DM_WRITECACHE=m
+CONFIG_DM_ZERO=y
+CONFIG_DM_ZONED=m
+CONFIG_DNET=m
+CONFIG_DNOTIFY=y
+CONFIG_DNS_RESOLVER=m
+CONFIG_DP83640_PHY=m
+CONFIG_DP83822_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_DP83869_PHY=m
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83TD510_PHY is not set
+CONFIG_DP83TG720_PHY=m
+# CONFIG_DPM_WATCHDOG is not set
+CONFIG_DPOT_DAC=m
+# CONFIG_DPS310 is not set
+CONFIG_DRAGONRISE_FF=y
+CONFIG_DRBD_FAULT_INJECTION=y
+CONFIG_DRIVER_PE_KUNIT_TEST=m
+# CONFIG_DRM_ACCEL_QAIC is not set
+CONFIG_DRM_ACCEL=y
+CONFIG_DRM_AMD_ACP=y
+CONFIG_DRM_AMD_DC_HDCP=y
+CONFIG_DRM_AMD_DC_SI=y
+CONFIG_DRM_AMD_DC=y
+CONFIG_DRM_AMDGPU_CIK=y
+CONFIG_DRM_AMDGPU=m
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMDGPU_USERPTR=y
+# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
+CONFIG_DRM_AMD_SECURE_DISPLAY=y
+CONFIG_DRM_ANALOGIX_ANX6345=m
+CONFIG_DRM_ANALOGIX_ANX7625=m
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_ARCPGU is not set
+CONFIG_DRM_AST=m
+CONFIG_DRM_BOCHS=m
+# CONFIG_DRM_CDNS_DSI is not set
+# CONFIG_DRM_CDNS_MHDP8546 is not set
+CONFIG_DRM_CHIPONE_ICN6211=m
+CONFIG_DRM_CHRONTEL_CH7033=m
+CONFIG_DRM_CIRRUS_QEMU=m
+# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set
+# CONFIG_DRM_DEBUG_MM is not set
+# CONFIG_DRM_DEBUG_MODESET_LOCK is not set
+# CONFIG_DRM_DEBUG_SELFTEST is not set
+CONFIG_DRM_DISPLAY_CONNECTOR=m
+# CONFIG_DRM_DISPLAY_DEBUG_DP_TUNNEL_STATE is not set
+CONFIG_DRM_DISPLAY_DP_AUX_CEC=y
+CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV=y
+# CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG is not set
+CONFIG_DRM_DP_AUX_CHARDEV=y
+CONFIG_DRM_DP_CEC=y
+# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
+# CONFIG_DRM_DW_HDMI_I2S_AUDIO is not set
+# CONFIG_DRM_ETNAVIV is not set
+CONFIG_DRM_FBDEV_EMULATION=y
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_FSL_LDB is not set
+CONFIG_DRM_GM12U320=m
+CONFIG_DRM_GUD=m
+# CONFIG_DRM_HISI_HIBMC is not set
+CONFIG_DRM_HYPERV=m
+# CONFIG_DRM_I2C_ADV7511 is not set
+CONFIG_DRM_I2C_CH7006=m
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+CONFIG_DRM_I2C_SIL164=m
+# CONFIG_DRM_IMX_LCDIF is not set
+CONFIG_DRM_ITE_IT6505=m
+# CONFIG_DRM_ITE_IT66121 is not set
+# CONFIG_DRM_KOMEDA is not set
+CONFIG_DRM_KUNIT_TEST=m
+# CONFIG_DRM_LEGACY is not set
+CONFIG_DRM_LOAD_EDID_FIRMWARE=y
+# CONFIG_DRM_LOGICVC is not set
+CONFIG_DRM_LONTIUM_LT8912B=m
+# CONFIG_DRM_LONTIUM_LT9211 is not set
+# CONFIG_DRM_LONTIUM_LT9611 is not set
+CONFIG_DRM_LONTIUM_LT9611UXC=m
+# CONFIG_DRM_LOONGSON is not set
+# CONFIG_DRM_LVDS_CODEC is not set
+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
+CONFIG_DRM_MGAG200=m
+# CONFIG_DRM_MSM_GPU_SUDO is not set
+# CONFIG_DRM_MSM_VALIDATE_XML is not set
+# CONFIG_DRM_MXSFB is not set
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
+CONFIG_DRM_NOUVEAU=m
+# CONFIG_DRM_NOUVEAU_SVM is not set
+# CONFIG_DRM_NWL_MIPI_DSI is not set
+# CONFIG_DRM_NXP_PTN3460 is not set
+# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set
+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
+# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set
+# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set
+CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0=m
+# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
+# CONFIG_DRM_PANEL_BOE_TH101MB31UIG002_28A is not set
+CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
+CONFIG_DRM_PANEL_BRIDGE=y
+CONFIG_DRM_PANEL_DSI_CM=m
+# CONFIG_DRM_PANEL_EBBG_FT8719 is not set
+# CONFIG_DRM_PANEL_EDP is not set
+CONFIG_DRM_PANEL_ELIDA_KD35T133=m
+CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
+CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
+# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
+# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
+# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
+# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
+CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
+# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set
+CONFIG_DRM_PANEL_JADARD_JD9365DA_H3=m
+CONFIG_DRM_PANEL_JDI_LPM102A188A=m
+# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
+CONFIG_DRM_PANEL_JDI_R63452=m
+# CONFIG_DRM_PANEL_KHADAS_TS050 is not set
+# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set
+# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set
+# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
+# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
+# CONFIG_DRM_PANEL_LG_LG4573 is not set
+# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
+# CONFIG_DRM_PANEL_LVDS is not set
+CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
+CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
+CONFIG_DRM_PANEL_MIPI_DBI=m
+# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set
+CONFIG_DRM_PANEL_NEWVISION_NV3051D=m
+# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set
+CONFIG_DRM_PANEL_NOVATEK_NT35510=m
+CONFIG_DRM_PANEL_NOVATEK_NT35560=m
+CONFIG_DRM_PANEL_NOVATEK_NT35950=m
+# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT36672E is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set
+# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set
+# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set
+CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m
+# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set
+# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
+# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
+# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set
+# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
+CONFIG_DRM_PANEL_RAYDIUM_RM692E5=m
+CONFIG_DRM_PANEL_RAYDIUM_RM69380=m
+CONFIG_DRM_PANEL_RONBO_RB070D30=m
+CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20=m
+CONFIG_DRM_PANEL_SAMSUNG_DB7430=m
+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E3FA7 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
+CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m
+# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set
+CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m
+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set
+CONFIG_DRM_PANEL_SEIKO_43WVF1G=m
+# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set
+# CONFIG_DRM_PANEL_SIMPLE is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
+# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set
+# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set
+CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521=m
+CONFIG_DRM_PANEL_STARTEK_KD070FHFID015=m
+# CONFIG_DRM_PANEL_SYNAPTICS_R63353 is not set
+# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set
+# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set
+# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set
+# CONFIG_DRM_PANEL_TPO_TPG110 is not set
+# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set
+CONFIG_DRM_PANEL_VISIONOX_R66451=m
+CONFIG_DRM_PANEL_VISIONOX_RM69299=m
+# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set
+CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m
+# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set
+CONFIG_DRM_PANEL=y
+# CONFIG_DRM_PARADE_PS8622 is not set
+CONFIG_DRM_PARADE_PS8640=m
+CONFIG_DRM_QXL=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_RADEON_USERPTR=y
+# CONFIG_DRM_RCAR_DW_HDMI is not set
+# CONFIG_DRM_RCAR_LVDS is not set
+# CONFIG_DRM_RCAR_MIPI_DSI is not set
+# CONFIG_DRM_RCAR_USE_LVDS is not set
+# CONFIG_DRM_RCAR_USE_MIPI_DSI is not set
+CONFIG_DRM_SAMSUNG_DSIM=m
+CONFIG_DRM_SII902X=m
+CONFIG_DRM_SII9234=m
+# CONFIG_DRM_SIL_SII8620 is not set
+CONFIG_DRM_SIMPLE_BRIDGE=m
+CONFIG_DRM_SIMPLEDRM=y
+CONFIG_DRM_SSD130X_I2C=m
+CONFIG_DRM_SSD130X=m
+CONFIG_DRM_SSD130X_SPI=m
+# CONFIG_DRM_THINE_THC63LVD1024 is not set
+CONFIG_DRM_TI_DLPC3433=m
+# CONFIG_DRM_TIDSS is not set
+# CONFIG_DRM_TI_SN65DSI83 is not set
+CONFIG_DRM_TI_SN65DSI86=m
+CONFIG_DRM_TI_TFP410=m
+CONFIG_DRM_TI_TPD12S015=m
+CONFIG_DRM_TOSHIBA_TC358762=m
+CONFIG_DRM_TOSHIBA_TC358764=m
+# CONFIG_DRM_TOSHIBA_TC358767 is not set
+CONFIG_DRM_TOSHIBA_TC358768=m
+CONFIG_DRM_TOSHIBA_TC358775=m
+# CONFIG_DRM_TTM_KUNIT_TEST is not set
+CONFIG_DRM_UDL=m
+CONFIG_DRM_USE_DYNAMIC_DEBUG=y
+# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VGEM=m
+CONFIG_DRM_VIRTIO_GPU_KMS=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_VKMS=m
+CONFIG_DRM_VMWGFX_FBCON=y
+CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX_MKSSTATS is not set
+CONFIG_DRM_WERROR=y
+# CONFIG_DRM_XE_DEBUG is not set
+# CONFIG_DRM_XE_DEBUG_MEM is not set
+# CONFIG_DRM_XE_DEBUG_SRIOV is not set
+# CONFIG_DRM_XE_DEBUG_VM is not set
+CONFIG_DRM_XE_DISPLAY=y
+CONFIG_DRM_XE_ENABLE_SCHEDTIMEOUT_LIMIT=y
+CONFIG_DRM_XE_FORCE_PROBE=""
+CONFIG_DRM_XE_JOB_TIMEOUT_MAX=10000
+CONFIG_DRM_XE_JOB_TIMEOUT_MIN=1
+# CONFIG_DRM_XE_KUNIT_TEST is not set
+# CONFIG_DRM_XE_LARGE_GUC_BUFFER is not set
+CONFIG_DRM_XE=m
+# CONFIG_DRM_XEN_FRONTEND is not set
+CONFIG_DRM_XE_PREEMPT_TIMEOUT=640000
+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX=10000000
+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN=1
+# CONFIG_DRM_XE_SIMPLE_ERROR_CAPTURE is not set
+CONFIG_DRM_XE_TIMESLICE_MAX=10000000
+CONFIG_DRM_XE_TIMESLICE_MIN=1
+# CONFIG_DRM_XE_USERPTR_INVAL_INJECT is not set
+# CONFIG_DRM_XE_WERROR is not set
+CONFIG_DRM=y
+# CONFIG_DS1682 is not set
+# CONFIG_DS1803 is not set
+# CONFIG_DS4424 is not set
+CONFIG_DTPM_CPU=y
+CONFIG_DTPM_DEVFREQ=y
+CONFIG_DTPM=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_DUMMY_IRQ is not set
+CONFIG_DUMMY=m
+CONFIG_DVB_AS102=m
+# CONFIG_DVB_AV7110 is not set
+CONFIG_DVB_B2C2_FLEXCOP=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+CONFIG_DVB_BT8XX=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_CORE=m
+CONFIG_DVB_CXD2099=m
+# CONFIG_DVB_CXD2880 is not set
+CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
+# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
+# CONFIG_DVB_DIB9000 is not set
+CONFIG_DVB_DM1105=m
+# CONFIG_DVB_DUMMY_FE is not set
+CONFIG_DVB_DYNAMIC_MINORS=y
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_HOPPER=m
+# CONFIG_DVB_LGS8GL5 is not set
+# CONFIG_DVB_LNBH29 is not set
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_MAX_ADAPTERS=16
+# CONFIG_DVB_MMAP is not set
+# CONFIG_DVB_MN88443X is not set
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
+CONFIG_DVB_NETUP_UNIDVB=m
+CONFIG_DVB_NET=y
+CONFIG_DVB_NGENE=m
+# CONFIG_DVB_PLATFORM_DRIVERS is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_PT1=m
+# CONFIG_DVB_PT3 is not set
+# CONFIG_DVB_S5H1432 is not set
+CONFIG_DVB_SMIPCIE=m
+# CONFIG_DVB_TEST_DRIVERS is not set
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+# CONFIG_DVB_ULE_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_CXUSB_ANALOG=y
+CONFIG_DVB_USB_CXUSB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_DIB0700=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_ZD1301=m
+CONFIG_DW_AXI_DMAC=m
+CONFIG_DWC_PCIE_PMU=m
+CONFIG_DW_DMAC_CORE=m
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=m
+CONFIG_DW_EDMA=m
+CONFIG_DW_EDMA_PCIE=m
+CONFIG_DWMAC_DWC_QOS_ETH=m
+CONFIG_DWMAC_GENERIC=m
+# CONFIG_DWMAC_INTEL_PLAT is not set
+# CONFIG_DWMAC_LOONGSON is not set
+CONFIG_DWMAC_STARFIVE=m
+# CONFIG_DW_WATCHDOG is not set
+CONFIG_DW_XDATA_PCIE=m
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_E1000E=m
+CONFIG_E1000=m
+CONFIG_E100=m
+CONFIG_EARLY_PRINTK_DBGP=y
+CONFIG_EARLY_PRINTK_USB_XDBC=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EBC_C384_WDT is not set
+CONFIG_ECHO=m
+CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS_MESSAGING is not set
+CONFIG_EDAC_DEBUG=y
+CONFIG_EDAC_DMC520=m
+CONFIG_EDAC_GHES=y
+CONFIG_EDAC_IGEN6=m
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_EDAC_SIFIVE=y
+# CONFIG_EDAC_SYNOPSYS is not set
+CONFIG_EDAC=y
+CONFIG_EEPROM_93CX6=m
+# CONFIG_EEPROM_93XX46 is not set
+CONFIG_EEPROM_AT24=m
+# CONFIG_EEPROM_AT25 is not set
+CONFIG_EEPROM_EE1004=m
+CONFIG_EEPROM_IDT_89HPESX=m
+CONFIG_EEPROM_MAX6875=m
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
+CONFIG_EFI_COCO_SECRET=y
+CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
+# CONFIG_EFI_DISABLE_PCI_DMA is not set
+# CONFIG_EFI_DISABLE_RUNTIME is not set
+CONFIG_EFI_HANDOVER_PROTOCOL=y
+CONFIG_EFI_PARTITION=y
+CONFIG_EFI_PGT_DUMP=y
+# CONFIG_EFI_RCI2_TABLE is not set
+CONFIG_EFI_SECRET=m
+CONFIG_EFI_SOFT_RESERVE=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI_TEST=m
+CONFIG_EFIVAR_FS=y
+CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
+CONFIG_EFI_VARS_PSTORE=y
+CONFIG_EFI=y
+CONFIG_EFI_ZBOOT=y
+# CONFIG_EFS_FS is not set
+CONFIG_ELF_CORE=y
+# CONFIG_EMBEDDED is not set
+# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
+CONFIG_ENERGY_MODEL=y
+CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
+CONFIG_ENVELOPE_DETECTOR=m
+CONFIG_EPIC100=m
+CONFIG_EPOLL=y
+CONFIG_EQUALIZER=m
+# CONFIG_EROFS_FS_DEBUG is not set
+CONFIG_EROFS_FS=m
+CONFIG_EROFS_FS_ONDEMAND=y
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
+CONFIG_EROFS_FS_POSIX_ACL=y
+CONFIG_EROFS_FS_SECURITY=y
+CONFIG_EROFS_FS_XATTR=y
+CONFIG_EROFS_FS_ZIP_DEFLATE=y
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+CONFIG_EROFS_FS_ZIP_ZSTD=y
+CONFIG_ERRATA_ANDES_CMO=y
+CONFIG_ERRATA_ANDES=y
+CONFIG_ERRATA_SIFIVE_CIP_1200=y
+CONFIG_ERRATA_SIFIVE_CIP_453=y
+CONFIG_ERRATA_SIFIVE=y
+# CONFIG_ERRATA_STARFIVE_JH7100 is not set
+CONFIG_ERRATA_THEAD_CMO=y
+CONFIG_ERRATA_THEAD_MAE=y
+CONFIG_ERRATA_THEAD_PMU=y
+CONFIG_ERRATA_THEAD=y
+CONFIG_ET131X=m
+CONFIG_ETHERNET=y
+CONFIG_ETHOC=m
+CONFIG_ETHTOOL_NETLINK=y
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_EVM_ADD_XATTRS is not set
+CONFIG_EVM_ATTR_FSUUID=y
+# CONFIG_EVM_LOAD_X509 is not set
+CONFIG_EVM=y
+CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_EXFAT_FS=m
+CONFIG_EXPERT=y
+CONFIG_EXPORTFS=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_DEBUG=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_KUNIT_TESTS=m
+CONFIG_EXT4_USE_FOR_EXT2=y
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_FSA9480 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_PTN5150 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_TUSB320=m
+# CONFIG_EXTCON_USB_GPIO is not set
+CONFIG_EXTCON=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_EZX_PCAP is not set
+# CONFIG_F2FS_CHECK_FS is not set
+# CONFIG_F2FS_FAULT_INJECTION is not set
+CONFIG_F2FS_FS_COMPRESSION=y
+CONFIG_F2FS_FS_LZ4HC=y
+CONFIG_F2FS_FS_LZ4=y
+CONFIG_F2FS_FS_LZORLE=y
+CONFIG_F2FS_FS_LZO=y
+CONFIG_F2FS_FS=m
+CONFIG_F2FS_FS_POSIX_ACL=y
+CONFIG_F2FS_FS_SECURITY=y
+CONFIG_F2FS_FS_XATTR=y
+CONFIG_F2FS_FS_ZSTD=y
+CONFIG_F2FS_IOSTAT=y
+CONFIG_F2FS_STAT_FS=y
+CONFIG_F2FS_UNFAIR_RWSEM=y
+CONFIG_FAIL_FUNCTION=y
+# CONFIG_FAIL_FUTEX is not set
+CONFIG_FAIL_IO_TIMEOUT=y
+CONFIG_FAIL_MAKE_REQUEST=y
+CONFIG_FAIL_MMC_REQUEST=y
+CONFIG_FAILOVER=m
+CONFIG_FAIL_PAGE_ALLOC=y
+CONFIG_FAILSLAB=y
+CONFIG_FAIL_SUNRPC=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_FANOTIFY=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+CONFIG_FAT_FS=m
+CONFIG_FAT_KUNIT_TEST=m
+# CONFIG_FAULT_INJECTION_CONFIGFS is not set
+CONFIG_FAULT_INJECTION_DEBUG_FS=y
+CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
+# CONFIG_FAULT_INJECTION_USERCOPY is not set
+CONFIG_FAULT_INJECTION=y
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_DA8XX is not set
+# CONFIG_FB_DEVICE is not set
+CONFIG_FB_EFI=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_GOLDFISH is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_HYPERV is not set
+# CONFIG_FB_I740 is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_IMX is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_MATROX_G is not set
+# CONFIG_FB_MATROX_I2C is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_MATROX_MILLENIUM is not set
+# CONFIG_FB_MATROX_MYSTIQUE is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_METRONOME is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_OF is not set
+# CONFIG_FB_OPENCORES is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+CONFIG_FB_SIMPLE=y
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_SM501 is not set
+# CONFIG_FB_SM712 is not set
+# CONFIG_FB_SM750 is not set
+# CONFIG_FB_SMSCUFX is not set
+CONFIG_FB_SSD1307=m
+# CONFIG_FB_TFT is not set
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_VESA=y
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_VIA is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_XILINX is not set
+CONFIG_FB=y
+CONFIG_FCOE=m
+# CONFIG_FDDI is not set
+CONFIG_FEALNX=m
+CONFIG_FHANDLE=y
+# CONFIG_FIELDBUS_DEV is not set
+CONFIG_FILE_LOCKING=y
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
+# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
+# CONFIG_FIREWIRE_NOSY is not set
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FIRMWARE_MEMMAP is not set
+CONFIG_FIXED_PHY=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_FM10K=m
+# CONFIG_FONTS is not set
+CONFIG_FORCEDETH=m
+# CONFIG_FORCE_NR_CPUS is not set
+CONFIG_FORTIFY_KUNIT_TEST=m
+CONFIG_FORTIFY_SOURCE=y
+CONFIG_FPGA_BRIDGE=m
+CONFIG_FPGA_DFL_AFU=m
+CONFIG_FPGA_DFL_EMIF=m
+CONFIG_FPGA_DFL_FME_BRIDGE=m
+CONFIG_FPGA_DFL_FME=m
+CONFIG_FPGA_DFL_FME_MGR=m
+CONFIG_FPGA_DFL_FME_REGION=m
+CONFIG_FPGA_DFL=m
+CONFIG_FPGA_DFL_NIOS_INTEL_PAC_N3000=m
+CONFIG_FPGA_DFL_PCI=m
+CONFIG_FPGA=m
+CONFIG_FPGA_M10_BMC_SEC_UPDATE=m
+CONFIG_FPGA_MGR_ALTERA_CVP=m
+CONFIG_FPGA_MGR_ALTERA_PS_SPI=m
+CONFIG_FPGA_MGR_ICE40_SPI=m
+CONFIG_FPGA_MGR_LATTICE_SYSCONFIG_SPI=m
+CONFIG_FPGA_MGR_MACHXO2_SPI=m
+# CONFIG_FPGA_MGR_MICROCHIP_SPI is not set
+CONFIG_FPGA_MGR_XILINX_SELECTMAP=m
+CONFIG_FPGA_MGR_XILINX_SPI=m
+CONFIG_FPGA_MGR_ZYNQ_FPGA=m
+CONFIG_FPGA_REGION=m
+CONFIG_FPROBE_EVENTS=y
+CONFIG_FPROBE=y
+CONFIG_FPU=y
+CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAME_POINTER=y
+CONFIG_FRAME_WARN=2048
+CONFIG_FRONTSWAP=y
+CONFIG_FSCACHE_STATS=y
+CONFIG_FSCACHE=y
+CONFIG_FS_DAX=y
+CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
+CONFIG_FS_ENCRYPTION=y
+# CONFIG_FSI is not set
+# CONFIG_FSL_EDMA is not set
+# CONFIG_FSL_ENETC_IERB is not set
+# CONFIG_FSL_ENETC is not set
+# CONFIG_FSL_ENETC_MDIO is not set
+# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_PQ_MDIO is not set
+# CONFIG_FSL_QDMA is not set
+# CONFIG_FSL_RCPM is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_FSNOTIFY=y
+CONFIG_FS_PID=y
+# CONFIG_FS_VERITY_BUILTIN_SIGNATURES is not set
+# CONFIG_FS_VERITY_DEBUG is not set
+CONFIG_FS_VERITY=y
+# CONFIG_FTL is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_RECORD_RECURSION is not set
+# CONFIG_FTRACE_SORT_STARTUP_TEST is not set
+# CONFIG_FTRACE_STARTUP_TEST is not set
+CONFIG_FTRACE_SYSCALLS=y
+# CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING is not set
+CONFIG_FTRACE=y
+CONFIG_FUEL_GAUGE_MM8013=m
+# CONFIG_FUJITSU_ES is not set
+# CONFIG_FUNCTION_ERROR_INJECTION is not set
+CONFIG_FUNCTION_GRAPH_RETVAL=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUN_ETH=m
+CONFIG_FUSE_DAX=y
+CONFIG_FUSE_FS=m
+CONFIG_FUSE_PASSTHROUGH=y
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_LAN=m
+CONFIG_FUSION_LOGGING=y
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION=y
+CONFIG_FUTEX=y
+CONFIG_FW_CACHE=y
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set
+CONFIG_FW_LOADER_COMPRESS_XZ=y
+CONFIG_FW_LOADER_COMPRESS=y
+CONFIG_FW_LOADER_COMPRESS_ZSTD=y
+CONFIG_FW_LOADER_DEBUG=y
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER=y
+CONFIG_FW_UPLOAD=y
+CONFIG_FXAS21002C=m
+# CONFIG_FXLS8962AF_I2C is not set
+# CONFIG_FXLS8962AF_SPI is not set
+CONFIG_FXOS8700_I2C=m
+CONFIG_FXOS8700_SPI=m
+CONFIG_GACT_PROB=y
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set
+# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set
+# CONFIG_GCC_PLUGINS is not set
+# CONFIG_GCC_PLUGIN_STACKLEAK is not set
+# CONFIG_GCOV_KERNEL is not set
+# CONFIG_GDB_SCRIPTS is not set
+# CONFIG_GENERIC_ADC_BATTERY is not set
+# CONFIG_GENERIC_ADC_THERMAL is not set
+# CONFIG_GENERIC_CPU is not set
+CONFIG_GENERIC_IRQ_DEBUGFS=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENEVE=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_GENWQE is not set
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_GFS2_FS=m
+# CONFIG_GIGABYTE_WMI is not set
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_GNSS=m
+CONFIG_GNSS_MTK_SERIAL=m
+CONFIG_GNSS_SIRF_SERIAL=m
+CONFIG_GNSS_UBX_SERIAL=m
+CONFIG_GNSS_USB=m
+# CONFIG_GOLDFISH_AUDIO is not set
+# CONFIG_GOLDFISH_PIPE is not set
+# CONFIG_GOLDFISH_TTY is not set
+CONFIG_GOLDFISH=y
+# CONFIG_GOOGLE_FIRMWARE is not set
+CONFIG_GP2AP002=m
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ADNP is not set
+# CONFIG_GPIO_ADP5588 is not set
+CONFIG_GPIO_AGGREGATOR=m
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_AMD_FCH is not set
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_BCM_XGS_IPROC is not set
+CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_BT8XX=m
+CONFIG_GPIO_CADENCE=m
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CROS_EC=m
+CONFIG_GPIO_DLN2=m
+CONFIG_GPIO_DS4520=m
+# CONFIG_GPIO_DWAPB is not set
+CONFIG_GPIO_EXAR=m
+# CONFIG_GPIO_FTGPIO010 is not set
+CONFIG_GPIO_FXL6408=m
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_GW_PLD is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_IT87 is not set
+# CONFIG_GPIO_LATCH is not set
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_GPIOLIB=y
+# CONFIG_GPIO_LOGICVC is not set
+# CONFIG_GPIO_MAX3191X is not set
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MAX732X is not set
+CONFIG_GPIO_MAX77650=m
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_MC33880 is not set
+CONFIG_GPIO_MLXBF2=m
+# CONFIG_GPIO_MOCKUP is not set
+CONFIG_GPIO_MXC=m
+# CONFIG_GPIO_PCA953X_IRQ is not set
+CONFIG_GPIO_PCA953X=m
+# CONFIG_GPIO_PCA9570 is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_PCIE_IDIO_24 is not set
+CONFIG_GPIO_PCI_IDIO_16=m
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_PL061 is not set
+# CONFIG_GPIO_RDC321X is not set
+# CONFIG_GPIO_SAMA5D2_PIOBU is not set
+# CONFIG_GPIO_SCH311X is not set
+CONFIG_GPIO_SIFIVE=y
+CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
+CONFIG_GPIO_SYSCON=m
+# CONFIG_GPIO_SYSFS is not set
+# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS65219=m
+# CONFIG_GPIO_TS4900 is not set
+# CONFIG_GPIO_VIPERBOARD is not set
+CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
+# CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_GPIO_WINBOND is not set
+CONFIG_GPIO_WM8994=m
+# CONFIG_GPIO_WS16C48 is not set
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_XRA1403 is not set
+CONFIG_GP_PCI1XXXX=m
+CONFIG_GREENASIA_FF=y
+# CONFIG_GREYBUS is not set
+# CONFIG_GS_FPGABOOT is not set
+CONFIG_GTP=m
+CONFIG_GUP_TEST=y
+CONFIG_GVE=m
+# CONFIG_HABANA_AI is not set
+CONFIG_HAMACHI=m
+CONFIG_HAMRADIO=y
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_HAPPYMEAL=m
+CONFIG_HARDENED_USERCOPY=y
+# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set
+CONFIG_HARDLOCKUP_DETECTOR=y
+CONFIG_HASH_KUNIT_TEST=m
+CONFIG_HASHTABLE_KUNIT_TEST=m
+CONFIG_HD44780=m
+# CONFIG_HDC100X is not set
+CONFIG_HDC2010=m
+# CONFIG_HDC3020 is not set
+CONFIG_HEADERS_INSTALL=y
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_HI6421V600_IRQ=m
+# CONFIG_HI8435 is not set
+# CONFIG_HIBERNATION_COMP_LZ4 is not set
+CONFIG_HIBERNATION_COMP_LZO=y
+CONFIG_HIBERNATION_SNAPSHOT_DEV=y
+CONFIG_HIBERNATION=y
+CONFIG_HID_A4TECH=m
+CONFIG_HID_ACCUTOUCH=m
+CONFIG_HID_ACRUX_FF=y
+CONFIG_HID_ACRUX=m
+CONFIG_HID_ALPS=m
+CONFIG_HID_APPLEIR=m
+CONFIG_HID_APPLE=m
+# CONFIG_HID_ASUS is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HID_BELKIN=m
+CONFIG_HID_BETOP_FF=m
+CONFIG_HID_BIGBEN_FF=m
+CONFIG_HID_BPF=y
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CMEDIA=m
+CONFIG_HID_CORSAIR=m
+CONFIG_HID_COUGAR=m
+CONFIG_HID_CP2112=m
+CONFIG_HID_CREATIVE_SB0540=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_HID_ELAN=m
+CONFIG_HID_ELECOM=m
+CONFIG_HID_ELO=m
+CONFIG_HID_EMS_FF=m
+CONFIG_HID_EVISION=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_FT260=m
+CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GENERIC=y
+CONFIG_HID_GFRM=m
+CONFIG_HID_GLORIOUS=m
+# CONFIG_HID_GOOGLE_HAMMER is not set
+CONFIG_HID_GOOGLE_STADIA_FF=m
+CONFIG_HID_GREENASIA=m
+CONFIG_HID_GT683R=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HID_HYPERV_MOUSE=m
+CONFIG_HID_ICADE=m
+CONFIG_HID_ITE=m
+CONFIG_HID_JABRA=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KEYTOUCH=m
+CONFIG_HID_KUNIT_TEST=m
+CONFIG_HID_KYE=m
+CONFIG_HID_LCPOWER=m
+CONFIG_HID_LED=m
+CONFIG_HID_LENOVO=m
+CONFIG_HID_LETSKETCH=m
+CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
+CONFIG_HID_LOGITECH=m
+CONFIG_HID_MACALLY=m
+CONFIG_HID_MAGICMOUSE=y
+CONFIG_HID_MALTRON=m
+CONFIG_HID_MAYFLASH=m
+# CONFIG_HID_MCP2200 is not set
+CONFIG_HID_MCP2221=m
+CONFIG_HID_MEGAWORLD_FF=m
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_MULTITOUCH=m
+CONFIG_HID_NINTENDO=m
+CONFIG_HID_NTI=m
+CONFIG_HID_NTRIG=y
+CONFIG_HID_NVIDIA_SHIELD=m
+CONFIG_HID_ORTEK=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_HID_PENMOUNT=m
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_PICOLCD_BACKLIGHT=y
+CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PICOLCD_FB=y
+CONFIG_HID_PICOLCD_LCD=y
+CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PICOLCD=m
+CONFIG_HID_PID=y
+CONFIG_HID_PLANTRONICS=m
+CONFIG_HID_PLAYSTATION=m
+CONFIG_HID_PRIMAX=m
+CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_PXRC=m
+CONFIG_HIDRAW=y
+CONFIG_HID_RAZER=m
+# CONFIG_HID_REDRAGON is not set
+CONFIG_HID_RETRODE=m
+CONFIG_HID_RMI=m
+CONFIG_HID_ROCCAT=m
+CONFIG_HID_SAITEK=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SEMITEK=m
+CONFIG_HID_SENSOR_ACCEL_3D=m
+CONFIG_HID_SENSOR_ALS=m
+CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+CONFIG_HID_SENSOR_DEVICE_ROTATION=m
+CONFIG_HID_SENSOR_GYRO_3D=m
+CONFIG_HID_SENSOR_HUB=m
+CONFIG_HID_SENSOR_HUMIDITY=m
+CONFIG_HID_SENSOR_IIO_COMMON=m
+CONFIG_HID_SENSOR_IIO_TRIGGER=m
+CONFIG_HID_SENSOR_INCLINOMETER_3D=m
+CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+CONFIG_HID_SENSOR_TEMP=m
+CONFIG_HID_SIGMAMICRO=m
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
+CONFIG_HID_STEAM=m
+CONFIG_HID_STEELSERIES=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID_THINGM=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_HID_TIVO=m
+CONFIG_HID_TOPRE=m
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_U2FZERO=m
+CONFIG_HID_UCLOGIC=m
+CONFIG_HID_UDRAW_PS3=m
+CONFIG_HID_VIEWSONIC=m
+CONFIG_HID_VIVALDI=m
+# CONFIG_HID_VRC2 is not set
+CONFIG_HID_WACOM=m
+CONFIG_HID_WALTOP=m
+CONFIG_HID_WIIMOTE=m
+CONFIG_HID_WINWING=m
+CONFIG_HID_XIAOMI=m
+CONFIG_HID_XINMO=m
+CONFIG_HID=y
+CONFIG_HID_ZEROPLUS=m
+CONFIG_HID_ZYDACRON=m
+CONFIG_HIGH_RES_TIMERS=y
+# CONFIG_HIPPI is not set
+# CONFIG_HISI_DMA is not set
+CONFIG_HISI_HIKEY_USB=m
+# CONFIG_HISI_PCIE_PMU is not set
+# CONFIG_HIST_TRIGGERS_DEBUG is not set
+CONFIG_HIST_TRIGGERS=y
+CONFIG_HMC425=m
+# CONFIG_HMC6352 is not set
+CONFIG_HOLTEK_FF=y
+CONFIG_HOTPLUG_CPU=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=y
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_PCIE=y
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HP03 is not set
+# CONFIG_HP206C is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_HP_ILO is not set
+CONFIG_HSA_AMD_SVM=y
+CONFIG_HSA_AMD=y
+# CONFIG_HSC030PA is not set
+# CONFIG_HSI is not set
+CONFIG_HSR=m
+# CONFIG_HSU_DMA is not set
+CONFIG_HT16K33=m
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTE is not set
+CONFIG_HTS221=m
+# CONFIG_HTU21 is not set
+CONFIG_HUGETLBFS=y
+# CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set
+# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
+CONFIG_HUGETLB_PAGE=y
+# CONFIG_HVC_RISCV_SBI is not set
+CONFIG_HW_CONSOLE=y
+CONFIG_HWLAT_TRACER=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_HWMON=y
+CONFIG_HWPOISON_INJECT=m
+CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y
+# CONFIG_HW_RANDOM_BA431 is not set
+# CONFIG_HW_RANDOM_CCTRNG is not set
+CONFIG_HW_RANDOM_JH7110=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_TPM=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_HW_RANDOM_XIPHERA=m
+CONFIG_HW_RANDOM=y
+CONFIG_HWSPINLOCK=y
+# CONFIG_HX711 is not set
+CONFIG_HYPERV_BALLOON=m
+CONFIG_HYPERV_IOMMU=y
+CONFIG_HYPERV_KEYBOARD=m
+CONFIG_HYPERV=m
+CONFIG_HYPERV_NET=m
+CONFIG_HYPERV_STORAGE=m
+# CONFIG_HYPERV_TESTING is not set
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
+CONFIG_HZ_1000=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_ALGOPCF=m
+# 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_AMD756_S4882 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_AMD_MP2=m
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
+CONFIG_I2C_ATR=m
+# CONFIG_I2C_CADENCE is not set
+# CONFIG_I2C_CBUS_GPIO is not set
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CP2615=m
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEMUX_PINCTRL is not set
+CONFIG_I2C_DESIGNWARE_PCI=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_I2C_DESIGNWARE_SLAVE=y
+CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_DLN2=m
+# CONFIG_I2C_EG20T is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_FSI is not set
+CONFIG_I2C_GPIO_FAULT_INJECTOR=y
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_HID_ACPI=m
+CONFIG_I2C_HID_OF_ELAN=m
+# CONFIG_I2C_HID_OF_GOODIX is not set
+# CONFIG_I2C_HID_OF is not set
+CONFIG_I2C_HID=y
+# CONFIG_I2C_HISI is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_MICROCHIP_CORE is not set
+CONFIG_I2C_MLXBF=m
+CONFIG_I2C_MLXCPLD=m
+# CONFIG_I2C_MUX_GPIO is not set
+CONFIG_I2C_MUX_GPMUX=m
+CONFIG_I2C_MUX_LTC4306=m
+CONFIG_I2C_MUX=m
+CONFIG_I2C_MUX_MLXCPLD=m
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PCA954x is not set
+# CONFIG_I2C_MUX_PINCTRL is not set
+# CONFIG_I2C_MUX_REG is not set
+CONFIG_I2C_NFORCE2=m
+# CONFIG_I2C_NFORCE2_S4985 is not set
+# CONFIG_I2C_NOMADIK is not set
+CONFIG_I2C_NVIDIA_GPU=m
+CONFIG_I2C_OCORES=y
+CONFIG_I2C_PCA_PLATFORM=m
+CONFIG_I2C_PCI1XXXX=m
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_QCOM_CCI is not set
+# CONFIG_I2C_RK3X is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+CONFIG_I2C_SCMI=m
+CONFIG_I2C_SI470X=m
+# CONFIG_I2C_SI4713 is not set
+CONFIG_I2C_SIMTEC=m
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+CONFIG_I2C_SLAVE_EEPROM=m
+# CONFIG_I2C_SLAVE_TESTUNIT is not set
+CONFIG_I2C_SLAVE=y
+CONFIG_I2C_SMBUS=m
+CONFIG_I2C_STUB=m
+# CONFIG_I2C_TAOS_EVM is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VIPERBOARD is not set
+CONFIG_I2C_VIRTIO=m
+# CONFIG_I2C_XILINX is not set
+CONFIG_I2C=y
+CONFIG_I2C_ZHAOXIN=m
+# CONFIG_I3C is not set
+# CONFIG_I40E_DCB is not set
+CONFIG_I40E=m
+CONFIG_I40EVF=m
+CONFIG_I6300ESB_WDT=m
+# CONFIG_I8K is not set
+# CONFIG_IAQCORE is not set
+CONFIG_ICE_HWMON=y
+CONFIG_ICE_HWTS=y
+CONFIG_ICE=m
+CONFIG_ICE_SWITCHDEV=y
+CONFIG_ICP10100=m
+CONFIG_ICPLUS_PHY=m
+# CONFIG_ICS932S401 is not set
+# CONFIG_IDLE_INJECT is not set
+CONFIG_IDLE_PAGE_TRACKING=y
+CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
+CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_IEEE802154_ADF7242=m
+# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
+CONFIG_IEEE802154_AT86RF230=m
+CONFIG_IEEE802154_ATUSB=m
+# CONFIG_IEEE802154_CA8210_DEBUGFS is not set
+CONFIG_IEEE802154_CA8210=m
+CONFIG_IEEE802154_CC2520=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKELB=m
+# CONFIG_IEEE802154_HWSIM is not set
+CONFIG_IEEE802154=m
+CONFIG_IEEE802154_MCR20A=m
+CONFIG_IEEE802154_MRF24J40=m
+# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
+CONFIG_IEEE802154_SOCKET=m
+CONFIG_IFB=m
+CONFIG_IFCVF=m
+CONFIG_IGB_DCA=y
+CONFIG_IGB_HWMON=y
+CONFIG_IGB=m
+CONFIG_IGBVF=m
+CONFIG_IGC=m
+CONFIG_IIO_BUFFER_CB=m
+CONFIG_IIO_BUFFER_DMAENGINE=m
+CONFIG_IIO_BUFFER_DMA=m
+CONFIG_IIO_BUFFER_HW_CONSUMER=m
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_CONFIGFS=m
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m
+CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE=m
+CONFIG_IIO_FORMAT_KUNIT_TEST=m
+CONFIG_IIO_GTS_KUNIT_TEST=m
+# CONFIG_IIO_HRTIMER_TRIGGER is not set
+CONFIG_IIO_INTERRUPT_TRIGGER=m
+CONFIG_IIO_KFIFO_BUF=m
+CONFIG_IIO_KX022A_I2C=m
+CONFIG_IIO_KX022A_SPI=m
+CONFIG_IIO=m
+CONFIG_IIO_MUX=m
+CONFIG_IIO_RESCALE_KUNIT_TEST=m
+CONFIG_IIO_RESCALE=m
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_IIO_SSP_SENSORHUB is not set
+CONFIG_IIO_ST_ACCEL_3AXIS=m
+CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
+CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m
+CONFIG_IIO_ST_GYRO_3AXIS=m
+CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
+CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
+CONFIG_IIO_ST_LSM6DSX=m
+# CONFIG_IIO_ST_LSM9DS0 is not set
+CONFIG_IIO_ST_MAGN_3AXIS=m
+CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
+CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+# CONFIG_IIO_ST_PRESS is not set
+CONFIG_IIO_SW_DEVICE=m
+CONFIG_IIO_SW_TRIGGER=m
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+CONFIG_IIO_TIGHTLOOP_TRIGGER=m
+CONFIG_IIO_TRIGGERED_BUFFER=m
+CONFIG_IIO_TRIGGERED_EVENT=m
+CONFIG_IIO_TRIGGER=y
+# CONFIG_IKCONFIG is not set
+CONFIG_IKHEADERS=m
+CONFIG_IMA_APPRAISE_BOOTPARAM=y
+# CONFIG_IMA_APPRAISE_BUILD_POLICY is not set
+CONFIG_IMA_APPRAISE_MODSIG=y
+CONFIG_IMA_APPRAISE=y
+CONFIG_IMA_ARCH_POLICY=y
+# CONFIG_IMA_BLACKLIST_KEYRING is not set
+# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set
+CONFIG_IMA_DEFAULT_HASH="sha256"
+CONFIG_IMA_DEFAULT_HASH_SHA256=y
+# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set
+# CONFIG_IMA_DISABLE_HTABLE is not set
+CONFIG_IMA_KEXEC=y
+CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY=y
+# CONFIG_IMA_LOAD_X509 is not set
+CONFIG_IMA_LSM_RULES=y
+CONFIG_IMA_MEASURE_PCR_IDX=10
+CONFIG_IMA_NG_TEMPLATE=y
+CONFIG_IMA_READ_POLICY=y
+# CONFIG_IMA_SIG_TEMPLATE is not set
+# CONFIG_IMA_TEMPLATE is not set
+CONFIG_IMA_WRITE_POLICY=y
+CONFIG_IMA=y
+# CONFIG_IMG_ASCII_LCD is not set
+# CONFIG_INA2XX_ADC is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESPINTCP=y
+CONFIG_INET6_ESP=m
+CONFIG_INET6_ESP_OFFLOAD=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET_AH=m
+CONFIG_INET_DIAG_DESTROY=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_ESPINTCP=y
+CONFIG_INET_ESP=m
+CONFIG_INET_ESP_OFFLOAD=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_MPTCP_DIAG=y
+CONFIG_INET_RAW_DIAG=y
+CONFIG_INET_TABLE_PERTURB_ORDER=16
+CONFIG_INET_TCP_DIAG=y
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_UDP_DIAG=y
+CONFIG_INET=y
+CONFIG_INFINIBAND_ADDR_TRANS=y
+# CONFIG_INFINIBAND_BNXT_RE is not set
+CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_EFA=m
+CONFIG_INFINIBAND_ERDMA=m
+CONFIG_INFINIBAND_IPOIB_CM=y
+CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IRDMA=m
+CONFIG_INFINIBAND_ISER=m
+CONFIG_INFINIBAND_ISERT=m
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_OCRDMA=m
+CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
+CONFIG_INFINIBAND_QEDR=m
+CONFIG_INFINIBAND_QIB_DCA=y
+CONFIG_INFINIBAND_QIB=m
+CONFIG_INFINIBAND_RDMAVT=m
+CONFIG_INFINIBAND_RTRS_CLIENT=m
+CONFIG_INFINIBAND_RTRS_SERVER=m
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_SRPT=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USNIC=m
+# CONFIG_INFINIBAND_VMWARE_PVRDMA is not set
+# CONFIG_INFTL is not set
+# CONFIG_INIT_MLOCKED_ON_FREE_DEFAULT_ON is not set
+CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
+# CONFIG_INITRAMFS_PRESERVE_MTIME is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_INIT_STACK_ALL_PATTERN is not set
+CONFIG_INIT_STACK_ALL_ZERO=y
+# CONFIG_INIT_STACK_NONE is not set
+CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_ADXL34X is not set
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_ATLAS_BTNS=m
+# CONFIG_INPUT_ATMEL_CAPTOUCH is not set
+CONFIG_INPUT_AXP20X_PEK=m
+# CONFIG_INPUT_BMA150 is not set
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_CMA3000_I2C=m
+CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
+# CONFIG_INPUT_DA7280_HAPTICS is not set
+CONFIG_INPUT_DA9063_ONKEY=m
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+CONFIG_INPUT_E3X0_BUTTON=m
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_GPIO_BEEPER is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+CONFIG_INPUT_GPIO_VIBRA=m
+# CONFIG_INPUT_IBM_PANEL is not set
+CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_IMS_PCU is not set
+CONFIG_INPUT_IQS269A=m
+CONFIG_INPUT_IQS626A=m
+CONFIG_INPUT_IQS7222=m
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KUNIT_TEST=m
+CONFIG_INPUT_KXTJ9=m
+CONFIG_INPUT_LEDS=y
+CONFIG_INPUT_MATRIXKMAP=m
+CONFIG_INPUT_MAX77650_ONKEY=m
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_PM8XXX_VIBRATOR=m
+CONFIG_INPUT_PMIC8XXX_PWRKEY=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
+CONFIG_INPUT_REGULATOR_HAPTIC=m
+CONFIG_INPUT_RK805_PWRKEY=m
+CONFIG_INPUT_RT5120_PWRKEY=m
+CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_TABLET=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_WISTRON_BTNS=m
+CONFIG_INPUT=y
+CONFIG_INPUT_YEALINK=m
+CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
+CONFIG_INTEGRITY_AUDIT=y
+CONFIG_INTEGRITY_CA_MACHINE_KEYRING_MAX=y
+CONFIG_INTEGRITY_CA_MACHINE_KEYRING=y
+CONFIG_INTEGRITY_MACHINE_KEYRING=y
+CONFIG_INTEGRITY_PLATFORM_KEYRING=y
+CONFIG_INTEGRITY_SIGNATURE=y
+CONFIG_INTEGRITY_TRUSTED_KEYRING=y
+CONFIG_INTEGRITY=y
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_INTEL_IDXD_COMPAT is not set
+CONFIG_INTEL_IDXD=m
+# CONFIG_INTEL_IDXD_PERFMON is not set
+# CONFIG_INTEL_IOMMU_DEBUGFS is not set
+# CONFIG_INTEL_ISHTP_ECLITE is not set
+# CONFIG_INTEL_LDMA is not set
+# CONFIG_INTEL_MEI_PXP is not set
+# CONFIG_INTEL_PMT_CLASS is not set
+# CONFIG_INTEL_PMT_CRASHLOG is not set
+# CONFIG_INTEL_PMT_TELEMETRY is not set
+# CONFIG_INTEL_SAR_INT1092 is not set
+# CONFIG_INTEL_SCU_PCI is not set
+# CONFIG_INTEL_SCU_PLATFORM is not set
+CONFIG_INTEL_SOC_PMIC_CHTDC_TI=y
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_INTEL_TCC_COOLING is not set
+# CONFIG_INTEL_TH is not set
+CONFIG_INTEL_UNCORE_FREQ_CONTROL=m
+# CONFIG_INTEL_WMI_SBL_FW_UPDATE is not set
+CONFIG_INTEL_XWAY_PHY=m
+# CONFIG_INTERCONNECT_QCOM_SM6350 is not set
+CONFIG_INTERCONNECT=y
+# CONFIG_INTERVAL_TREE_TEST is not set
+CONFIG_INV_ICM42600_I2C=m
+CONFIG_INV_ICM42600_SPI=m
+# CONFIG_INV_MPU6050_I2C is not set
+# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_INV_MPU6050_SPI is not set
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_NONE is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+CONFIG_IOMMU_DEBUGFS=y
+CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
+# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMUFD_TEST=y
+CONFIG_IOMMUFD=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_IONIC=m
+CONFIG_IOSCHED_BFQ=y
+CONFIG_IOSM=m
+CONFIG_IO_STRICT_DEVMEM=y
+CONFIG_IO_URING=y
+# CONFIG_IP5XXX_POWER is not set
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_SRH=m
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
+# CONFIG_IPACK_BUS is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IPC_NS=y
+# CONFIG_IP_DCCP is not set
+CONFIG_IP_FIB_TRIE_STATS=y
+# CONFIG_IPMB_DEVICE_INTERFACE is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_HANDLER=m
+CONFIG_IPMI_IPMB=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_POWEROFF=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_IP_PNP is not set
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_SCTP=m
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMAC=m
+CONFIG_IP_SET_HASH_IPMARK=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
+CONFIG_IP_SET_LIST_SET=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IPU_BRIDGE=m
+CONFIG_IPV6_GRE=m
+CONFIG_IPV6_ILA=m
+CONFIG_IPV6_IOAM6_LWTUNNEL=y
+CONFIG_IPV6_MIP6=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_IPV6_PIMSM_V2=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_RPL_LWTUNNEL=y
+CONFIG_IPV6_SEG6_HMAC=y
+CONFIG_IPV6_SEG6_LWTUNNEL=y
+CONFIG_IPV6_SIT_6RD=y
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_VTI=m
+CONFIG_IPV6=y
+CONFIG_IPVLAN=m
+CONFIG_IP_VS_DEBUG=y
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_FTP=m
+CONFIG_IP_VS_IPV6=y
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS=m
+CONFIG_IP_VS_MH=m
+CONFIG_IP_VS_MH_TAB_INDEX=12
+CONFIG_IP_VS_NQ=m
+CONFIG_IP_VS_OVF=m
+CONFIG_IP_VS_PE_SIP=m
+CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_SCTP=y
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SH_TAB_BITS=8
+CONFIG_IP_VS_TAB_BITS=12
+CONFIG_IP_VS_TWOS=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IPVTAP=m
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_IR_ENE=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
+CONFIG_IR_HIX5HD2=m
+CONFIG_IR_IGORPLUGUSB=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_IMON_DECODER=m
+CONFIG_IR_IMON=m
+CONFIG_IR_IMON_RAW=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_IRQ_STACKS=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_RCMM_DECODER=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_SANYO_DECODER=m
+# CONFIG_IRSD200 is not set
+CONFIG_IR_SERIAL=m
+CONFIG_IR_SERIAL_TRANSMITTER=y
+CONFIG_IR_SHARP_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_SPI=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_TOY=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_XMP_DECODER=m
+# CONFIG_ISA_BUS is not set
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+CONFIG_ISCSI_BOOT_SYSFS=m
+# CONFIG_ISCSI_IBFT is not set
+CONFIG_ISCSI_TARGET_CXGB4=m
+CONFIG_ISCSI_TARGET=m
+CONFIG_ISCSI_TCP=m
+# CONFIG_ISDN is not set
+CONFIG_ISL29003=m
+CONFIG_ISL29020=m
+# CONFIG_ISL29125 is not set
+# CONFIG_ISL29501 is not set
+# CONFIG_ISL76682 is not set
+CONFIG_ISO9660_FS=m
+CONFIG_IS_SIGNED_TYPE_KUNIT_TEST=m
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_ITCO_WDT=m
+# CONFIG_ITG3200 is not set
+CONFIG_IWL3945=m
+CONFIG_IWL4965=m
+CONFIG_IWLDVM=m
+CONFIG_IWLEGACY_DEBUGFS=y
+CONFIG_IWLEGACY_DEBUG=y
+CONFIG_IWLEGACY=m
+# CONFIG_IWLMEI is not set
+CONFIG_IWLMVM=m
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+CONFIG_IWLWIFI_DEBUGFS=y
+CONFIG_IWLWIFI_DEBUG=y
+CONFIG_IWLWIFI_DEVICE_TRACING=y
+CONFIG_IWLWIFI=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGBE_DCB=y
+CONFIG_IXGBE_HWMON=y
+CONFIG_IXGBE_IPSEC=y
+CONFIG_IXGBE=m
+CONFIG_IXGBEVF_IPSEC=y
+CONFIG_IXGBEVF=m
+CONFIG_IXGB=m
+CONFIG_JBD2_DEBUG=y
+CONFIG_JBD2=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFS_DEBUG is not set
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_JH71XX_PMU=y
+CONFIG_JME=m
+CONFIG_JOLIET=y
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADC=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_ANALOG=m
+# CONFIG_JOYSTICK_AS5011 is not set
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_DB9=m
+# CONFIG_JOYSTICK_FSIA6B is not set
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_IFORCE_232=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_JOYDUMP=m
+# CONFIG_JOYSTICK_MAGELLAN is not set
+CONFIG_JOYSTICK_PSXPAD_SPI_FF=y
+CONFIG_JOYSTICK_PSXPAD_SPI=m
+CONFIG_JOYSTICK_PXRC=m
+CONFIG_JOYSTICK_QWIIC=m
+# CONFIG_JOYSTICK_SEESAW is not set
+# CONFIG_JOYSTICK_SENSEHAT is not set
+CONFIG_JOYSTICK_SIDEWINDER=m
+# CONFIG_JOYSTICK_SPACEBALL is not set
+# CONFIG_JOYSTICK_SPACEORB is not set
+# CONFIG_JOYSTICK_STINGER is not set
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+# CONFIG_JOYSTICK_TWIDJOY is not set
+CONFIG_JOYSTICK_WALKERA0701=m
+# CONFIG_JOYSTICK_WARRIOR is not set
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+CONFIG_JOYSTICK_XPAD=m
+# CONFIG_JOYSTICK_ZHENHUA is not set
+# CONFIG_JSA1212 is not set
+CONFIG_JUMP_LABEL=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_SELFTEST is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_KASAN_EXTRA_INFO is not set
+CONFIG_KASAN_GENERIC=y
+CONFIG_KASAN_INLINE=y
+CONFIG_KASAN_KUNIT_TEST=m
+# CONFIG_KASAN_MODULE_TEST is not set
+# CONFIG_KASAN_OUTLINE is not set
+CONFIG_KASAN_VMALLOC=y
+CONFIG_KASAN=y
+# CONFIG_KCOV is not set
+# CONFIG_KCSAN is not set
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KDB_DEFAULT_ENABLE=0x0
+CONFIG_KDB_KEYBOARD=y
+CONFIG_KEBA_CP500=m
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_LZ4 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_UNCOMPRESSED is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_ZSTD is not set
+CONFIG_KEXEC_FILE=y
+CONFIG_KEXEC_IMAGE_VERIFY_SIG=y
+CONFIG_KEXEC_SIG=y
+CONFIG_KEXEC=y
+# CONFIG_KEYBOARD_ADC is not set
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+# CONFIG_KEYBOARD_APPLESPI is not set
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_BCM is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+CONFIG_KEYBOARD_CYPRESS_SF=m
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_GOLDFISH_EVENTS is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MATRIX 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_OMAP4 is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_PINEPHONE is not set
+CONFIG_KEYBOARD_PMIC8XXX=m
+CONFIG_KEYBOARD_QT1050=m
+CONFIG_KEYBOARD_QT1070=m
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+CONFIG_KEYBOARD_TM2_TOUCHKEY=m
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_KEY_DH_OPERATIONS=y
+CONFIG_KEY_NOTIFICATIONS=y
+CONFIG_KEYS_REQUEST_CACHE=y
+CONFIG_KEYS=y
+# CONFIG_KFENCE_DEFERRABLE is not set
+# CONFIG_KFENCE is not set
+CONFIG_KFENCE_KUNIT_TEST=m
+CONFIG_KFENCE_NUM_OBJECTS=255
+CONFIG_KFENCE_SAMPLE_INTERVAL=100
+# CONFIG_KFENCE_STATIC_KEYS is not set
+CONFIG_KFENCE_STRESS_TEST_FAULTS=0
+CONFIG_KGDB_HONOUR_BLOCKLIST=y
+CONFIG_KGDB_KDB=y
+CONFIG_KGDB_LOW_LEVEL_TRAP=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+# CONFIG_KGDB_TESTS_ON_BOOT is not set
+CONFIG_KGDB_TESTS=y
+CONFIG_KGDB=y
+# CONFIG_KMX61 is not set
+CONFIG_KPROBE_EVENT_GEN_TEST=m
+# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set
+CONFIG_KPROBE_EVENTS=y
+CONFIG_KPROBES_SANITY_TEST=m
+CONFIG_KPROBES=y
+# CONFIG_KS7010 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
+CONFIG_KSM=y
+CONFIG_KSZ884X_PCI=m
+CONFIG_KUNIT_ALL_TESTS=m
+CONFIG_KUNIT_DEBUGFS=y
+# CONFIG_KUNIT_DEFAULT_ENABLED is not set
+CONFIG_KUNIT_EXAMPLE_TEST=m
+# CONFIG_KUNIT_FAULT_TEST is not set
+CONFIG_KUNIT=m
+CONFIG_KUNIT_TEST=m
+CONFIG_KVM_MAX_NR_VCPUS=4096
+CONFIG_KVM_PROVE_MMU=y
+CONFIG_KVM_SMM=y
+# CONFIG_KVM_WERROR is not set
+CONFIG_KVM_XEN=y
+CONFIG_KVM=y
+CONFIG_KXCJK1013=m
+# CONFIG_KXSD9 is not set
+CONFIG_L2TP_DEBUGFS=m
+CONFIG_L2TP_ETH=m
+CONFIG_L2TP_IP=m
+CONFIG_L2TP=m
+CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
+CONFIG_LAN966X_SWITCH=m
+# CONFIG_LAPB is not set
+CONFIG_LATENCYTOP=y
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_LCD2S is not set
+# CONFIG_LCD_AMS369FG06 is not set
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_HX8357 is not set
+# CONFIG_LCD_ILI922X is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_L4F00242T03 is not set
+# CONFIG_LCD_LMS283GF05 is not set
+# CONFIG_LCD_LMS501KF03 is not set
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_OTM3225A is not set
+CONFIG_LCD_PLATFORM=m
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+# CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is not set
+CONFIG_LDISC_AUTOLOAD=y
+# CONFIG_LDM_DEBUG is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AN30259A=m
+# CONFIG_LEDS_ARIEL is not set
+CONFIG_LEDS_AS3645A=m
+CONFIG_LEDS_AW200XX=m
+# CONFIG_LEDS_AW2013 is not set
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_BD2606MVV is not set
+# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_BLINKM=m
+CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
+CONFIG_LEDS_CLASS_FLASH=m
+CONFIG_LEDS_CLASS_MULTICOLOR=m
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_EL15203000 is not set
+# CONFIG_LEDS_GPIO is not set
+CONFIG_LEDS_GROUP_MULTICOLOR=m
+# CONFIG_LEDS_IS31FL319X is not set
+CONFIG_LEDS_IS31FL32XX=m
+CONFIG_LEDS_KTD202X=m
+# CONFIG_LEDS_KTD2692 is not set
+# CONFIG_LEDS_LGM is not set
+CONFIG_LEDS_LM3530=m
+CONFIG_LEDS_LM3532=m
+# CONFIG_LEDS_LM355x is not set
+CONFIG_LEDS_LM3601X=m
+# CONFIG_LEDS_LM36274 is not set
+# CONFIG_LEDS_LM3642 is not set
+CONFIG_LEDS_LM3692X=m
+# CONFIG_LEDS_LM3697 is not set
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP3952=m
+CONFIG_LEDS_LP50XX=m
+# CONFIG_LEDS_LP55XX_COMMON is not set
+# CONFIG_LEDS_LP8860 is not set
+CONFIG_LEDS_LT3593=m
+CONFIG_LEDS_MAX5970=m
+CONFIG_LEDS_MAX77650=m
+CONFIG_LEDS_MLXCPLD=m
+CONFIG_LEDS_MLXREG=m
+CONFIG_LEDS_NCP5623=m
+CONFIG_LEDS_NIC78BX=m
+# CONFIG_LEDS_OT200 is not set
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+CONFIG_LEDS_PCA995X=m
+CONFIG_LEDS_PWM=m
+CONFIG_LEDS_PWM_MULTICOLOR=m
+CONFIG_LEDS_REGULATOR=m
+# CONFIG_LEDS_RT4505 is not set
+# CONFIG_LEDS_RT8515 is not set
+# CONFIG_LEDS_SGM3140 is not set
+# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
+CONFIG_LEDS_SYSCON=y
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TI_LMU_COMMON is not set
+# CONFIG_LEDS_TLC591XX is not set
+CONFIG_LEDS_TRIGGER_ACTIVITY=m
+CONFIG_LEDS_TRIGGER_AUDIO=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+CONFIG_LEDS_TRIGGER_DISK=y
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
+CONFIG_LEDS_TRIGGER_MTD=y
+CONFIG_LEDS_TRIGGER_NETDEV=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_PANIC=y
+CONFIG_LEDS_TRIGGER_PATTERN=m
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_TTY=m
+CONFIG_LEDS_USER=m
+CONFIG_LED_TRIGGER_PHY=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_LEGACY_TIOCSTI is not set
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+CONFIG_LIB80211_CRYPT_WEP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_LIB80211=m
+CONFIG_LIBCRC32C=y
+# CONFIG_LIBERTAS is not set
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_LIBNVDIMM=m
+# CONFIG_LIDAR_LITE_V2 is not set
+CONFIG_LINEAR_RANGES_TEST=m
+CONFIG_LIRC=y
+CONFIG_LIST_KUNIT_TEST=m
+CONFIG_LITEX_LITEETH=y
+CONFIG_LITEX_SOC_CONTROLLER=y
+CONFIG_LIVEPATCH=y
+# CONFIG_LKDTM is not set
+# CONFIG_LLC2 is not set
+CONFIG_LLC=m
+# CONFIG_LMK04832 is not set
+CONFIG_LMP91000=m
+CONFIG_LOAD_UEFI_KEYS=y
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_LOCKDEP_BITS=16
+CONFIG_LOCKDEP_CHAINS_BITS=19
+CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12
+CONFIG_LOCKDEP_STACK_TRACE_BITS=19
+CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14
+CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
+# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set
+# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set
+CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
+CONFIG_LOCKD_V4=y
+CONFIG_LOCK_EVENT_COUNTS=y
+CONFIG_LOCK_STAT=y
+CONFIG_LOCK_TORTURE_TEST=m
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_LOGIG940_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIWHEELS_FF=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO=y
+CONFIG_LOOPBACK_TARGET=m
+# CONFIG_LPC_ICH is not set
+CONFIG_LP_CONSOLE=y
+# CONFIG_LPC_SCH is not set
+CONFIG_LRU_GEN_ENABLED=y
+# CONFIG_LRU_GEN_STATS is not set
+CONFIG_LRU_GEN=y
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LSM="lockdown,yama,integrity,selinux,bpf,landlock"
+CONFIG_LSM_MMAP_MIN_ADDR=65535
+CONFIG_LTC1660=m
+# CONFIG_LTC2309 is not set
+# CONFIG_LTC2471 is not set
+# CONFIG_LTC2485 is not set
+# CONFIG_LTC2496 is not set
+# CONFIG_LTC2497 is not set
+# CONFIG_LTC2632 is not set
+CONFIG_LTC2688=m
+CONFIG_LTC2983=m
+# CONFIG_LTE_GDM724X is not set
+# CONFIG_LTO_CLANG_FULL is not set
+# CONFIG_LTO_CLANG_THIN is not set
+CONFIG_LTO_NONE=y
+# CONFIG_LTR390 is not set
+CONFIG_LTR501=m
+CONFIG_LTRF216A=m
+CONFIG_LV0104CS=m
+# CONFIG_LWQ_TEST is not set
+CONFIG_LWTUNNEL_BPF=y
+CONFIG_LWTUNNEL=y
+CONFIG_LXT_PHY=m
+CONFIG_LZ4_COMPRESS=m
+# CONFIG_M62332 is not set
+CONFIG_MAC80211_DEBUGFS=y
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_HWSIM=m
+CONFIG_MAC80211_KUNIT_TEST=m
+CONFIG_MAC80211_LEDS=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_MESSAGE_TRACING=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC802154=m
+CONFIG_MACB=m
+CONFIG_MACB_PCI=m
+CONFIG_MACB_USE_HWSTAMP=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_MACHZ_WDT=m
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MACSEC=m
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+# CONFIG_MAG3110 is not set
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0
+CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_MAILBOX=y
+# CONFIG_MANAGER_SBS is not set
+CONFIG_MANTIS_CORE=m
+# CONFIG_MARCH_Z16 is not set
+CONFIG_MARVELL_10G_PHY=m
+CONFIG_MARVELL_88Q2XXX_PHY=m
+CONFIG_MARVELL_88X2222_PHY=m
+CONFIG_MARVELL_PHY=m
+# CONFIG_MATOM is not set
+# CONFIG_MAX1027 is not set
+# CONFIG_MAX11100 is not set
+# CONFIG_MAX1118 is not set
+CONFIG_MAX11205=m
+CONFIG_MAX11410=m
+CONFIG_MAX1241=m
+CONFIG_MAX1363=m
+CONFIG_MAX30100=m
+# CONFIG_MAX30102 is not set
+CONFIG_MAX30208=m
+CONFIG_MAX31827=m
+CONFIG_MAX31856=m
+CONFIG_MAX31865=m
+CONFIG_MAX34408=m
+# CONFIG_MAX44000 is not set
+CONFIG_MAX44009=m
+# CONFIG_MAX517 is not set
+# CONFIG_MAX5432 is not set
+# CONFIG_MAX5481 is not set
+# CONFIG_MAX5487 is not set
+CONFIG_MAX5522=m
+# CONFIG_MAX5821 is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_MAX6959 is not set
+CONFIG_MAX77620_WATCHDOG=m
+# CONFIG_MAX9611 is not set
+CONFIG_MAXIM_THERMOCOUPLE=m
+CONFIG_MAXLINEAR_GPHY=m
+CONFIG_MAXPHYSMEM_128GB=y
+# CONFIG_MAXPHYSMEM_2GB is not set
+CONFIG_MAX_SKB_FRAGS=17
+CONFIG_MAXSMP=y
+CONFIG_MB1232=m
+# CONFIG_MC3230 is not set
+# CONFIG_MCB is not set
+CONFIG_MCHP_CLK_MPFS=y
+# CONFIG_MCORE2 is not set
+# CONFIG_MCP320X is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_MCP3564 is not set
+CONFIG_MCP3911=m
+CONFIG_MCP4018=m
+CONFIG_MCP41010=m
+# CONFIG_MCP4131 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_MCP4725 is not set
+CONFIG_MCP4728=m
+CONFIG_MCP4821=m
+# CONFIG_MCP4922 is not set
+CONFIG_MCP9600=m
+CONFIG_MCTP_SERIAL=m
+# CONFIG_MCTP_TRANSPORT_I2C is not set
+# CONFIG_MCTP_TRANSPORT_I3C is not set
+CONFIG_MCTP=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_BITMAP_FILE=y
+# CONFIG_MD_CLUSTER is not set
+CONFIG_MD_FAULTY=m
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
+CONFIG_MDIO_DEVICE=y
+# CONFIG_MDIO_GPIO is not set
+# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
+# CONFIG_MDIO_IPQ4019 is not set
+# CONFIG_MDIO_IPQ8064 is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+CONFIG_MDIO_MVUSB=m
+# CONFIG_MDIO_OCTEON is not set
+# CONFIG_MDIO_THUNDER is not set
+CONFIG_MD_LINEAR=m
+CONFIG_MDM_GCC_9607=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID456=m
+CONFIG_MD=y
+CONFIG_MEAN_AND_VARIANCE_UNIT_TEST=m
+CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_CEC_RC=y
+CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER_DVB=y
+CONFIG_MEDIA_CONTROLLER=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_MEDIA_PCI_SUPPORT=y
+CONFIG_MEDIA_PLATFORM_DRIVERS=y
+CONFIG_MEDIA_PLATFORM_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+# CONFIG_MEDIA_SDR_SUPPORT is not set
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_SUPPORT_FILTER=y
+CONFIG_MEDIA_SUPPORT=m
+CONFIG_MEDIATEK_GE_PHY=m
+CONFIG_MEDIATEK_MT6370_ADC=m
+CONFIG_MEDIA_TEST_SUPPORT=y
+# CONFIG_MEDIA_TUNER_MSI001 is not set
+# CONFIG_MEDIA_TUNER_MXL301RF is not set
+CONFIG_MEDIA_USB_SUPPORT=y
+# CONFIG_MEFFICEON is not set
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_SAS=m
+# CONFIG_MELAN is not set
+CONFIG_MELLANOX_PLATFORM=y
+# CONFIG_MEM_ALLOC_PROFILING is not set
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
+CONFIG_MEMCG=y
+CONFIG_MEMCPY_KUNIT_TEST=m
+CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
+CONFIG_MEMORY_FAILURE=y
+# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set
+# CONFIG_MEMORY_HOTPLUG is not set
+# CONFIG_MEMORY is not set
+# CONFIG_MEMSTICK_DEBUG is not set
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_MEMSTICK=m
+CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
+CONFIG_MEMSTICK_REALTEK_USB=m
+CONFIG_MEMSTICK_TIFM_MS=m
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MEMTEST=y
+# CONFIG_MEN_A21_WDT is not set
+# CONFIG_MERAKI_MX100 is not set
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
+# CONFIG_MFD_ATC260X_I2C is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_AXP20X_RSB=m
+CONFIG_MFD_AXP20X=y
+# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_CPCAP is not set
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
+CONFIG_MFD_CS42L43_I2C=m
+CONFIG_MFD_CS42L43_SDW=m
+# CONFIG_MFD_CS5535 is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+CONFIG_MFD_DA9063=m
+# CONFIG_MFD_DA9150 is not set
+CONFIG_MFD_DLN2=m
+CONFIG_MFD_ENE_KB3930=m
+# CONFIG_MFD_GATEWORKS_GSC is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_MFD_HI6421_SPMI is not set
+CONFIG_MFD_INTEL_M10_BMC=m
+CONFIG_MFD_INTEL_M10_BMC_PMCI=m
+CONFIG_MFD_INTEL_M10_BMC_SPI=m
+# 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_KHADAS_MCU is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_LOCHNAGAR is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_MFD_MAX14577 is not set
+CONFIG_MFD_MAX5970=m
+CONFIG_MFD_MAX597X=m
+# CONFIG_MFD_MAX77541 is not set
+# CONFIG_MFD_MAX77620 is not set
+CONFIG_MFD_MAX77650=m
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+CONFIG_MFD_MAX77714=m
+# 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_MC13XXX_I2C is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_MFD_MP2629 is not set
+# CONFIG_MFD_MT6360 is not set
+# CONFIG_MFD_MT6370 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_NTXEC is not set
+# CONFIG_MFD_OCELOT is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_QCOM_PM8008 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RK8XX_I2C is not set
+# CONFIG_MFD_RK8XX_SPI is not set
+# CONFIG_MFD_RN5T618 is not set
+# CONFIG_MFD_ROHM_BD71828 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
+# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
+CONFIG_MFD_RSMU_I2C=m
+CONFIG_MFD_RSMU_SPI=m
+CONFIG_MFD_RT4831=m
+# CONFIG_MFD_RT5033 is not set
+CONFIG_MFD_RT5120=m
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SIMPLE_MFD_I2C=m
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SL28CPLD is not set
+CONFIG_MFD_SM501_GPIO=y
+CONFIG_MFD_SM501=m
+# CONFIG_MFD_SMPRO is not set
+# CONFIG_MFD_STMFX is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_STPMIC1 is not set
+CONFIG_MFD_SY7636A=m
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_TI_LMU is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
+# CONFIG_MFD_TIMBERDALE is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65219 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS6594_I2C=m
+# CONFIG_MFD_TPS6594_SPI is not set
+# CONFIG_MFD_TQMX86 is not set
+# CONFIG_MFD_VIPERBOARD is not set
+CONFIG_MFD_VX855=m
+CONFIG_MFD_WL1273_CORE=m
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MHI_BUS_DEBUG is not set
+# CONFIG_MHI_BUS_EP is not set
+CONFIG_MHI_BUS=m
+CONFIG_MHI_BUS_PCI_GENERIC=m
+CONFIG_MHI_NET=m
+CONFIG_MHI_WWAN_CTRL=m
+CONFIG_MHI_WWAN_MBIM=m
+# CONFIG_MICREL_KS8995MA is not set
+CONFIG_MICREL_PHY=m
+CONFIG_MICROCHIP_PHY=m
+# CONFIG_MICROCHIP_PIT64B is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+CONFIG_MICROCHIP_T1S_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_MICROSOFT_MANA=m
+CONFIG_MIGRATION=y
+CONFIG_MII=m
+CONFIG_MINIX_FS=m
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_MISC_ALCOR_PCI=m
+CONFIG_MISC_FILESYSTEMS=y
+CONFIG_MISC_RTSX_PCI=m
+CONFIG_MISC_RTSX_USB=m
+CONFIG_MKISS=m
+CONFIG_MLX4_CORE_GEN2=y
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_MLX4_EN_DCB=y
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_INFINIBAND=m
+CONFIG_MLX5_ACCEL=y
+CONFIG_MLX5_CLS_ACT=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_IPOIB=y
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_DPLL=m
+CONFIG_MLX5_EN_ARFS=y
+CONFIG_MLX5_EN_IPSEC=y
+CONFIG_MLX5_EN_MACSEC=y
+CONFIG_MLX5_EN_RXNFC=y
+CONFIG_MLX5_EN_TLS=y
+CONFIG_MLX5_ESWITCH=y
+# CONFIG_MLX5_FPGA_IPSEC is not set
+# CONFIG_MLX5_FPGA_TLS is not set
+CONFIG_MLX5_FPGA=y
+CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_IPSEC=y
+CONFIG_MLX5_MACSEC=y
+CONFIG_MLX5_MPFS=y
+CONFIG_MLX5_SF=y
+CONFIG_MLX5_SW_STEERING=y
+CONFIG_MLX5_TC_CT=y
+CONFIG_MLX5_TC_SAMPLE=y
+CONFIG_MLX5_TLS=y
+CONFIG_MLX5_VDPA_NET=m
+# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set
+CONFIG_MLX5_VDPA=y
+CONFIG_MLX5_VFIO_PCI=m
+CONFIG_MLX90614=m
+CONFIG_MLX90632=m
+# CONFIG_MLX90635 is not set
+# CONFIG_MLXBF_BOOTCTL is not set
+# CONFIG_MLXBF_GIGE is not set
+# CONFIG_MLXBF_TMFIFO is not set
+CONFIG_MLXFW=m
+CONFIG_MLXREG_HOTPLUG=m
+CONFIG_MLXREG_IO=m
+CONFIG_MLXREG_LC=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_THERMAL=y
+CONFIG_MLXSW_I2C=m
+CONFIG_MLXSW_MINIMAL=m
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SPECTRUM_DCB=y
+CONFIG_MLXSW_SPECTRUM=m
+CONFIG_MLX_WDT=m
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7455_SPI is not set
+CONFIG_MMA7660=m
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MMC35240 is not set
+CONFIG_MMC_ALCOR=m
+# CONFIG_MMC_ARMMMCI is not set
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CB710=m
+CONFIG_MMC_CQHCI=y
+# CONFIG_MMC_CRYPTO is not set
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_DW_BLUEFIELD is not set
+# CONFIG_MMC_DW_EXYNOS is not set
+# CONFIG_MMC_DW_HI3798CV200 is not set
+CONFIG_MMC_DW_HI3798MV200=m
+# CONFIG_MMC_DW_K3 is not set
+CONFIG_MMC_DW=m
+CONFIG_MMC_DW_PCI=m
+CONFIG_MMC_DW_PLTFM=m
+CONFIG_MMC_DW_STARFIVE=m
+# CONFIG_MMC_GOLDFISH is not set
+CONFIG_MMC_HSQ=m
+CONFIG_MMC_LITEX=y
+# CONFIG_MMC_MTK is not set
+CONFIG_MMC_REALTEK_PCI=m
+CONFIG_MMC_REALTEK_USB=m
+CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_SDHCI_ACPI=m
+# CONFIG_MMC_SDHCI_AM654 is not set
+CONFIG_MMC_SDHCI_CADENCE=m
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_SDHCI_MILBEAUT is not set
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
+CONFIG_MMC_SDHCI_OF_DWCMSHC=m
+# CONFIG_MMC_SDHCI_OF_ESDHC is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_XENON=m
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_SPI=y
+# CONFIG_MMC_STM32_SDMMC is not set
+# CONFIG_MMC_TEST is not set
+CONFIG_MMC_TIFM_SD=m
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_USDHI6ROL0 is not set
+CONFIG_MMC_USHC=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MMC_VUB300=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC=y
+CONFIG_MMIOTRACE=y
+CONFIG_MMU=y
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_MODPROBE_PATH="/usr/sbin/modprobe"
+# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set
+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
+# CONFIG_MODULE_COMPRESS_GZIP is not set
+CONFIG_MODULE_COMPRESS_NONE=y
+# CONFIG_MODULE_COMPRESS_XZ is not set
+# CONFIG_MODULE_COMPRESS_ZSTD is not set
+# CONFIG_MODULE_DEBUG is not set
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODULE_SIG_ALL=y
+# CONFIG_MODULE_SIG_FORCE is not set
+CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+# CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set
+CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
+# CONFIG_MODULE_SIG_SHA1 is not set
+# CONFIG_MODULE_SIG_SHA224 is not set
+# CONFIG_MODULE_SIG_SHA256 is not set
+# CONFIG_MODULE_SIG_SHA3_256 is not set
+# CONFIG_MODULE_SIG_SHA3_384 is not set
+# CONFIG_MODULE_SIG_SHA3_512 is not set
+# CONFIG_MODULE_SIG_SHA384 is not set
+CONFIG_MODULE_SIG_SHA512=y
+CONFIG_MODULE_SIG=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD_TAINT_TRACKING=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MOST is not set
+CONFIG_MOTORCOMM_PHY=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_ELAN_I2C_I2C=y
+CONFIG_MOUSE_ELAN_I2C=m
+CONFIG_MOUSE_ELAN_I2C_SMBUS=y
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2 is not set
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
+CONFIG_MOUSE_VSXXXAA=m
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXTET is not set
+CONFIG_MPL115_I2C=m
+# CONFIG_MPL115_SPI is not set
+# CONFIG_MPL3115 is not set
+CONFIG_MPLS_IPTUNNEL=m
+CONFIG_MPLS_ROUTING=m
+# CONFIG_MPRLS0025PA is not set
+CONFIG_MPTCP_IPV6=y
+CONFIG_MPTCP_KUNIT_TEST=m
+CONFIG_MPTCP=y
+CONFIG_MPU3050_I2C=m
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
+CONFIG_MSA311=m
+# CONFIG_MS_BLOCK is not set
+CONFIG_MSDOS_FS=m
+CONFIG_MSDOS_PARTITION=y
+CONFIG_MSE102X=m
+# CONFIG_MSM_GCC_8939 is not set
+# CONFIG_MSM_GCC_8953 is not set
+# CONFIG_MSM_GPUCC_8998 is not set
+# CONFIG_MSM_MMCC_8998 is not set
+CONFIG_MSPRO_BLOCK=m
+CONFIG_MT7601U=m
+CONFIG_MT7603E=m
+CONFIG_MT7615E=m
+CONFIG_MT7663S=m
+CONFIG_MT7663U=m
+CONFIG_MT76x0E=m
+CONFIG_MT76x0U=m
+CONFIG_MT76x2E=m
+CONFIG_MT76x2U=m
+CONFIG_MT7915E=m
+CONFIG_MT7921E=m
+CONFIG_MT7921S=m
+CONFIG_MT7921U=m
+CONFIG_MT7925E=m
+CONFIG_MT7925U=m
+CONFIG_MT7996E=m
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_AR7_PARTS is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK2MTD=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI=m
+CONFIG_MTD_CFI_STAA=m
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_DOCG3 is not set
+# CONFIG_MTD_HYPERBUS is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_JEDECPROBE is not set
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD=m
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MCHP23K256 is not set
+CONFIG_MTD_MCHP48L640=m
+CONFIG_MTD_MTDRAM=m
+# CONFIG_MTD_NAND_ARASAN is not set
+# CONFIG_MTD_NAND_BRCMNAND is not set
+CONFIG_MTD_NAND_CADENCE=m
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_CS553X is not set
+# CONFIG_MTD_NAND_DENALI_DT is not set
+# CONFIG_MTD_NAND_DENALI_PCI is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_ECC_MXIC=y
+# CONFIG_MTD_NAND_ECC_SW_BCH is not set
+# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+# CONFIG_MTD_NAND_GPIO is not set
+# CONFIG_MTD_NAND_HISI504 is not set
+# CONFIG_MTD_NAND_INTEL_LGM is not set
+# CONFIG_MTD_NAND_MESON is not set
+# CONFIG_MTD_NAND_MXC is not set
+# CONFIG_MTD_NAND_MXIC is not set
+CONFIG_MTD_NAND_NANDSIM=m
+# CONFIG_MTD_NAND_OMAP2 is not set
+# CONFIG_MTD_NAND_PL35X is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_NAND_QCOM is not set
+# CONFIG_MTD_NAND_RICOH is not set
+# CONFIG_MTD_NAND_ROCKCHIP is not set
+# CONFIG_MTD_NAND_SUNXI is not set
+CONFIG_MTD_OF_PARTS=m
+# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_PARTITIONED_MASTER is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+# CONFIG_MTD_PHYSMAP_GEMINI is not set
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_PHYSMAP_VERSATILE is not set
+# CONFIG_MTD_PLATRAM is not set
+# CONFIG_MTD_PMC551 is not set
+CONFIG_MTDRAM_ERASE_SIZE=128
+# CONFIG_MTD_RAM is not set
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTD_RAW_NAND=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_SHARPSL_PARTS is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_SPI_NAND is not set
+CONFIG_MTD_SPI_NOR=m
+# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set
+CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
+# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SWAP is not set
+# CONFIG_MTD_TESTS is not set
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_BLOCK is not set
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_FAULT_INJECTION is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_NVMEM=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTK_T7XX=m
+CONFIG_MULTIPLEXER=m
+CONFIG_MULTIUSER=y
+CONFIG_MUX_ADG792A=m
+# CONFIG_MUX_ADGS1408 is not set
+CONFIG_MUX_GPIO=m
+CONFIG_MUX_MMIO=m
+# CONFIG_MVIAC7 is not set
+CONFIG_MVMDIO=m
+CONFIG_MWAVE=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_MWL8K=m
+CONFIG_MXC4005=m
+CONFIG_MXC6255=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_MYRI10GE=m
+CONFIG_NAMESPACES=y
+CONFIG_NATIONAL_PHY=m
+CONFIG_NATSEMI=m
+# CONFIG_NAU7802 is not set
+# CONFIG_NBPFAXI_DMA is not set
+CONFIG_NCN26000_PHY=m
+CONFIG_NCSI_OEM_CMD_GET_MAC=y
+CONFIG_NCSI_OEM_CMD_KEEP_PHY=y
+# CONFIG_NDC_DIS_DYNAMIC_CACHING is not set
+CONFIG_NE2K_PCI=m
+# CONFIG_NET_9P_DEBUG is not set
+CONFIG_NET_9P_FD=m
+CONFIG_NET_9P=m
+CONFIG_NET_9P_RDMA=m
+CONFIG_NET_9P_VIRTIO=m
+CONFIG_NET_9P_XEN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_CTINFO=m
+CONFIG_NET_ACT_CT=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_NET_ACT_GATE=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_MPLS=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_SAMPLE=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_CGROUP=y
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_MATCHALL=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_U32=m
+CONFIG_NET_CLS=y
+CONFIG_NETCONSOLE_DYNAMIC=y
+# CONFIG_NETCONSOLE_EXTENDED_LOG is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NET_CORE=y
+CONFIG_NETDEV_ADDR_LIST_TEST=m
+CONFIG_NETDEVICES=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DEV_REFCNT_TRACKER=y
+CONFIG_NETDEVSIM=m
+CONFIG_NET_DROP_MONITOR=y
+# CONFIG_NET_DSA_AR9331 is not set
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK=m
+# CONFIG_NET_DSA_LANTIQ_GSWIP is not set
+CONFIG_NET_DSA_LOOP=m
+CONFIG_NET_DSA=m
+# CONFIG_NET_DSA_MICROCHIP_KSZ8795 is not set
+# CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C is not set
+CONFIG_NET_DSA_MICROCHIP_KSZ9477=m
+CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI=m
+# CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON is not set
+CONFIG_NET_DSA_MT7530=m
+CONFIG_NET_DSA_MT7530_MDIO=m
+CONFIG_NET_DSA_MT7530_MMIO=m
+# CONFIG_NET_DSA_MV88E6060 is not set
+CONFIG_NET_DSA_MV88E6XXX=m
+CONFIG_NET_DSA_MV88E6XXX_PTP=y
+CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y
+CONFIG_NET_DSA_QCA8K=m
+CONFIG_NET_DSA_REALTEK=m
+# CONFIG_NET_DSA_REALTEK_MDIO is not set
+CONFIG_NET_DSA_REALTEK_RTL8365MB=m
+CONFIG_NET_DSA_REALTEK_RTL8366RB=m
+# CONFIG_NET_DSA_REALTEK_SMI is not set
+# CONFIG_NET_DSA_SJA1105 is not set
+CONFIG_NET_DSA_SMSC_LAN9303_I2C=m
+CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m
+# CONFIG_NET_DSA_TAG_AR9331 is not set
+CONFIG_NET_DSA_TAG_GSWIP=m
+CONFIG_NET_DSA_TAG_HELLCREEK=m
+CONFIG_NET_DSA_TAG_KSZ=m
+CONFIG_NET_DSA_TAG_OCELOT_8021Q=m
+CONFIG_NET_DSA_TAG_OCELOT=m
+CONFIG_NET_DSA_TAG_RTL4_A=m
+CONFIG_NET_DSA_TAG_RTL8_4=m
+# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
+CONFIG_NET_DSA_TAG_SJA1105=m
+CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
+CONFIG_NET_DSA_TAG_XRS700X=m
+# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
+# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
+CONFIG_NET_DSA_XRS700X_I2C=m
+CONFIG_NET_DSA_XRS700X_MDIO=m
+CONFIG_NET_EMATCH_CANID=m
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_IPSET=m
+CONFIG_NET_EMATCH_IPT=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_FAILOVER=m
+CONFIG_NET_FC=y
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_NETFILTER_EGRESS=y
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_NETLINK_ACCT=m
+# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
+CONFIG_NETFILTER_NETLINK_HOOK=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_OSF=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+# CONFIG_NETFILTER_XTABLES_COMPAT is not set
+CONFIG_NETFILTER_XTABLES=y
+CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_MARK=m
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_NAT=m
+CONFIG_NETFILTER_XT_SET=m
+CONFIG_NETFILTER_XT_TARGET_AUDIT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_TARGET_CT=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_FOU_IP_TUNNELS=y
+CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
+CONFIG_NETFS_STATS=y
+CONFIG_NETFS_SUPPORT=m
+CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
+CONFIG_NET_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPVTI=m
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_NETKIT=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NETLABEL=y
+CONFIG_NETLINK_DIAG=y
+CONFIG_NET_MPLS_GSO=m
+CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
+CONFIG_NET_NS_REFCNT_TRACKER=y
+CONFIG_NET_NS=y
+CONFIG_NET_PKTGEN=m
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_NETROM=m
+# CONFIG_NET_SB1000 is not set
+CONFIG_NET_SCH_CAKE=m
+CONFIG_NET_SCH_CBS=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_CODEL=m
+# CONFIG_NET_SCH_DEFAULT is not set
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_ETF=m
+CONFIG_NET_SCH_ETS=m
+CONFIG_NET_SCH_FQ_CODEL=y
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_FQ_PIE=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_HHF=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_PIE=m
+CONFIG_NET_SCH_PLUG=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+# CONFIG_NET_SCH_SKBPRIO is not set
+CONFIG_NET_SCH_TAPRIO=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_TC_SKB_EXT=y
+CONFIG_NET_TEAM=m
+CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
+CONFIG_NET_TEAM_MODE_BROADCAST=m
+CONFIG_NET_TEAM_MODE_LOADBALANCE=m
+CONFIG_NET_TEAM_MODE_RANDOM=m
+CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
+CONFIG_NET_TEST=m
+CONFIG_NET_TULIP=y
+CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_NET_VENDOR_8390=y
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_NET_VENDOR_ADI=y
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_NET_VENDOR_ALACRITECH is not set
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_NET_VENDOR_AQUANTIA=y
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ASIX=y
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_NET_VENDOR_CAVIUM is not set
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_NET_VENDOR_CORTINA is not set
+CONFIG_NET_VENDOR_DAVICOM=y
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_NET_VENDOR_ENGLEDER=y
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_FUJITSU is not set
+CONFIG_NET_VENDOR_FUNGIBLE=y
+CONFIG_NET_VENDOR_GOOGLE=y
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
+# CONFIG_NET_VENDOR_I825XX is not set
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_LITEX=y
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_NET_VENDOR_MICROSEMI is not set
+CONFIG_NET_VENDOR_MICROSOFT=y
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_NETERION=y
+CONFIG_NET_VENDOR_NETRONOME=y
+# CONFIG_NET_VENDOR_NI is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+CONFIG_NET_VENDOR_PENSANDO=y
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_NET_VENDOR_RDC=y
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_NET_VENDOR_RENESAS is not set
+CONFIG_NET_VENDOR_ROCKER=y
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_NET_VENDOR_SIS=y
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_NET_VENDOR_SOCIONEXT is not set
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+CONFIG_NET_VENDOR_TI=y
+CONFIG_NET_VENDOR_VERTEXCOM=y
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_NET_VENDOR_WANGXUN=y
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_NET_VENDOR_XILINX=y
+CONFIG_NET_VENDOR_XIRCOM=y
+CONFIG_NET_VRF=m
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NET=y
+CONFIG_NEW_LEDS=y
+CONFIG_NFC_DIGITAL=m
+# CONFIG_NFC_FDP is not set
+CONFIG_NFC_HCI=m
+CONFIG_NFC=m
+CONFIG_NFC_MICROREAD_I2C=m
+CONFIG_NFC_MICROREAD=m
+# CONFIG_NFC_MRVL_I2C is not set
+CONFIG_NFC_MRVL=m
+# CONFIG_NFC_MRVL_SPI is not set
+CONFIG_NFC_MRVL_USB=m
+CONFIG_NFC_NCI=m
+CONFIG_NFC_NCI_SPI=m
+# CONFIG_NFC_NCI_UART is not set
+CONFIG_NFC_NXP_NCI_I2C=m
+CONFIG_NFC_NXP_NCI=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_BRIDGE=m
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NFC_PN532_UART=m
+CONFIG_NFC_PN533_I2C=m
+CONFIG_NFC_PN533=m
+CONFIG_NFC_PN533_USB=m
+CONFIG_NFC_PN544_I2C=m
+CONFIG_NFC_PN544=m
+CONFIG_NFC_PORT100=m
+# CONFIG_NFC_S3FWRN5_I2C is not set
+# CONFIG_NFC_S3FWRN82_UART is not set
+CONFIG_NFC_SHDLC=y
+CONFIG_NFC_SIM=m
+CONFIG_NFC_ST21NFCA_I2C=m
+CONFIG_NFC_ST21NFCA=m
+# CONFIG_NFC_ST95HF is not set
+# CONFIG_NFC_ST_NCI_I2C is not set
+# CONFIG_NFC_ST_NCI_SPI is not set
+CONFIG_NF_CT_NETLINK=m
+# CONFIG_NF_CT_PROTO_DCCP is not set
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
+CONFIG_NFC_TRF7970A=m
+# CONFIG_NFC_VIRTUAL_NCI is not set
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NF_FLOW_TABLE_INET=m
+CONFIG_NF_FLOW_TABLE_IPV4=m
+CONFIG_NF_FLOW_TABLE_IPV6=m
+CONFIG_NF_FLOW_TABLE=m
+CONFIG_NF_FLOW_TABLE_PROCFS=y
+# CONFIG_NFIT_SECURITY_DEBUG is not set
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_LOG_SYSLOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+# CONFIG_NFP_APP_ABM_NIC is not set
+CONFIG_NFP_APP_FLOWER=y
+CONFIG_NFP_DEBUG=y
+CONFIG_NFP=m
+CONFIG_NFP_NET_IPSEC=y
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NFSD_BLOCKLAYOUT=y
+CONFIG_NFSD_FLEXFILELAYOUT=y
+CONFIG_NFS_DISABLE_UDP_SUPPORT=y
+# CONFIG_NFSD_LEGACY_CLIENT_TRACKING is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_PNFS=y
+CONFIG_NFSD_SCSILAYOUT=y
+# CONFIG_NFSD_V2 is not set
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V4_2_INTER_SSC=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFS_FSCACHE=y
+CONFIG_NFS_FS=m
+CONFIG_NF_SOCKET_IPV4=m
+CONFIG_NF_SOCKET_IPV6=m
+CONFIG_NFS_SWAP=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+# CONFIG_NFS_V2 is not set
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V3=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
+# CONFIG_NFS_V4_1_MIGRATION is not set
+CONFIG_NFS_V4_1=y
+# CONFIG_NFS_V4_2_READ_PLUS is not set
+CONFIG_NFS_V4_2=y
+CONFIG_NFS_V4=m
+CONFIG_NF_TABLES_ARP=y
+CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_NETDEV=y
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NFT_COMPAT=m
+CONFIG_NFT_CONNLIMIT=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FIB_INET=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
+CONFIG_NFT_FLOW_OFFLOAD=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_LIMIT=m
+# CONFIG_NFTL is not set
+CONFIG_NFT_LOG=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_NUMGEN=m
+CONFIG_NFT_OBJREF=m
+# CONFIG_NFT_OSF is not set
+CONFIG_NF_TPROXY_IPV4=m
+CONFIG_NF_TPROXY_IPV6=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
+CONFIG_NFT_REDIR=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_NETDEV=m
+CONFIG_NFT_SOCKET=m
+CONFIG_NFT_SYNPROXY=m
+CONFIG_NFT_TPROXY=m
+CONFIG_NFT_TUNNEL=m
+CONFIG_NFT_XFRM=m
+CONFIG_NGBE=m
+CONFIG_N_GSM=m
+CONFIG_N_HDLC=m
+# CONFIG_NI903X_WDT is not set
+CONFIG_NILFS2_FS=m
+CONFIG_NINTENDO_FF=y
+CONFIG_NITRO_ENCLAVES=m
+# CONFIG_NITRO_ENCLAVES_MISC_DEV_TEST is not set
+CONFIG_NIU=m
+# CONFIG_NL80211_TESTMODE is not set
+CONFIG_NLMON=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UCS2_UTILS=m
+CONFIG_NLS_UTF8=m
+CONFIG_NLS=y
+# CONFIG_NMI_CHECK_CPU is not set
+# CONFIG_NOA1305 is not set
+CONFIG_NODES_SHIFT=2
+CONFIG_NO_HZ_FULL=y
+# CONFIG_NO_HZ_IDLE is not set
+CONFIG_NO_HZ=y
+# CONFIG_NONPORTABLE is not set
+CONFIG_NOP_USB_XCEIV=m
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_NOUVEAU_DEBUG_MMU=y
+CONFIG_NOUVEAU_DEBUG_PUSH=y
+# CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set
+CONFIG_NOZOMI=m
+CONFIG_NR_CPUS=32
+CONFIG_NS83820=m
+CONFIG_NSM=m
+CONFIG_NTB_EPF=m
+# CONFIG_NTB is not set
+# CONFIG_NTFS3_64BIT_CLUSTER is not set
+CONFIG_NTFS3_FS=m
+CONFIG_NTFS3_FS_POSIX_ACL=y
+CONFIG_NTFS3_LZX_XPRESS=y
+# CONFIG_NTFS_FS is not set
+CONFIG_NULL_TTY=m
+CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
+CONFIG_NUMA_BALANCING=y
+CONFIG_NUMA=y
+# CONFIG_NVDIMM_SECURITY_TEST is not set
+# CONFIG_NVHE_EL2_DEBUG is not set
+CONFIG_NVIDIA_SHIELD_FF=y
+# CONFIG_NVIDIA_WMI_EC_BACKLIGHT is not set
+CONFIG_NVME_AUTH=m
+CONFIG_NVME_FC=m
+CONFIG_NVME_HOST_AUTH=y
+CONFIG_NVME_HWMON=y
+CONFIG_NVMEM_LAYOUT_ONIE_TLV=m
+CONFIG_NVMEM_LAYOUT_SL28_VPD=m
+# CONFIG_NVMEM_QCOM_QFPROM is not set
+# CONFIG_NVMEM_REBOOT_MODE is not set
+CONFIG_NVMEM_RMEM=m
+CONFIG_NVMEM_SYSFS=y
+CONFIG_NVMEM_U_BOOT_ENV=m
+CONFIG_NVME_MULTIPATH=y
+CONFIG_NVMEM=y
+CONFIG_NVME_RDMA=m
+CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
+CONFIG_NVME_TARGET_FCLOOP=m
+CONFIG_NVME_TARGET_FC=m
+CONFIG_NVME_TARGET_LOOP=m
+CONFIG_NVME_TARGET=m
+CONFIG_NVME_TARGET_PASSTHRU=y
+CONFIG_NVME_TARGET_RDMA=m
+CONFIG_NVME_TARGET_TCP=m
+CONFIG_NVME_TARGET_TCP_TLS=y
+CONFIG_NVME_TCP=m
+CONFIG_NVME_TCP_TLS=y
+# CONFIG_NVME_VERBOSE_ERRORS is not set
+# CONFIG_NVRAM is not set
+# CONFIG_NVSW_SN2201 is not set
+CONFIG_NXP_C45_TJA11XX_PHY=m
+CONFIG_NXP_CBTX_PHY=m
+# CONFIG_NXP_TJA11XX_PHY is not set
+# CONFIG_OCFS2_DEBUG_FS is not set
+# CONFIG_OCFS2_DEBUG_MASKLOG is not set
+CONFIG_OCFS2_FS=m
+CONFIG_OCFS2_FS_O2CB=m
+# CONFIG_OCFS2_FS_STATS is not set
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
+CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
+CONFIG_OCTEON_EP_VF=m
+CONFIG_OF_FPGA_REGION=m
+CONFIG_OF_GPIO=y
+CONFIG_OF_KUNIT_TEST=m
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_PMEM=m
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF=y
+# CONFIG_OMFS_FS is not set
+# CONFIG_OPAL_CORE is not set
+# CONFIG_OPEN_DICE is not set
+CONFIG_OPENVSWITCH_GENEVE=m
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPT3001=m
+CONFIG_OPT4001=m
+CONFIG_OPTPROBES=y
+CONFIG_ORANGEFS_FS=m
+CONFIG_OSF_PARTITION=y
+CONFIG_OSNOISE_TRACER=y
+CONFIG_OVERFLOW_KUNIT_TEST=m
+# CONFIG_OVERLAY_FS_DEBUG is not set
+# CONFIG_OVERLAY_FS_INDEX is not set
+CONFIG_OVERLAY_FS=m
+# CONFIG_OVERLAY_FS_METACOPY is not set
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
+# CONFIG_OVERLAY_FS_XINO_AUTO is not set
+CONFIG_PA12203001=m
+CONFIG_PAC1934=m
+CONFIG_PACKET_DIAG=y
+CONFIG_PACKET=y
+CONFIG_PACKING=y
+CONFIG_PAGE_EXTENSION=y
+CONFIG_PAGE_OWNER=y
+CONFIG_PAGE_POISONING=y
+CONFIG_PAGE_POOL_STATS=y
+CONFIG_PAGE_REPORTING=y
+CONFIG_PAGE_SIZE_4KB=y
+CONFIG_PAGE_TABLE_CHECK_ENFORCED=y
+CONFIG_PAGE_TABLE_CHECK=y
+# CONFIG_PANEL_CHANGE_MESSAGE is not set
+# CONFIG_PANEL is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_PANTHERLORD_FF=y
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
+CONFIG_PARAVIRT=y
+CONFIG_PARMAN=m
+# CONFIG_PARPORT is not set
+# CONFIG_PARPORT_PC is not set
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_PATA_ACPI is not set
+CONFIG_PATA_ALI=m
+CONFIG_PATA_AMD=m
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+CONFIG_PATA_ATP867X=m
+CONFIG_PATA_CMD640_PCI=m
+CONFIG_PATA_CMD64X=m
+CONFIG_PATA_CS5520=m
+CONFIG_PATA_CS5530=m
+CONFIG_PATA_CS5535=m
+CONFIG_PATA_CS5536=m
+# CONFIG_PATA_CYPRESS is not set
+CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
+CONFIG_PATA_HPT3X2N=m
+# CONFIG_PATA_HPT3X3_DMA is not set
+CONFIG_PATA_HPT3X3=m
+CONFIG_PATA_IT8213=m
+CONFIG_PATA_IT821X=m
+CONFIG_PATA_JMICRON=m
+# CONFIG_PATA_LEGACY is not set
+CONFIG_PATA_MARVELL=m
+# CONFIG_PATA_MPIIX is not set
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NINJA32=m
+CONFIG_PATA_NS87410=m
+CONFIG_PATA_NS87415=m
+# CONFIG_PATA_OF_PLATFORM is not set
+# CONFIG_PATA_OLDPIIX is not set
+CONFIG_PATA_OPTIDMA=m
+CONFIG_PATA_OPTI=m
+# CONFIG_PATA_PARPORT is not set
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_PDC_OLD=m
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RDC is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SCH is not set
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_SIS=m
+# CONFIG_PATA_TOSHIBA is not set
+# CONFIG_PATA_TRIFLEX is not set
+CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
+# CONFIG_PC104 is not set
+# CONFIG_PC87413_WDT is not set
+# CONFIG_PCCARD is not set
+# CONFIG_PCH_GBE is not set
+# CONFIG_PCI_CNB20LE_QUIRK is not set
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_DYNAMIC_OF_NODES is not set
+CONFIG_PCIEAER_CXL=y
+CONFIG_PCIEAER_INJECT=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ALTERA is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEASPM=y
+CONFIG_PCIE_BUS_DEFAULT=y
+# CONFIG_PCIE_BUS_PEER2PEER is not set
+# CONFIG_PCIE_BUS_PERFORMANCE is not set
+# CONFIG_PCIE_BUS_SAFE is not set
+# CONFIG_PCIE_BUS_TUNE_OFF is not set
+CONFIG_PCIE_CADENCE_HOST=y
+CONFIG_PCIE_CADENCE_PLAT_EP=y
+# CONFIG_PCIE_CADENCE_PLAT_HOST is not set
+CONFIG_PCIE_DPC=y
+# CONFIG_PCIE_DW_PLAT_HOST is not set
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIE_EDR=y
+CONFIG_PCIE_FU740=y
+# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set
+CONFIG_PCIE_MICROCHIP_HOST=y
+# CONFIG_PCIE_MOBIVEIL is not set
+# CONFIG_PCI_ENDPOINT is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_PTM=y
+# CONFIG_PCIE_STARFIVE_HOST is not set
+CONFIG_PCIE_XILINX_CPM=y
+CONFIG_PCIE_XILINX=y
+# CONFIG_PCI_FTPCI100 is not set
+# CONFIG_PCI_GOOLPC is not set
+CONFIG_PCI_HOST_COMMON=y
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_PCI_HYPERV=m
+CONFIG_PCI_IOV=y
+CONFIG_PCI_J721E_HOST=y
+# CONFIG_PCI_MESON is not set
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_P2PDMA=y
+CONFIG_PCI_PASID=y
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_PCI_PF_STUB=m
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
+CONFIG_PCI_SW_SWITCHTEC=m
+CONFIG_PCI=y
+CONFIG_PCNET32=m
+CONFIG_PCP_BATCH_SCALE_MAX=5
+CONFIG_PCPU_DEV_REFCNT=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_PCS_XPCS=m
+# CONFIG_PDA_POWER is not set
+CONFIG_PDC_ADMA=m
+CONFIG_PDS_CORE=m
+CONFIG_PDS_VDPA=m
+CONFIG_PDS_VFIO_PCI=m
+# CONFIG_PECI is not set
+CONFIG_PERCPU_STATS=y
+# CONFIG_PERCPU_TEST is not set
+CONFIG_PERF_EVENTS_AMD_UNCORE=y
+CONFIG_PERF_EVENTS=y
+CONFIG_PERSISTENT_KEYRINGS=y
+CONFIG_PER_VMA_LOCK_STATS=y
+CONFIG_PFCP=m
+# CONFIG_PHANTOM is not set
+# CONFIG_PHONET is not set
+CONFIG_PHY_CADENCE_DPHY=m
+CONFIG_PHY_CADENCE_DPHY_RX=m
+CONFIG_PHY_CADENCE_SALVO=m
+CONFIG_PHY_CADENCE_SIERRA=m
+CONFIG_PHY_CADENCE_TORRENT=m
+# CONFIG_PHY_CAN_TRANSCEIVER is not set
+# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_HI3670_PCIE is not set
+# CONFIG_PHY_HI3670_USB is not set
+# CONFIG_PHY_LAN966X_SERDES is not set
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_PHY_OCELOT_SERDES is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_QCOM_EDP is not set
+# CONFIG_PHY_QCOM_IPQ4019_USB is not set
+# CONFIG_PHY_QCOM_IPQ806X_USB is not set
+# CONFIG_PHY_QCOM_USB_HS_28NM is not set
+# CONFIG_PHY_QCOM_USB_HSIC is not set
+# CONFIG_PHY_QCOM_USB_HS is not set
+# CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 is not set
+# CONFIG_PHY_QCOM_USB_SS is not set
+CONFIG_PHY_RTK_RTD_USB2PHY=m
+CONFIG_PHY_RTK_RTD_USB3PHY=m
+# CONFIG_PHY_SAMSUNG_USB2 is not set
+# CONFIG_PHYS_RAM_BASE_FIXED is not set
+CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=m
+# CONFIG_PHY_STARFIVE_JH7110_DPHY_TX is not set
+CONFIG_PHY_STARFIVE_JH7110_PCIE=m
+CONFIG_PHY_STARFIVE_JH7110_USB=m
+# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
+CONFIG_PID_NS=y
+CONFIG_PINCONF=y
+# CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_AW9523 is not set
+CONFIG_PINCTRL_AXP209=m
+CONFIG_PINCTRL_CS42L43=m
+CONFIG_PINCTRL_CY8C95X0=m
+# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IPQ6018 is not set
+# CONFIG_PINCTRL_IPQ8074 is not set
+# CONFIG_PINCTRL_LPASS_LPI is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_MESON=y
+# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set
+# CONFIG_PINCTRL_MSM8226 is not set
+# CONFIG_PINCTRL_MSM8953 is not set
+# CONFIG_PINCTRL_MSM8976 is not set
+# CONFIG_PINCTRL_MSM is not set
+# CONFIG_PINCTRL_OCELOT is not set
+# CONFIG_PINCTRL_QCS404 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SC7180 is not set
+# CONFIG_PINCTRL_SC8180X is not set
+# CONFIG_PINCTRL_SDM660 is not set
+# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SM8150 is not set
+# CONFIG_PINCTRL_SM8250 is not set
+# CONFIG_PINCTRL_SM8350 is not set
+CONFIG_PINCTRL_SM8350_LPASS_LPI=m
+# CONFIG_PINCTRL_SM8450 is not set
+CONFIG_PINCTRL_STARFIVE_JH7100=y
+CONFIG_PINCTRL_STARFIVE_JH7110_AON=y
+CONFIG_PINCTRL_STARFIVE_JH7110_SYS=y
+CONFIG_PINCTRL_STARFIVE_JH7110=y
+CONFIG_PINCTRL_STARFIVE=y
+# CONFIG_PINCTRL_STMFX is not set
+CONFIG_PINCTRL_SUN20I_D1=y
+# CONFIG_PINCTRL_SX150X is not set
+CONFIG_PINCTRL_TPS6594=m
+CONFIG_PINCTRL=y
+# CONFIG_PING is not set
+CONFIG_PINMUX=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+CONFIG_PKCS8_PRIVATE_KEY_PARSER=m
+# CONFIG_PL320_MBOX is not set
+# CONFIG_PL330_DMA is not set
+# CONFIG_PLATFORM_MHU is not set
+# CONFIG_PLATFORM_SI4713 is not set
+CONFIG_PLAYSTATION_FF=y
+# CONFIG_PLFXLC is not set
+# CONFIG_PLIP is not set
+# CONFIG_PLX_DMA is not set
+CONFIG_PM_ADVANCED_DEBUG=y
+# CONFIG_PM_AUTOSLEEP is not set
+CONFIG_PMBUS=m
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_PMIC_OPREGION is not set
+CONFIG_PM_OPP=y
+CONFIG_PMS7003=m
+CONFIG_PM_STD_PARTITION=""
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_PM_TRACE_RTC=y
+CONFIG_PM_TRACE=y
+# CONFIG_PM_USERSPACE_AUTOSLEEP is not set
+# CONFIG_PMU_SYSFS is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM=y
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNP_DEBUG_MESSAGES=y
+# CONFIG_POLARFIRE_SOC_MAILBOX is not set
+CONFIG_PORTABLE=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_POWERCAP=y
+# CONFIG_POWER_RESET_BRCMKONA is not set
+CONFIG_POWER_RESET_GPIO_RESTART=y
+CONFIG_POWER_RESET_GPIO=y
+# CONFIG_POWER_RESET_LINKSTATION is not set
+# CONFIG_POWER_RESET_LTC2952 is not set
+# CONFIG_POWER_RESET_REGULATOR is not set
+CONFIG_POWER_RESET_RESTART=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_TPS65086=y
+# CONFIG_POWER_RESET_VEXPRESS is not set
+CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_POWER_SUPPLY=y
+# CONFIG_PPC_PROT_SAO_LPAR is not set
+CONFIG_PPC_QUEUED_SPINLOCKS=y
+CONFIG_PPC_RTAS_FILTER=y
+CONFIG_PPDEV=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+# CONFIG_PPPOE_HASH_BITS_1 is not set
+# CONFIG_PPPOE_HASH_BITS_2 is not set
+CONFIG_PPPOE_HASH_BITS_4=y
+# CONFIG_PPPOE_HASH_BITS_8 is not set
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPS_CLIENT_GPIO=m
+# CONFIG_PPS_CLIENT_KTIMER is not set
+CONFIG_PPS_CLIENT_LDISC=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_PPS=y
+CONFIG_PPTP=m
+CONFIG_PREEMPT_DYNAMIC=y
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_TRACER is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_PRESTERA=m
+CONFIG_PRESTERA_PCI=m
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_PRIME_NUMBERS=m
+CONFIG_PRINTER=m
+# CONFIG_PRINTK_CALLER is not set
+CONFIG_PRINTK_INDEX=y
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=12
+CONFIG_PRINTK_TIME=y
+CONFIG_PRINTK=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+# CONFIG_PRISM2_USB is not set
+CONFIG_PROBE_EVENTS_BTF_ARGS=y
+CONFIG_PROC_CHILDREN=y
+# CONFIG_PROCESSOR_SELECT is not set
+CONFIG_PROC_EVENTS=y
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_VMCORE_DEVICE_DUMP=y
+CONFIG_PROC_VMCORE=y
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+CONFIG_PROFILING=y
+CONFIG_PROVE_CXL_LOCKING=y
+CONFIG_PROVE_LOCKING=y
+# CONFIG_PROVE_NVDIMM_LOCKING is not set
+# CONFIG_PROVE_RAW_LOCK_NESTING is not set
+CONFIG_PSAMPLE=m
+# CONFIG_PSE_CONTROLLER is not set
+# CONFIG_PSI_DEFAULT_DISABLED is not set
+CONFIG_PSI=y
+# CONFIG_PSTORE_842_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_842_COMPRESS=y
+# CONFIG_PSTORE_BLK is not set
+CONFIG_PSTORE_COMPRESS=y
+# CONFIG_PSTORE_CONSOLE is not set
+CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240
+CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
+CONFIG_PSTORE_DEFLATE_COMPRESS=y
+# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_PSTORE_LZ4_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_LZ4_COMPRESS=m
+# CONFIG_PSTORE_LZ4HC_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_LZ4HC_COMPRESS=m
+# CONFIG_PSTORE_LZO_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_LZO_COMPRESS=m
+# CONFIG_PSTORE_PMSG is not set
+CONFIG_PSTORE_RAM=m
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_ZSTD_COMPRESS is not set
+CONFIG_PTDUMP_DEBUGFS=y
+CONFIG_PTE_MARKER_UFFD_WP=y
+CONFIG_PTP_1588_CLOCK_FC3W=m
+CONFIG_PTP_1588_CLOCK_IDT82P33=m
+CONFIG_PTP_1588_CLOCK_IDTCM=m
+# CONFIG_PTP_1588_CLOCK_INES is not set
+CONFIG_PTP_1588_CLOCK_KVM=m
+CONFIG_PTP_1588_CLOCK_MOCK=m
+# CONFIG_PTP_1588_CLOCK_OCP is not set
+CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_DFL_TOD=m
+# CONFIG_PVPANIC_MMIO is not set
+# CONFIG_PVPANIC_PCI is not set
+CONFIG_PVPANIC=y
+# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
+# CONFIG_PWM_CLK is not set
+# CONFIG_PWM_DEBUG is not set
+CONFIG_PWM_DWC=m
+# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
+CONFIG_PWM_HIBVT=m
+# CONFIG_PWM_MICROCHIP_CORE is not set
+CONFIG_PWM_OMAP_DMTIMER=m
+# CONFIG_PWM_PCA9685 is not set
+CONFIG_PWM_SIFIVE=y
+CONFIG_PWM_SYSFS=y
+# CONFIG_PWM_XILINX is not set
+CONFIG_PWM=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SD8787=m
+CONFIG_PWRSEQ_SIMPLE=m
+CONFIG_QAT_VFIO_PCI=m
+# CONFIG_QCA7000_SPI is not set
+# CONFIG_QCA7000_UART is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
+# CONFIG_QCOM_A7PLL is not set
+# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GPI_DMA is not set
+# CONFIG_QCOM_HIDMA is not set
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_IPCC is not set
+# CONFIG_QCOM_LMH is not set
+# CONFIG_QCOM_OCMEM is not set
+CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
+# CONFIG_QCOM_PMIC_GLINK is not set
+# CONFIG_QCOM_PMIC_PDCHARGER_ULOG is not set
+# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
+# CONFIG_QCOM_SCM is not set
+# CONFIG_QCOM_SPM is not set
+# CONFIG_QCS_TURING_404 is not set
+CONFIG_QEDE=m
+CONFIG_QEDF=m
+CONFIG_QEDI=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC_DCB=y
+CONFIG_QLCNIC_HWMON=y
+CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLGE=m
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+CONFIG_QRTR=m
+CONFIG_QRTR_MHI=m
+# CONFIG_QRTR_SMD is not set
+# CONFIG_QRTR_TUN is not set
+CONFIG_QSEMI_PHY=m
+CONFIG_QTNFMAC_PCIE=m
+# CONFIG_QUICC_ENGINE is not set
+CONFIG_QUOTACTL=y
+CONFIG_QUOTA_DEBUG=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+CONFIG_QUOTA=y
+CONFIG_R6040=m
+CONFIG_R8169=m
+CONFIG_R8712U=m
+CONFIG_RADIO_ADAPTERS=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_SAA7706H=m
+CONFIG_RADIO_SHARK2=m
+CONFIG_RADIO_SHARK=m
+CONFIG_RADIO_SI470X=m
+CONFIG_RADIO_SI4713=m
+CONFIG_RADIO_TEA5764=m
+# CONFIG_RADIO_TEF6862 is not set
+CONFIG_RADIO_WL1273=m
+# CONFIG_RAID6_PQ_BENCHMARK is not set
+CONFIG_RAID_ATTRS=m
+CONFIG_RANDOM32_SELFTEST=y
+CONFIG_RANDOMIZE_BASE=y
+CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
+CONFIG_RANDOMIZE_KSTACK_OFFSET=y
+CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
+CONFIG_RANDOM_KMALLOC_CACHES=y
+CONFIG_RANDOM_TRUST_BOOTLOADER=y
+CONFIG_RANDOM_TRUST_CPU=y
+# CONFIG_RANDSTRUCT_FULL is not set
+CONFIG_RANDSTRUCT_NONE=y
+# CONFIG_RANDSTRUCT_PERFORMANCE is not set
+CONFIG_RAPIDIO_CHMAN=m
+CONFIG_RAPIDIO_CPS_GEN2=m
+CONFIG_RAPIDIO_CPS_XX=m
+# CONFIG_RAPIDIO_DEBUG is not set
+CONFIG_RAPIDIO_DISC_TIMEOUT=30
+CONFIG_RAPIDIO_DMA_ENGINE=y
+# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set
+CONFIG_RAPIDIO_ENUM_BASIC=m
+CONFIG_RAPIDIO=m
+CONFIG_RAPIDIO_MPORT_CDEV=m
+CONFIG_RAPIDIO_RXS_GEN3=m
+CONFIG_RAPIDIO_TSI568=m
+CONFIG_RAPIDIO_TSI57X=m
+CONFIG_RAPIDIO_TSI721=m
+CONFIG_RAS_FMPM=m
+CONFIG_RATIONAL_KUNIT_TEST=m
+# CONFIG_RAVE_SP_CORE is not set
+# CONFIG_RBTREE_TEST is not set
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_RC_CORE=y
+CONFIG_RC_DECODERS=y
+CONFIG_RC_DEVICES=y
+CONFIG_RC_LOOPBACK=m
+CONFIG_RC_MAP=m
+# CONFIG_RCU_CPU_STALL_CPUTIME is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_EQS_DEBUG is not set
+CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
+# CONFIG_RCU_EXPERT is not set
+# CONFIG_RCU_LAZY is not set
+# CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set
+CONFIG_RCU_NOCB_CPU=y
+CONFIG_RCU_REF_SCALE_TEST=m
+# CONFIG_RCU_SCALE_TEST is not set
+CONFIG_RCU_TORTURE_TEST=m
+CONFIG_RCU_TRACE=y
+CONFIG_RC_XBOX_DVD=m
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RD_LZ4=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_LZO=y
+CONFIG_RDMA_RXE=m
+CONFIG_RDMA_SIW=m
+# CONFIG_RDS_DEBUG is not set
+CONFIG_RDS=m
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
+CONFIG_RD_XZ=y
+CONFIG_RD_ZSTD=y
+# CONFIG_READABLE_ASM is not set
+CONFIG_READ_ONLY_THP_FOR_FS=y
+CONFIG_REALTEK_AUTOPM=y
+CONFIG_REALTEK_PHY=m
+# CONFIG_REED_SOLOMON_TEST is not set
+# CONFIG_REGMAP_BUILD is not set
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_KUNIT=m
+CONFIG_REGMAP_SPI=m
+CONFIG_REGMAP=y
+# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
+# CONFIG_REGULATOR_ACT8865 is not set
+# CONFIG_REGULATOR_AD5398 is not set
+CONFIG_REGULATOR_ANATOP=m
+CONFIG_REGULATOR_AW37503=m
+CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
+CONFIG_REGULATOR_DA9063=m
+# CONFIG_REGULATOR_DA9121 is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_DA9211 is not set
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_FAN53880 is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_ISL9305 is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_LTC3589 is not set
+# CONFIG_REGULATOR_LTC3676 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX20086 is not set
+CONFIG_REGULATOR_MAX20411=m
+CONFIG_REGULATOR_MAX5970=m
+CONFIG_REGULATOR_MAX597X=m
+CONFIG_REGULATOR_MAX77503=m
+CONFIG_REGULATOR_MAX77650=m
+# CONFIG_REGULATOR_MAX77826 is not set
+CONFIG_REGULATOR_MAX77857=m
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+CONFIG_REGULATOR_MAX8893=m
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MCP16502 is not set
+CONFIG_REGULATOR_MP5416=m
+# CONFIG_REGULATOR_MP8859 is not set
+CONFIG_REGULATOR_MP886X=m
+# CONFIG_REGULATOR_MPQ7920 is not set
+# CONFIG_REGULATOR_MT6311 is not set
+CONFIG_REGULATOR_MT6370=m
+# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
+# CONFIG_REGULATOR_PF8X00 is not set
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88080 is not set
+# CONFIG_REGULATOR_PV88090 is not set
+CONFIG_REGULATOR_PWM=y
+CONFIG_REGULATOR_RAA215300=m
+# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
+CONFIG_REGULATOR_RT4801=m
+CONFIG_REGULATOR_RT4803=m
+CONFIG_REGULATOR_RT4831=m
+CONFIG_REGULATOR_RT5120=m
+CONFIG_REGULATOR_RT5190A=m
+CONFIG_REGULATOR_RT5739=m
+CONFIG_REGULATOR_RT5759=m
+CONFIG_REGULATOR_RT6160=m
+CONFIG_REGULATOR_RT6190=m
+CONFIG_REGULATOR_RT6245=m
+CONFIG_REGULATOR_RTMV20=m
+CONFIG_REGULATOR_RTQ2134=m
+CONFIG_REGULATOR_RTQ2208=m
+CONFIG_REGULATOR_RTQ6752=m
+# CONFIG_REGULATOR_SLG51000 is not set
+# CONFIG_REGULATOR_SUN20I is not set
+CONFIG_REGULATOR_SY7636A=m
+# CONFIG_REGULATOR_SY8106A is not set
+# CONFIG_REGULATOR_SY8824X is not set
+# CONFIG_REGULATOR_SY8827N is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+CONFIG_REGULATOR_TPS6286X=m
+# CONFIG_REGULATOR_TPS6287X is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_TPS65132 is not set
+# CONFIG_REGULATOR_TPS6524X is not set
+CONFIG_REGULATOR_TPS6594=m
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+CONFIG_REGULATOR_VCTRL=m
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
+CONFIG_REGULATOR_WM8994=m
+CONFIG_REGULATOR=y
+# CONFIG_REISERFS_CHECK is not set
+CONFIG_REISERFS_FS=m
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_PROC_INFO=y
+CONFIG_RELAY=y
+# CONFIG_RELOCATABLE_TEST is not set
+CONFIG_RELOCATABLE=y
+# CONFIG_REMOTEPROC_CDEV is not set
+CONFIG_REMOTEPROC=y
+CONFIG_REMOTE_TARGET=m
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_RESET_ATTACK_MITIGATION is not set
+CONFIG_RESET_GPIO=m
+# CONFIG_RESET_INTEL_GW is not set
+CONFIG_RESET_POLARFIRE_SOC=y
+CONFIG_RESET_SIMPLE=y
+CONFIG_RESET_STARFIVE_JH7100=y
+CONFIG_RESET_STARFIVE_JH7110=y
+CONFIG_RESET_STARFIVE_JH71X0=y
+# CONFIG_RESET_TI_SYSCON is not set
+CONFIG_RESET_TI_TPS380X=m
+CONFIG_RESOURCE_KUNIT_TEST=m
+# CONFIG_RFD77402 is not set
+# CONFIG_RFD_FTL is not set
+CONFIG_RFKILL_GPIO=m
+CONFIG_RFKILL_INPUT=y
+CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
+# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
+CONFIG_RICHTEK_RTQ6056=m
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
+CONFIG_RIONET=m
+CONFIG_RIONET_RX_SIZE=128
+CONFIG_RIONET_TX_SIZE=128
+CONFIG_RISCV_ALTERNATIVE_EARLY=y
+CONFIG_RISCV_ALTERNATIVE=y
+CONFIG_RISCV_BASE_PMU=y
+# CONFIG_RISCV_BOOT_SPINWAIT is not set
+# CONFIG_RISCV_EFFICIENT_UNALIGNED_ACCESS is not set
+# CONFIG_RISCV_EMULATED_UNALIGNED_ACCESS is not set
+CONFIG_RISCV_INTC=y
+CONFIG_RISCV_ISA_C=y
+CONFIG_RISCV_ISA_FALLBACK=y
+CONFIG_RISCV_ISA_SVNAPOT=y
+CONFIG_RISCV_ISA_SVPBMT=y
+CONFIG_RISCV_ISA_V_DEFAULT_ENABLE=y
+CONFIG_RISCV_ISA_VENDOR_EXT_ANDES=y
+CONFIG_RISCV_ISA_V_PREEMPTIVE=y
+CONFIG_RISCV_ISA_V_UCOPY_THRESHOLD=768
+CONFIG_RISCV_ISA_V=y
+CONFIG_RISCV_ISA_ZAWRS=y
+CONFIG_RISCV_ISA_ZBA=y
+CONFIG_RISCV_ISA_ZBB=y
+CONFIG_RISCV_ISA_ZBC=y
+CONFIG_RISCV_ISA_ZICBOM=y
+CONFIG_RISCV_ISA_ZICBOZ=y
+CONFIG_RISCV_MISALIGNED=y
+# CONFIG_RISCV_MODULE_LINKING_KUNIT is not set
+CONFIG_RISCV_PLIC=y
+CONFIG_RISCV_PMU_LEGACY=y
+CONFIG_RISCV_PMU_SBI=y
+CONFIG_RISCV_PMU=y
+CONFIG_RISCV_PROBE_UNALIGNED_ACCESS=y
+CONFIG_RISCV_SBI_CPUIDLE=y
+# CONFIG_RISCV_SBI_V01 is not set
+CONFIG_RISCV_SBI=y
+CONFIG_RISCV_TIMER=y
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_F03=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
+CONFIG_RMI4_F34=y
+CONFIG_RMI4_F3A=y
+# CONFIG_RMI4_F54 is not set
+CONFIG_RMI4_F55=y
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SMB=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMNET=m
+# CONFIG_ROCKCHIP_PHY is not set
+CONFIG_ROCKER=m
+# CONFIG_ROHM_BM1390 is not set
+# CONFIG_ROHM_BU27008 is not set
+CONFIG_ROHM_BU27034=m
+CONFIG_ROMFS_BACKED_BY_BLOCK=y
+# CONFIG_ROMFS_BACKED_BY_BOTH is not set
+# CONFIG_ROMFS_BACKED_BY_MTD is not set
+CONFIG_ROMFS_FS=m
+CONFIG_ROSE=m
+CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y
+CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y
+CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA=y
+# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_DES is not set
+CONFIG_RPCSEC_GSS_KRB5_KUNIT_TEST=m
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPMSG_CHAR=m
+CONFIG_RPMSG_CTRL=m
+CONFIG_RPMSG=m
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+CONFIG_RPMSG_TTY=m
+CONFIG_RPMSG_VIRTIO=m
+CONFIG_RPMSG_WWAN_CTRL=m
+CONFIG_RPR0521=m
+CONFIG_RPS=y
+CONFIG_RSEQ=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_COEX=y
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT3290=y
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RT2X00_LIB_DEBUGFS=y
+CONFIG_RT2X00=m
+CONFIG_RT61PCI=m
+CONFIG_RT73USB=m
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_DEBUG is not set
+# CONFIG_RTC_DRV_ABB5ZES3 is not set
+CONFIG_RTC_DRV_ABEOZ9=m
+CONFIG_RTC_DRV_ABX80X=m
+CONFIG_RTC_DRV_BQ32K=m
+# CONFIG_RTC_DRV_CADENCE is not set
+CONFIG_RTC_DRV_CMOS=y
+CONFIG_RTC_DRV_DA9063=m
+CONFIG_RTC_DRV_DS1286=m
+# CONFIG_RTC_DRV_DS1302 is not set
+CONFIG_RTC_DRV_DS1305=m
+# CONFIG_RTC_DRV_DS1307_CENTURY is not set
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1343=m
+CONFIG_RTC_DRV_DS1347=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
+CONFIG_RTC_DRV_DS1390=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_DS1685_FAMILY=m
+CONFIG_RTC_DRV_DS1685=y
+# CONFIG_RTC_DRV_DS1689 is not set
+# CONFIG_RTC_DRV_DS17285 is not set
+CONFIG_RTC_DRV_DS1742=m
+# CONFIG_RTC_DRV_DS17485 is not set
+# CONFIG_RTC_DRV_DS17885 is not set
+CONFIG_RTC_DRV_DS2404=m
+# CONFIG_RTC_DRV_DS3232_HWMON is not set
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_EFI=m
+CONFIG_RTC_DRV_EM3027=m
+CONFIG_RTC_DRV_FM3130=m
+# CONFIG_RTC_DRV_FTRTC010 is not set
+CONFIG_RTC_DRV_GOLDFISH=y
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
+# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_ISL12026=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_M41T93=m
+CONFIG_RTC_DRV_M41T94=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_MAX31335=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_MAX6916=m
+CONFIG_RTC_DRV_MAX77686=m
+CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_NCT3018Y=m
+CONFIG_RTC_DRV_PCF2123=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8523=m
+# CONFIG_RTC_DRV_PCF85363 is not set
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+# CONFIG_RTC_DRV_PL030 is not set
+# CONFIG_RTC_DRV_PL031 is not set
+# CONFIG_RTC_DRV_PM8XXX is not set
+# CONFIG_RTC_DRV_POLARFIRE_SOC is not set
+CONFIG_RTC_DRV_R7301=m
+CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_RV3028=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
+CONFIG_RTC_DRV_RV3032=m
+# CONFIG_RTC_DRV_RV8803 is not set
+CONFIG_RTC_DRV_RX4581=m
+# CONFIG_RTC_DRV_RX6110 is not set
+CONFIG_RTC_DRV_RX8010=m
+CONFIG_RTC_DRV_RX8025=m
+# CONFIG_RTC_DRV_RX8111 is not set
+CONFIG_RTC_DRV_RX8581=m
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_SA1100 is not set
+CONFIG_RTC_DRV_SD3078=m
+# CONFIG_RTC_DRV_SNVS is not set
+CONFIG_RTC_DRV_STK17TA8=m
+# CONFIG_RTC_DRV_TEST is not set
+CONFIG_RTC_DRV_TPS6594=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_X1205=m
+# CONFIG_RTC_DRV_ZYNQMP is not set
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_HCTOSYS=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_LIB_KUNIT_TEST=m
+CONFIG_RTC_NVMEM=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192CE=m
+# CONFIG_RTL8192CU is not set
+CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8192E=m
+CONFIG_RTL8192SE=m
+# CONFIG_RTL8192U is not set
+CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
+CONFIG_RTL8723BS=m
+CONFIG_RTL8821AE=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_RTL_CARDS=m
+CONFIG_RTLLIB_CRYPTO_CCMP=m
+CONFIG_RTLLIB_CRYPTO_TKIP=m
+CONFIG_RTLLIB_CRYPTO_WEP=m
+CONFIG_RTLLIB=m
+CONFIG_RTLWIFI_DEBUG=y
+CONFIG_RTLWIFI=m
+# CONFIG_RTS5208 is not set
+CONFIG_RTW88_8723CS=m
+CONFIG_RTW88_8723DE=m
+CONFIG_RTW88_8723DS=m
+CONFIG_RTW88_8723DU=m
+CONFIG_RTW88_8821CE=m
+CONFIG_RTW88_8821CS=m
+CONFIG_RTW88_8821CU=m
+CONFIG_RTW88_8822BE=m
+CONFIG_RTW88_8822BS=m
+CONFIG_RTW88_8822BU=m
+CONFIG_RTW88_8822CE=m
+CONFIG_RTW88_8822CS=m
+CONFIG_RTW88_8822CU=m
+CONFIG_RTW88_DEBUGFS=y
+CONFIG_RTW88_DEBUG=y
+CONFIG_RTW88=m
+CONFIG_RTW89_8851BE=m
+CONFIG_RTW89_8852AE=m
+CONFIG_RTW89_8852BE=m
+CONFIG_RTW89_8852CE=m
+CONFIG_RTW89_8922AE=m
+CONFIG_RTW89_DEBUGFS=y
+CONFIG_RTW89_DEBUGMSG=y
+CONFIG_RTW89=m
+# CONFIG_RUNTIME_KERNEL_TESTING_MENU is not set
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+# CONFIG_RUST is not set
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RV_MON_WWNR=y
+CONFIG_RV_REACTORS=y
+CONFIG_RV_REACT_PANIC=y
+CONFIG_RV_REACT_PRINTK=y
+CONFIG_RV=y
+CONFIG_RXKAD=y
+# CONFIG_RXPERF is not set
+CONFIG_S2IO=m
+# CONFIG_S390_KPROBES_SANITY_TEST is not set
+# CONFIG_S390_MODULES_SANITY_TEST is not set
+# CONFIG_SAMPLE_FPROBE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_SATA_ACARD_AHCI=m
+CONFIG_SATA_AHCI_PLATFORM=m
+CONFIG_SATA_AHCI=y
+# CONFIG_SATA_DWC is not set
+# CONFIG_SATA_HIGHBANK is not set
+CONFIG_SATA_INIC162X=m
+CONFIG_SATA_MOBILE_LPM_POLICY=3
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_SATA_PMP=y
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_SIL24=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_SVW=m
+CONFIG_SATA_SX4=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+# CONFIG_SATA_ZPODD is not set
+# CONFIG_SBC7240_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+CONFIG_SBP_TARGET=m
+# CONFIG_SC1200_WDT is not set
+CONFIG_SC92031=m
+# CONFIG_SCA3000 is not set
+CONFIG_SCA3300=m
+CONFIG_SCD30_CORE=m
+CONFIG_SCD30_I2C=m
+CONFIG_SCD30_SERIAL=m
+# CONFIG_SCD4X is not set
+CONFIG_SCF_TORTURE_TEST=m
+CONFIG_SCHED_AUTOGROUP=y
+CONFIG_SCHED_CLUSTER=y
+CONFIG_SCHED_CORE=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHED_MC_PRIO is not set
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_SCHED_STACK_END_CHECK=y
+CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_THERMAL_PRESSURE=y
+CONFIG_SCHED_TRACER=y
+CONFIG_SC_LPASS_CORECC_7180=m
+# CONFIG_SCR24X is not set
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_ACARD=m
+# CONFIG_SCSI_ADVANSYS is not set
+CONFIG_SCSI_AIC79XX=m
+CONFIG_SCSI_AIC7XXX=m
+# CONFIG_SCSI_AIC94XX is not set
+CONFIG_SCSI_AM53C974=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_SCSI_BNX2X_FCOE=m
+CONFIG_SCSI_BUSLOGIC=m
+CONFIG_SCSI_CHELSIO_FCOE=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH=y
+CONFIG_SCSI_DMX3191D=m
+# CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_EFCT=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_ESAS2R=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FDOMAIN_PCI=m
+CONFIG_SCSI_FLASHPOINT=y
+# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set
+# CONFIG_SCSI_HISI_SAS is not set
+CONFIG_SCSI_HPSA=m
+CONFIG_SCSI_HPTIOP=m
+# CONFIG_SCSI_IMM is not set
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_IPR_DUMP=y
+CONFIG_SCSI_IPR=m
+CONFIG_SCSI_IPR_TRACE=y
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_LIB_KUNIT_TEST=m
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_MPI3MR=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+CONFIG_SCSI_MVSAS_TASKLET=y
+CONFIG_SCSI_MVUMI=m
+CONFIG_SCSI_MYRB=m
+CONFIG_SCSI_MYRS=m
+# CONFIG_SCSI_NSP32 is not set
+CONFIG_SCSI_PM8001=m
+CONFIG_SCSI_PMCRAID=m
+# CONFIG_SCSI_PPA is not set
+CONFIG_SCSI_PROC_FS=y
+CONFIG_SCSI_PROTO_TEST=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_SMARTPQI=m
+# CONFIG_SCSI_SNIC_DEBUG_FS is not set
+CONFIG_SCSI_SNIC=m
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_UFS_BSG=y
+CONFIG_SCSI_UFS_CDNS_PLATFORM=m
+# CONFIG_SCSI_UFS_DWC_TC_PCI is not set
+# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
+# CONFIG_SCSI_UFS_FAULT_INJECTION is not set
+# CONFIG_SCSI_UFSHCD is not set
+CONFIG_SCSI_UFS_HPB=y
+CONFIG_SCSI_UFS_HWMON=y
+CONFIG_SCSI_VIRTIO=m
+CONFIG_SCSI_WD719X=m
+CONFIG_SCSI=y
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SD_ADC_MODULATOR is not set
+CONFIG_SDIO_UART=m
+# CONFIG_SDX_GCC_55 is not set
+# CONFIG_SECCOMP_CACHE_DEBUG is not set
+CONFIG_SECCOMP=y
+# CONFIG_SECONDARY_TRUSTED_KEYRING_SIGNED_BY_BUILTIN is not set
+CONFIG_SECONDARY_TRUSTED_KEYRING=y
+CONFIG_SECRETMEM=y
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_SECURITY_APPARMOR is not set
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_INFINIBAND=y
+CONFIG_SECURITY_LANDLOCK=y
+# CONFIG_SECURITY_LOADPIN is not set
+# CONFIG_SECURITY_LOCKDOWN_LSM_EARLY is not set
+CONFIG_SECURITY_LOCKDOWN_LSM=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_PATH=y
+# CONFIG_SECURITY_SAFESETID is not set
+CONFIG_SECURITY_SELINUX_AVC_STATS=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
+# CONFIG_SECURITY_SELINUX_DEBUG is not set
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+# CONFIG_SECURITY_SELINUX_DISABLE is not set
+CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256
+CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9
+CONFIG_SECURITY_SELINUX=y
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITY_YAMA=y
+# CONFIG_SEG_LED_GPIO is not set
+# CONFIG_SENSEAIR_SUNRISE_CO2 is not set
+# CONFIG_SENSIRION_SGP30 is not set
+# CONFIG_SENSIRION_SGP40 is not set
+# CONFIG_SENSORS_ACBEL_FSG032 is not set
+CONFIG_SENSORS_ACPI_POWER=m
+CONFIG_SENSORS_AD7314=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADC128D818=m
+CONFIG_SENSORS_ADCXX=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+# CONFIG_SENSORS_ADM1177 is not set
+CONFIG_SENSORS_ADM1266=m
+CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADP1050=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_ADS7871=m
+CONFIG_SENSORS_ADT7310=m
+CONFIG_SENSORS_ADT7410=m
+CONFIG_SENSORS_ADT7411=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7475=m
+# CONFIG_SENSORS_AHT10 is not set
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_APDS990X=m
+CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m
+# CONFIG_SENSORS_AS370 is not set
+CONFIG_SENSORS_ASC7621=m
+CONFIG_SENSORS_ASUS_ROG_RYUJIN=m
+# CONFIG_SENSORS_ASUS_WMI_EC is not set
+# CONFIG_SENSORS_ASUS_WMI is not set
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_AXI_FAN_CONTROL=m
+CONFIG_SENSORS_BEL_PFE=m
+CONFIG_SENSORS_BH1770=m
+CONFIG_SENSORS_BPA_RS600=m
+CONFIG_SENSORS_CHIPCAP2=m
+CONFIG_SENSORS_CORSAIR_CPRO=m
+CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
+CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_DPS920AB=m
+CONFIG_SENSORS_DRIVETEMP=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DS620=m
+CONFIG_SENSORS_EMC1403=m
+# CONFIG_SENSORS_EMC2103 is not set
+CONFIG_SENSORS_EMC2305=m
+CONFIG_SENSORS_EMC6W201=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSP_3Y=m
+CONFIG_SENSORS_FTSTEUTATES=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_GIGABYTE_WATERFORCE=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
+# CONFIG_SENSORS_HMC5843_SPI is not set
+CONFIG_SENSORS_HP_WMI=m
+CONFIG_SENSORS_HS3001=m
+# CONFIG_SENSORS_I5K_AMB is not set
+CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
+CONFIG_SENSORS_IBMPEX=m
+# CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA238=m
+CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+# CONFIG_SENSORS_INSPUR_IPSPS is not set
+CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m
+# 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_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_SENSORS_ISL68137 is not set
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_JC42=m
+CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LIS3_I2C=m
+CONFIG_SENSORS_LIS3LV02D=m
+# CONFIG_SENSORS_LIS3_SPI is not set
+CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LM25066_REGULATOR=y
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LM95234=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
+CONFIG_SENSORS_LT7182S=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2947_I2C=m
+CONFIG_SENSORS_LTC2947_SPI=m
+CONFIG_SENSORS_LTC2978=m
+# CONFIG_SENSORS_LTC2978_REGULATOR is not set
+CONFIG_SENSORS_LTC2990=m
+CONFIG_SENSORS_LTC2991=m
+# CONFIG_SENSORS_LTC2992 is not set
+CONFIG_SENSORS_LTC3815=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4222=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4260=m
+CONFIG_SENSORS_LTC4261=m
+# CONFIG_SENSORS_LTC4282 is not set
+# CONFIG_SENSORS_LTC4286 is not set
+CONFIG_SENSORS_MAX1111=m
+# CONFIG_SENSORS_MAX127 is not set
+# CONFIG_SENSORS_MAX15301 is not set
+CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+# CONFIG_SENSORS_MAX16601 is not set
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+# CONFIG_SENSORS_MAX20730 is not set
+CONFIG_SENSORS_MAX20751=m
+CONFIG_SENSORS_MAX31722=m
+# CONFIG_SENSORS_MAX31730 is not set
+CONFIG_SENSORS_MAX31760=m
+# CONFIG_SENSORS_MAX31785 is not set
+CONFIG_SENSORS_MAX31790=m
+CONFIG_SENSORS_MAX34440=m
+CONFIG_SENSORS_MAX6620=m
+# CONFIG_SENSORS_MAX6621 is not set
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_MC34VR500=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_MLXREG_FAN=m
+# CONFIG_SENSORS_MP2856 is not set
+CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
+CONFIG_SENSORS_MP2975=m
+CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
+CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
+# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
+CONFIG_SENSORS_MPQ7932=m
+CONFIG_SENSORS_MPQ7932_REGULATOR=y
+CONFIG_SENSORS_MPQ8785=m
+CONFIG_SENSORS_MR75203=m
+CONFIG_SENSORS_NCT6683=m
+CONFIG_SENSORS_NCT6775_I2C=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
+CONFIG_SENSORS_NCT7904=m
+CONFIG_SENSORS_NPCM7XX=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_NZXT_KRAKEN2=m
+CONFIG_SENSORS_NZXT_KRAKEN3=m
+CONFIG_SENSORS_NZXT_SMART2=m
+# CONFIG_SENSORS_OCC_P8_I2C is not set
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_PIM4328=m
+CONFIG_SENSORS_PLI1209BC=m
+CONFIG_SENSORS_PLI1209BC_REGULATOR=y
+CONFIG_SENSORS_PM6764TR=m
+CONFIG_SENSORS_PMBUS=m
+CONFIG_SENSORS_POWERZ=m
+CONFIG_SENSORS_POWR1220=m
+CONFIG_SENSORS_PT5161L=m
+CONFIG_SENSORS_PWM_FAN=m
+# CONFIG_SENSORS_PXE1610 is not set
+CONFIG_SENSORS_Q54SJ108A2=m
+CONFIG_SENSORS_RM3100_I2C=m
+CONFIG_SENSORS_RM3100_SPI=m
+# CONFIG_SENSORS_SBRMI is not set
+CONFIG_SENSORS_SBTSI=m
+CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
+CONFIG_SENSORS_SFCTEMP=y
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+# CONFIG_SENSORS_SHT4x is not set
+CONFIG_SENSORS_SHTC1=m
+CONFIG_SENSORS_SIS5595=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
+# CONFIG_SENSORS_STPDDC60 is not set
+# CONFIG_SENSORS_STTS751 is not set
+CONFIG_SENSORS_SURFACE_FAN=m
+CONFIG_SENSORS_SY7636A=m
+CONFIG_SENSORS_TC654=m
+CONFIG_SENSORS_TC74=m
+CONFIG_SENSORS_TDA38640=m
+CONFIG_SENSORS_TDA38640_REGULATOR=y
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
+CONFIG_SENSORS_TMP108=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_TMP464=m
+CONFIG_SENSORS_TMP513=m
+# CONFIG_SENSORS_TPS23861 is not set
+CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
+CONFIG_SENSORS_TPS546D24=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_SENSORS_TSL2563 is not set
+CONFIG_SENSORS_UCD9000=m
+CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83773G=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+# CONFIG_SENSORS_W83795_FANCTRL is not set
+CONFIG_SENSORS_W83795=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_XDP710=m
+# CONFIG_SENSORS_XDPE122 is not set
+CONFIG_SENSORS_XDPE152=m
+# CONFIG_SENSORS_XGENE is not set
+CONFIG_SENSORS_ZL6100=m
+# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_DFL=m
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_8250_EXAR=m
+CONFIG_SERIAL_8250_EXTENDED=y
+# CONFIG_SERIAL_8250_FINTEK is not set
+CONFIG_SERIAL_8250_MANY_PORTS=y
+# CONFIG_SERIAL_8250_MID is not set
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_PCI1XXXX=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PERICOM=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_RT288X=y
+CONFIG_SERIAL_8250_RUNTIME_UARTS=32
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_AMBA_PL010 is not set
+# CONFIG_SERIAL_AMBA_PL011 is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+# CONFIG_SERIAL_BCM63XX is not set
+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+# CONFIG_SERIAL_EARLYCON_RISCV_SBI is not set
+# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set
+# CONFIG_SERIAL_FSL_LINFLEXUART is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_IMX_EARLYCON is not set
+CONFIG_SERIAL_JSM=m
+# CONFIG_SERIAL_KGDB_NMI is not set
+# CONFIG_SERIAL_LANTIQ is not set
+CONFIG_SERIAL_LITEUART_CONSOLE=y
+CONFIG_SERIAL_LITEUART_MAX_PORTS=1
+CONFIG_SERIAL_LITEUART=y
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_SERIAL_PCH_UART is not set
+# CONFIG_SERIAL_RP2 is not set
+CONFIG_SERIAL_SC16IS7XX_I2C=m
+CONFIG_SERIAL_SC16IS7XX=m
+CONFIG_SERIAL_SC16IS7XX_SPI=m
+# CONFIG_SERIAL_SCCNXP is not set
+CONFIG_SERIAL_SH_SCI=y
+CONFIG_SERIAL_SIFIVE_CONSOLE=y
+CONFIG_SERIAL_SIFIVE=y
+# CONFIG_SERIAL_SPRD is not set
+# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_UARTLITE is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+CONFIG_SERIO_ALTERA_PS2=m
+# CONFIG_SERIO_AMBAKMI is not set
+# CONFIG_SERIO_APBPS2 is not set
+CONFIG_SERIO_ARC_PS2=m
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
+# CONFIG_SERIO_I8042 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_OLPC_APSP is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO=y
+CONFIG_SFC_FALCON=m
+CONFIG_SFC_FALCON_MTD=y
+# CONFIG_SFC is not set
+CONFIG_SF_PDMA=y
+CONFIG_SFP=m
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_SHADOW_CALL_STACK is not set
+CONFIG_SHMEM=y
+# CONFIG_SHRINKER_DEBUG is not set
+CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
+# CONFIG_SI1133 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
+# CONFIG_SIEMENS_SIMATIC_IPC is not set
+CONFIG_SIFIVE_CCACHE=y
+CONFIG_SIFIVE_PLIC=y
+CONFIG_SIGNALFD=y
+CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+# CONFIG_SIOX is not set
+CONFIG_SIPHASH_KUNIT_TEST=m
+CONFIG_SIS190=m
+CONFIG_SIS900=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
+CONFIG_SKGE=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
+CONFIG_SLAB_FREELIST_HARDENED=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_MERGE_DEFAULT is not set
+# CONFIG_SLIMBUS is not set
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP=m
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_SLIP_SMART=y
+CONFIG_SLUB_CPU_PARTIAL=y
+# CONFIG_SLUB_DEBUG_ON is not set
+CONFIG_SLUB_DEBUG=y
+CONFIG_SLUB_KUNIT_TEST=m
+# CONFIG_SLUB_STATS is not set
+# CONFIG_SLUB_TINY is not set
+CONFIG_SLUB=y
+CONFIG_SMARTJOYPLUS_FF=y
+# CONFIG_SMB_SERVER is not set
+CONFIG_SMC_DIAG=m
+# CONFIG_SMC_LO is not set
+CONFIG_SMC=m
+# CONFIG_SM_FTL is not set
+CONFIG_SMP=y
+CONFIG_SMSC911X=m
+CONFIG_SMSC9420=m
+CONFIG_SMSC_PHY=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMS_SDIO_DRV=m
+# CONFIG_SMS_SIANO_DEBUGFS is not set
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+CONFIG_SMS_USB_DRV=m
+# CONFIG_SM_VIDEOCC_8150 is not set
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_AC97_POWER_SAVE=y
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALI5451 is not set
+CONFIG_SND_ALOOP=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+# CONFIG_SND_AMD_ACP_CONFIG is not set
+# CONFIG_SND_ASIHPI is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_ATMEL_SOC is not set
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=m
+CONFIG_SND_AUDIO_GRAPH_CARD2=m
+CONFIG_SND_AUDIO_GRAPH_CARD=m
+# CONFIG_SND_AW2 is not set
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set
+CONFIG_SND_BEBOB=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_COMPRESS_OFFLOAD=m
+CONFIG_SND_CORE_TEST=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTL_DEBUG=y
+CONFIG_SND_CTL_FAST_LOOKUP=y
+CONFIG_SND_CTL_INPUT_VALIDATION=y
+CONFIG_SND_CTL_VALIDATION=y
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_DARLA24=m
+# CONFIG_SND_DEBUG_VERBOSE is not set
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DESIGNWARE_I2S=m
+# CONFIG_SND_DESIGNWARE_PCM is not set
+CONFIG_SND_DICE=m
+CONFIG_SND_DMAENGINE_PCM=m
+CONFIG_SND_DRIVERS=y
+CONFIG_SND_DUMMY=m
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968_INPUT=y
+CONFIG_SND_ES1968=m
+CONFIG_SND_ES1968_RADIO=y
+CONFIG_SND_FIREFACE=m
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_GINA20=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132_DSP=y
+CONFIG_SND_HDA_CODEC_CA0132=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CS8409=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+# CONFIG_SND_HDA_CTL_DEV_ID is not set
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=0
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
+CONFIG_SND_HDA_PREALLOC_SIZE=2048
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m
+CONFIG_SND_HDA_SCODEC_CS35L41_SPI=m
+CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m
+CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m
+CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m
+# CONFIG_SND_HDA_TEGRA is not set
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HRTIMER=m
+# CONFIG_SND_I2S_HI6210_I2S is not set
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+# CONFIG_SND_IMX_SOC is not set
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGO=m
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_INTEL_BYT_PREFER_SOF is not set
+CONFIG_SND_ISIGHT=m
+CONFIG_SND_JACK_INJECTION_DEBUG=y
+CONFIG_SND_JACK=y
+# CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB is not set
+# CONFIG_SND_KIRKWOOD_SOC is not set
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_LOLA=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND=m
+CONFIG_SND_MAESTRO3_INPUT=y
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MAX_CARDS=32
+# CONFIG_SND_MESON_AIU is not set
+# CONFIG_SND_MESON_G12A_TOACODEC is not set
+# CONFIG_SND_MESON_G12A_TOHDMITX is not set
+# CONFIG_SND_MESON_GX_SOUND_CARD is not set
+CONFIG_SND_MIA=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_MIXER_OSS=m
+# CONFIG_SND_MMP_SOC_SSPA is not set
+CONFIG_SND_MONA=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_NM256=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_OXFW=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_PCI=y
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCMTEST=m
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_PCM_XRUN_DEBUG=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_PCXHR=m
+CONFIG_SND_PORTMAN2X4=m
+# CONFIG_SND_PPC is not set
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_RME96=m
+# CONFIG_SND_SAMSUNG_PCM is not set
+# CONFIG_SND_SAMSUNG_SPDIF is not set
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQUENCER_OSS=m
+CONFIG_SND_SEQ_UMP=y
+CONFIG_SND_SERIAL_GENERIC=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_SIMPLE_CARD=m
+CONFIG_SND_SIMPLE_CARD_UTILS=m
+# CONFIG_SND_SIS7019 is not set
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC_AC97_CODEC=m
+# CONFIG_SND_SOC_ADAU1372_I2C is not set
+# CONFIG_SND_SOC_ADAU1372_SPI is not set
+# CONFIG_SND_SOC_ADAU1701 is not set
+CONFIG_SND_SOC_ADAU1761_I2C=m
+CONFIG_SND_SOC_ADAU1761_SPI=m
+CONFIG_SND_SOC_ADAU7002=m
+CONFIG_SND_SOC_ADAU7118_HW=m
+CONFIG_SND_SOC_ADAU7118_I2C=m
+CONFIG_SND_SOC_ADI_AXI_I2S=m
+CONFIG_SND_SOC_ADI_AXI_SPDIF=m
+CONFIG_SND_SOC_ADI=m
+# CONFIG_SND_SOC_AK4104 is not set
+# CONFIG_SND_SOC_AK4118 is not set
+# CONFIG_SND_SOC_AK4375 is not set
+# CONFIG_SND_SOC_AK4458 is not set
+# CONFIG_SND_SOC_AK4554 is not set
+# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
+# CONFIG_SND_SOC_AK4642 is not set
+# CONFIG_SND_SOC_AK5386 is not set
+CONFIG_SND_SOC_AK5558=m
+# CONFIG_SND_SOC_ALC5623 is not set
+# CONFIG_SND_SOC_AMD_ACP3x is not set
+# CONFIG_SND_SOC_AMD_ACP5x is not set
+# CONFIG_SND_SOC_AMD_ACP6x is not set
+# CONFIG_SND_SOC_AMD_ACP_COMMON is not set
+# CONFIG_SND_SOC_AMD_ACP is not set
+# CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH is not set
+# CONFIG_SND_SOC_AMD_CZ_RT5645_MACH is not set
+# CONFIG_SND_SOC_AMD_PS is not set
+# CONFIG_SND_SOC_AMD_PS_MACH is not set
+# CONFIG_SND_SOC_AMD_RENOIR is not set
+# CONFIG_SND_SOC_AMD_RENOIR_MACH is not set
+# CONFIG_SND_SOC_AMD_RPL_ACP6x is not set
+# CONFIG_SND_SOC_AMD_RV_RT5682_MACH is not set
+# CONFIG_SND_SOC_AMD_VANGOGH_MACH is not set
+# CONFIG_SND_SOC_AMD_YC_MACH is not set
+# CONFIG_SND_SOC_APQ8016_SBC is not set
+# CONFIG_SND_SOC_ARNDALE is not set
+CONFIG_SND_SOC_AUDIO_IIO_AUX=m
+CONFIG_SND_SOC_AW8738=m
+CONFIG_SND_SOC_AW87390=m
+CONFIG_SND_SOC_AW88261=m
+CONFIG_SND_SOC_AW88395=m
+CONFIG_SND_SOC_AW88399=m
+CONFIG_SND_SOC_BD28623=m
+CONFIG_SND_SOC_BT_SCO=m
+CONFIG_SND_SOC_CARD_KUNIT_TEST=m
+CONFIG_SND_SOC_CHV3_CODEC=m
+CONFIG_SND_SOC_CHV3_I2S=m
+# CONFIG_SND_SOC_CROS_EC_CODEC is not set
+# CONFIG_SND_SOC_CS35L32 is not set
+# CONFIG_SND_SOC_CS35L33 is not set
+CONFIG_SND_SOC_CS35L34=m
+CONFIG_SND_SOC_CS35L35=m
+CONFIG_SND_SOC_CS35L36=m
+# CONFIG_SND_SOC_CS35L41_I2C is not set
+# CONFIG_SND_SOC_CS35L41_SPI is not set
+CONFIG_SND_SOC_CS35L45_I2C=m
+CONFIG_SND_SOC_CS35L45_SPI=m
+CONFIG_SND_SOC_CS35L56_I2C=m
+CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
+CONFIG_SND_SOC_CS4234=m
+# CONFIG_SND_SOC_CS4265 is not set
+# CONFIG_SND_SOC_CS4270 is not set
+# CONFIG_SND_SOC_CS4271_I2C is not set
+# CONFIG_SND_SOC_CS4271_SPI is not set
+CONFIG_SND_SOC_CS42L42=m
+CONFIG_SND_SOC_CS42L42_SDW=m
+CONFIG_SND_SOC_CS42L43=m
+CONFIG_SND_SOC_CS42L43_SDW=m
+# CONFIG_SND_SOC_CS42L51_I2C is not set
+# CONFIG_SND_SOC_CS42L52 is not set
+# CONFIG_SND_SOC_CS42L56 is not set
+# CONFIG_SND_SOC_CS42L73 is not set
+CONFIG_SND_SOC_CS42L83=m
+# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
+# CONFIG_SND_SOC_CS4341 is not set
+# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
+# CONFIG_SND_SOC_CS53L30 is not set
+CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
+CONFIG_SND_SOC_CX2072X=m
+CONFIG_SND_SOC_DA7213=m
+# CONFIG_SND_SOC_DAVINCI_MCASP is not set
+CONFIG_SND_SOC_DMIC=m
+CONFIG_SND_SOC_ES7134=m
+# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
+# CONFIG_SND_SOC_ES8316 is not set
+CONFIG_SND_SOC_ES8326=m
+CONFIG_SND_SOC_ES8328_I2C=m
+CONFIG_SND_SOC_ES8328=m
+CONFIG_SND_SOC_ES8328_SPI=m
+# CONFIG_SND_SOC_FSL_ASOC_CARD is not set
+# CONFIG_SND_SOC_FSL_ASRC is not set
+# CONFIG_SND_SOC_FSL_AUD2HTX is not set
+# CONFIG_SND_SOC_FSL_AUDMIX is not set
+# CONFIG_SND_SOC_FSL_EASRC is not set
+# CONFIG_SND_SOC_FSL_ESAI is not set
+# CONFIG_SND_SOC_FSL_MICFIL is not set
+# CONFIG_SND_SOC_FSL_MQS is not set
+# CONFIG_SND_SOC_FSL_RPMSG is not set
+# CONFIG_SND_SOC_FSL_SAI is not set
+# CONFIG_SND_SOC_FSL_SPDIF is not set
+# CONFIG_SND_SOC_FSL_SSI is not set
+# CONFIG_SND_SOC_FSL_XCVR is not set
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+# CONFIG_SND_SOC_GTM601 is not set
+CONFIG_SND_SOC_HDAC_HDA=m
+CONFIG_SND_SOC_HDAC_HDMI=m
+CONFIG_SND_SOC_HDA=m
+CONFIG_SND_SOC_HDMI_CODEC=m
+# CONFIG_SND_SOC_ICS43432 is not set
+CONFIG_SND_SOC_IDT821034=m
+# CONFIG_SND_SOC_IMG is not set
+# CONFIG_SND_SOC_IMX_AUDIO_RPMSG is not set
+# CONFIG_SND_SOC_IMX_AUDMIX is not set
+# CONFIG_SND_SOC_IMX_AUDMUX is not set
+# CONFIG_SND_SOC_IMX_CARD is not set
+# CONFIG_SND_SOC_IMX_ES8328 is not set
+# CONFIG_SND_SOC_IMX_HDMI is not set
+# CONFIG_SND_SOC_IMX_PCM_RPMSG is not set
+# CONFIG_SND_SOC_IMX_RPMSG is not set
+# CONFIG_SND_SOC_IMX_SGTL5000 is not set
+# CONFIG_SND_SOC_IMX_SPDIF is not set
+# CONFIG_SND_SOC_INNO_RK3036 is not set
+# CONFIG_SND_SOC_INTEL_AVS is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_DA7219 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_DMIC is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_HDAUDIO is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_I2S_TEST is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98357A is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98373 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98927 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_NAU8825 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_PROBE is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT274 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT286 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT298 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT5682 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_SSM4567 is not set
+# CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH is not set
+# CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH is not set
+# CONFIG_SND_SOC_INTEL_BROADWELL_MACH is not set
+# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYTCR_WM5102_MACH is not set
+# CONFIG_SND_SOC_INTEL_CATPT is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH is not set
+# CONFIG_SND_SOC_INTEL_CML_H is not set
+# CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_CML_LP is not set
+# CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH is not set
+# CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_HASWELL_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_RT286_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC is not set
+# CONFIG_SND_SOC_INTEL_SKYLAKE is not set
+# CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH is not set
+# CONFIG_SND_SOC_INTEL_SST is not set
+# CONFIG_SND_SOC_INTEL_SST_TOPLEVEL is not set
+# CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES is not set
+CONFIG_SND_SOC_JH7110_PWMDAC=m
+CONFIG_SND_SOC_JH7110_TDM=m
+# CONFIG_SND_SOC_LPASS_RX_MACRO is not set
+# CONFIG_SND_SOC_LPASS_TX_MACRO is not set
+# CONFIG_SND_SOC_LPASS_VA_MACRO is not set
+# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set
+CONFIG_SND_SOC=m
+CONFIG_SND_SOC_MAX9759=m
+CONFIG_SND_SOC_MAX98088=m
+# CONFIG_SND_SOC_MAX98090 is not set
+# CONFIG_SND_SOC_MAX98357A is not set
+CONFIG_SND_SOC_MAX98363=m
+CONFIG_SND_SOC_MAX98373_I2C=m
+CONFIG_SND_SOC_MAX98373=m
+CONFIG_SND_SOC_MAX98373_SDW=m
+CONFIG_SND_SOC_MAX98388=m
+CONFIG_SND_SOC_MAX98390=m
+CONFIG_SND_SOC_MAX98396=m
+# CONFIG_SND_SOC_MAX98504 is not set
+CONFIG_SND_SOC_MAX98520=m
+# CONFIG_SND_SOC_MAX9860 is not set
+CONFIG_SND_SOC_MAX9867=m
+CONFIG_SND_SOC_MAX98927=m
+# CONFIG_SND_SOC_MESON_T9015 is not set
+# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set
+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
+# CONFIG_SND_SOC_MSM8996 is not set
+# CONFIG_SND_SOC_MT6351 is not set
+# CONFIG_SND_SOC_MT6358 is not set
+# CONFIG_SND_SOC_MT6660 is not set
+# CONFIG_SND_SOC_MTK_BTCVSD is not set
+# CONFIG_SND_SOC_NAU8315 is not set
+# CONFIG_SND_SOC_NAU8540 is not set
+# CONFIG_SND_SOC_NAU8810 is not set
+# CONFIG_SND_SOC_NAU8821 is not set
+# CONFIG_SND_SOC_NAU8822 is not set
+CONFIG_SND_SOC_NAU8824=m
+# CONFIG_SND_SOC_NAU8825 is not set
+# CONFIG_SND_SOC_ODROID is not set
+# CONFIG_SND_SOC_OMAP_ABE_TWL6040 is not set
+# CONFIG_SND_SOC_OMAP_DMIC is not set
+# CONFIG_SND_SOC_OMAP_HDMI is not set
+# CONFIG_SND_SOC_OMAP_MCBSP is not set
+# CONFIG_SND_SOC_OMAP_MCPDM is not set
+# CONFIG_SND_SOC_PCM1681 is not set
+CONFIG_SND_SOC_PCM1789_I2C=m
+# CONFIG_SND_SOC_PCM179X_I2C is not set
+# CONFIG_SND_SOC_PCM179X_SPI is not set
+CONFIG_SND_SOC_PCM186X_I2C=m
+CONFIG_SND_SOC_PCM186X_SPI=m
+CONFIG_SND_SOC_PCM3060_I2C=m
+CONFIG_SND_SOC_PCM3060_SPI=m
+# CONFIG_SND_SOC_PCM3168A_I2C is not set
+# CONFIG_SND_SOC_PCM3168A_SPI is not set
+# CONFIG_SND_SOC_PCM5102A is not set
+# CONFIG_SND_SOC_PCM512x_I2C is not set
+# CONFIG_SND_SOC_PCM512x is not set
+# CONFIG_SND_SOC_PCM512x_SPI is not set
+CONFIG_SND_SOC_PCM6240=m
+# CONFIG_SND_SOC_PEB2466 is not set
+# CONFIG_SND_SOC_QCOM is not set
+# CONFIG_SND_SOC_QDSP6 is not set
+# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set
+# CONFIG_SND_SOC_RK3328 is not set
+# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set
+# CONFIG_SND_SOC_RK817 is not set
+CONFIG_SND_SOC_RL6231=m
+CONFIG_SND_SOC_RT1017_SDCA_SDW=m
+# CONFIG_SND_SOC_RT1308 is not set
+# CONFIG_SND_SOC_RT1308_SDW is not set
+# CONFIG_SND_SOC_RT1316_SDW is not set
+CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
+# CONFIG_SND_SOC_RT5616 is not set
+# CONFIG_SND_SOC_RT5631 is not set
+CONFIG_SND_SOC_RT5640=m
+CONFIG_SND_SOC_RT5659=m
+CONFIG_SND_SOC_RT5660=m
+# CONFIG_SND_SOC_RT5663 is not set
+# CONFIG_SND_SOC_RT5677 is not set
+# CONFIG_SND_SOC_RT5677_SPI is not set
+CONFIG_SND_SOC_RT5682_SDW=m
+CONFIG_SND_SOC_RT700_SDW=m
+CONFIG_SND_SOC_RT711_SDCA_SDW=m
+CONFIG_SND_SOC_RT711_SDW=m
+CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m
+# CONFIG_SND_SOC_RT712_SDCA_SDW is not set
+CONFIG_SND_SOC_RT715_SDCA_SDW=m
+CONFIG_SND_SOC_RT715_SDW=m
+CONFIG_SND_SOC_RT722_SDCA_SDW=m
+# CONFIG_SND_SOC_RT9120 is not set
+CONFIG_SND_SOC_RTQ9128=m
+# CONFIG_SND_SOC_SAMSUNG_ARIES_WM8994 is not set
+# CONFIG_SND_SOC_SAMSUNG is not set
+# CONFIG_SND_SOC_SAMSUNG_MIDAS_WM1811 is not set
+# CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF is not set
+# CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994 is not set
+# CONFIG_SND_SOC_SC7180 is not set
+# CONFIG_SND_SOC_SDM845 is not set
+# CONFIG_SND_SOC_SDW_MOCKUP is not set
+# CONFIG_SND_SOC_SGTL5000 is not set
+CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m
+CONFIG_SND_SOC_SIMPLE_MUX=m
+# CONFIG_SND_SOC_SM8250 is not set
+CONFIG_SND_SOC_SMA1303=m
+# CONFIG_SND_SOC_SMDK_WM8994_PCM is not set
+# CONFIG_SND_SOC_SNOW is not set
+CONFIG_SND_SOC_SOF_ACPI=m
+# CONFIG_SND_SOC_SOF_ALDERLAKE is not set
+# CONFIG_SND_SOC_SOF_AMD_TOPLEVEL is not set
+# CONFIG_SND_SOC_SOF_APOLLOLAKE is not set
+# CONFIG_SND_SOC_SOF_BAYTRAIL is not set
+# CONFIG_SND_SOC_SOF_BROADWELL is not set
+# CONFIG_SND_SOC_SOF_CANNONLAKE is not set
+# CONFIG_SND_SOC_SOF_COFFEELAKE is not set
+# CONFIG_SND_SOC_SOF_COMETLAKE is not set
+# CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set
+# CONFIG_SND_SOC_SOF_ELKHARTLAKE is not set
+# CONFIG_SND_SOC_SOF_GEMINILAKE is not set
+# CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC is not set
+# CONFIG_SND_SOC_SOF_HDA_LINK is not set
+CONFIG_SND_SOC_SOF_HDA_PROBES=m
+# CONFIG_SND_SOC_SOF_ICELAKE is not set
+# CONFIG_SND_SOC_SOF_IMX8M_SUPPORT is not set
+# CONFIG_SND_SOC_SOF_IMX8_SUPPORT is not set
+# CONFIG_SND_SOC_SOF_IMX_TOPLEVEL is not set
+# CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE is not set
+# CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL is not set
+# CONFIG_SND_SOC_SOF_JASPERLAKE is not set
+# CONFIG_SND_SOC_SOF_KABYLAKE is not set
+# CONFIG_SND_SOC_SOF_MERRIFIELD is not set
+# CONFIG_SND_SOC_SOF_METEORLAKE is not set
+# CONFIG_SND_SOC_SOF_MT8195 is not set
+# CONFIG_SND_SOC_SOF_OF is not set
+CONFIG_SND_SOC_SOF_PCI=m
+# CONFIG_SND_SOC_SOF_SKYLAKE is not set
+# CONFIG_SND_SOC_SOF_TIGERLAKE is not set
+CONFIG_SND_SOC_SOF_TOPLEVEL=y
+CONFIG_SND_SOC_SPDIF=m
+# CONFIG_SND_SOC_SRC4XXX_I2C is not set
+# CONFIG_SND_SOC_SSM2305 is not set
+# CONFIG_SND_SOC_SSM2518 is not set
+# CONFIG_SND_SOC_SSM2602_I2C is not set
+# CONFIG_SND_SOC_SSM2602_SPI is not set
+CONFIG_SND_SOC_SSM3515=m
+# CONFIG_SND_SOC_SSM4567 is not set
+# CONFIG_SND_SOC_STA32X is not set
+# CONFIG_SND_SOC_STA350 is not set
+CONFIG_SND_SOC_STARFIVE=m
+# CONFIG_SND_SOC_STI_SAS is not set
+# CONFIG_SND_SOC_STM32_DFSDM is not set
+# CONFIG_SND_SOC_STM32_I2S is not set
+# CONFIG_SND_SOC_STM32_SAI is not set
+# CONFIG_SND_SOC_STM32_SPDIFRX is not set
+# CONFIG_SND_SOC_STORM is not set
+# CONFIG_SND_SOC_TAS2552 is not set
+CONFIG_SND_SOC_TAS2562=m
+CONFIG_SND_SOC_TAS2764=m
+CONFIG_SND_SOC_TAS2770=m
+CONFIG_SND_SOC_TAS2780=m
+CONFIG_SND_SOC_TAS2781_I2C=m
+# CONFIG_SND_SOC_TAS5086 is not set
+# CONFIG_SND_SOC_TAS571X is not set
+# CONFIG_SND_SOC_TAS5720 is not set
+CONFIG_SND_SOC_TAS5805M=m
+CONFIG_SND_SOC_TAS6424=m
+CONFIG_SND_SOC_TDA7419=m
+# CONFIG_SND_SOC_TEGRA186_DSPK is not set
+# CONFIG_SND_SOC_TEGRA20_AC97 is not set
+# CONFIG_SND_SOC_TEGRA20_DAS is not set
+# CONFIG_SND_SOC_TEGRA20_I2S is not set
+# CONFIG_SND_SOC_TEGRA20_SPDIF is not set
+# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set
+# CONFIG_SND_SOC_TEGRA210_AHUB is not set
+# CONFIG_SND_SOC_TEGRA210_DMIC is not set
+# CONFIG_SND_SOC_TEGRA210_I2S is not set
+# CONFIG_SND_SOC_TEGRA30_AHUB is not set
+# CONFIG_SND_SOC_TEGRA30_I2S is not set
+# CONFIG_SND_SOC_TEGRA_ALC5632 is not set
+# CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD is not set
+# CONFIG_SND_SOC_TEGRA is not set
+# CONFIG_SND_SOC_TEGRA_MACHINE_DRV is not set
+# CONFIG_SND_SOC_TEGRA_MAX98090 is not set
+# CONFIG_SND_SOC_TEGRA_RT5640 is not set
+# CONFIG_SND_SOC_TEGRA_RT5677 is not set
+# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set
+# CONFIG_SND_SOC_TEGRA_TRIMSLICE is not set
+# CONFIG_SND_SOC_TEGRA_WM8753 is not set
+# CONFIG_SND_SOC_TEGRA_WM8903 is not set
+# CONFIG_SND_SOC_TEGRA_WM9712 is not set
+# CONFIG_SND_SOC_TFA9879 is not set
+# CONFIG_SND_SOC_TFA989X is not set
+CONFIG_SND_SOC_TLV320ADC3XXX=m
+CONFIG_SND_SOC_TLV320ADCX140=m
+# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC23 is not set
+# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
+# CONFIG_SND_SOC_TLV320AIC31XX is not set
+CONFIG_SND_SOC_TLV320AIC32X4_I2C=m
+CONFIG_SND_SOC_TLV320AIC32X4_SPI=m
+# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC3X is not set
+# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set
+# CONFIG_SND_SOC_TOPOLOGY_BUILD is not set
+CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
+# CONFIG_SND_SOC_TPA6130A2 is not set
+# CONFIG_SND_SOC_TS3A227E is not set
+CONFIG_SND_SOC_TSCS42XX=m
+# CONFIG_SND_SOC_TSCS454 is not set
+# CONFIG_SND_SOC_UDA1334 is not set
+CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
+# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
+# CONFIG_SND_SOC_WCD938X_SDW is not set
+CONFIG_SND_SOC_WCD939X_SDW=m
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
+# CONFIG_SND_SOC_WM8580 is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8728 is not set
+CONFIG_SND_SOC_WM8731_I2C=m
+CONFIG_SND_SOC_WM8731=m
+CONFIG_SND_SOC_WM8731_SPI=m
+# CONFIG_SND_SOC_WM8737 is not set
+# CONFIG_SND_SOC_WM8741 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8770 is not set
+# CONFIG_SND_SOC_WM8776 is not set
+# CONFIG_SND_SOC_WM8782 is not set
+CONFIG_SND_SOC_WM8804_I2C=m
+CONFIG_SND_SOC_WM8804=m
+# CONFIG_SND_SOC_WM8804_SPI is not set
+# CONFIG_SND_SOC_WM8903 is not set
+# CONFIG_SND_SOC_WM8904 is not set
+CONFIG_SND_SOC_WM8940=m
+# CONFIG_SND_SOC_WM8960 is not set
+CONFIG_SND_SOC_WM8961=m
+# CONFIG_SND_SOC_WM8962 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8978 is not set
+# CONFIG_SND_SOC_WM8985 is not set
+# CONFIG_SND_SOC_WSA881X is not set
+CONFIG_SND_SOC_WSA883X=m
+CONFIG_SND_SOC_WSA884X=m
+# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set
+# CONFIG_SND_SOC_XILINX_I2S is not set
+# CONFIG_SND_SOC_XILINX_SPDIF is not set
+# CONFIG_SND_SOC_XTFPGA_I2S is not set
+CONFIG_SND_SOC_ZL38060=m
+CONFIG_SND_SONICVIBES=m
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI is not set
+# CONFIG_SND_SUN4I_CODEC is not set
+# CONFIG_SND_SUN4I_I2S is not set
+# CONFIG_SND_SUN4I_SPDIF is not set
+# CONFIG_SND_SUN50I_CODEC_ANALOG is not set
+# CONFIG_SND_SUN8I_CODEC_ANALOG is not set
+# CONFIG_SND_SUN8I_CODEC is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_TEST_COMPONENT is not set
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_UMP_LEGACY_RAWMIDI=y
+CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_AUDIO_MIDI_V2=y
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_USB_PODHD=m
+CONFIG_SND_USB_POD=m
+CONFIG_SND_USB_TONEPORT=m
+CONFIG_SND_USB_UA101=m
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_VARIAX=m
+CONFIG_SND_USB=y
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_VIRTIO=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+# CONFIG_SND_X86 is not set
+# CONFIG_SND_XEN_FRONTEND is not set
+CONFIG_SND_YMFPCI=m
+CONFIG_SNET_VDPA=m
+CONFIG_SOC_STARFIVE=y
+# CONFIG_SOC_TI is not set
+CONFIG_SOFTLOCKUP_DETECTOR_INTR_STORM=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_SONY_FF=y
+# CONFIG_SONYPI is not set
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+# CONFIG_SOUNDWIRE_AMD is not set
+# CONFIG_SOUNDWIRE_CADENCE is not set
+CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m
+# CONFIG_SOUNDWIRE_INTEL is not set
+# CONFIG_SOUNDWIRE is not set
+# CONFIG_SOUNDWIRE_QCOM is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_SPARSEMEM=y
+CONFIG_SPEAKUP=m
+CONFIG_SPEAKUP_SYNTH_ACNTSA=m
+CONFIG_SPEAKUP_SYNTH_APOLLO=m
+CONFIG_SPEAKUP_SYNTH_AUDPTR=m
+CONFIG_SPEAKUP_SYNTH_BNS=m
+# CONFIG_SPEAKUP_SYNTH_DECEXT is not set
+CONFIG_SPEAKUP_SYNTH_DECTLK=m
+# CONFIG_SPEAKUP_SYNTH_DUMMY is not set
+CONFIG_SPEAKUP_SYNTH_LTLK=m
+CONFIG_SPEAKUP_SYNTH_SOFT=m
+CONFIG_SPEAKUP_SYNTH_SPKOUT=m
+CONFIG_SPEAKUP_SYNTH_TXPRT=m
+CONFIG_SPI_ALTERA_CORE=m
+CONFIG_SPI_ALTERA_DFL=m
+# CONFIG_SPI_ALTERA is not set
+CONFIG_SPI_AMD=y
+CONFIG_SPI_AX88796C_COMPRESSION=y
+CONFIG_SPI_AX88796C=m
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_CADENCE is not set
+CONFIG_SPI_CADENCE_QUADSPI=m
+# CONFIG_SPI_CADENCE_XSPI is not set
+CONFIG_SPI_CH341=m
+# CONFIG_SPI_CS42L43 is not set
+# CONFIG_SPI_DEBUG is not set
+# CONFIG_SPI_DESIGNWARE is not set
+CONFIG_SPI_DLN2=m
+CONFIG_SPI_FSL_LPSPI=m
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_HISI_KUNPENG is not set
+# CONFIG_SPI_HISI_SFC_V3XX is not set
+# CONFIG_SPI_LANTIQ_SSC is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_MICROCHIP_CORE=m
+CONFIG_SPI_MICROCHIP_CORE_QSPI=m
+CONFIG_SPI_MUX=m
+# CONFIG_SPI_MXIC is not set
+# CONFIG_SPI_OC_TINY is not set
+CONFIG_SPI_PCI1XXXX=m
+# CONFIG_SPI_PL022 is not set
+# CONFIG_SPI_PXA2XX is not set
+# CONFIG_SPI_ROCKCHIP is not set
+# CONFIG_SPI_SC18IS602 is not set
+CONFIG_SPI_SIFIVE=y
+# CONFIG_SPI_SLAVE is not set
+CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m
+CONFIG_SPI_SLAVE_TIME=m
+CONFIG_SPI_SN_F_OSPI=m
+CONFIG_SPI_SPIDEV=m
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_TOPCLIFF_PCH is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+CONFIG_SPI=y
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
+# CONFIG_SPMI_HISI3670 is not set
+# CONFIG_SPMI is not set
+# CONFIG_SPS30_I2C is not set
+# CONFIG_SPS30_SERIAL is not set
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
+# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set
+# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set
+CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU=y
+# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set
+# CONFIG_SQUASHFS_DECOMP_MULTI is not set
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+# CONFIG_SQUASHFS_DECOMP_SINGLE is not set
+# CONFIG_SQUASHFS_EMBEDDED is not set
+# CONFIG_SQUASHFS_FILE_CACHE is not set
+CONFIG_SQUASHFS_FILE_DIRECT=y
+CONFIG_SQUASHFS_LZ4=y
+CONFIG_SQUASHFS_LZO=y
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_XZ=y
+CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
+# CONFIG_SRAM is not set
+# CONFIG_SRF04 is not set
+# CONFIG_SRF08 is not set
+CONFIG_SSB_DRIVER_GPIO=y
+CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB=m
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSFDC is not set
+CONFIG_SSIF_IPMI_BMC=m
+CONFIG_STACKDEPOT_MAX_FRAMES=64
+CONFIG_STACK_HASH_ORDER=20
+CONFIG_STACKINIT_KUNIT_TEST=m
+CONFIG_STACKPROTECTOR_PER_TASK=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_STACKPROTECTOR=y
+# CONFIG_STACKTRACE_BUILD_ID is not set
+CONFIG_STACK_TRACER=y
+CONFIG_STACK_VALIDATION=y
+# CONFIG_STAGING_MEDIA_DEPRECATED is not set
+CONFIG_STAGING_MEDIA=y
+CONFIG_STAGING=y
+CONFIG_STANDALONE=y
+CONFIG_STARFIVE_JH8100_INTC=y
+# CONFIG_STARFIVE_STARLINK_CACHE is not set
+# CONFIG_STARFIVE_STARLINK_PMU is not set
+CONFIG_STARFIVE_WATCHDOG=y
+# CONFIG_STATIC_CALL_SELFTEST is not set
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_STE10XP=m
+CONFIG_STEAM_FF=y
+CONFIG_STK3310=m
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
+# CONFIG_STM_DUMMY is not set
+CONFIG_STM=m
+CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_PCI is not set
+CONFIG_STMMAC_PLATFORM=m
+# CONFIG_STMMAC_SELFTESTS is not set
+# CONFIG_STM_PROTO_BASIC is not set
+# CONFIG_STM_PROTO_SYS_T is not set
+# CONFIG_STM_SOURCE_CONSOLE is not set
+# CONFIG_STM_SOURCE_FTRACE is not set
+# CONFIG_STM_SOURCE_HEARTBEAT is not set
+CONFIG_STRCAT_KUNIT_TEST=m
+CONFIG_STRICT_DEVMEM=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_STRING_HELPERS_KUNIT_TEST=m
+CONFIG_STRING_KUNIT_TEST=m
+# CONFIG_STRING_SELFTEST is not set
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_STRSCPY_KUNIT_TEST=m
+CONFIG_ST_UVIS25_I2C=m
+CONFIG_ST_UVIS25=m
+CONFIG_ST_UVIS25_SPI=m
+CONFIG_SUN20I_D1_CCU=y
+CONFIG_SUN20I_D1_R_CCU=y
+# CONFIG_SUN50I_DE2_BUS is not set
+# CONFIG_SUN50I_IOMMU is not set
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_SUNGEM=m
+CONFIG_SUN_PARTITION=y
+CONFIG_SUNRPC_DEBUG=y
+CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES=y
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_XPRT_RDMA=m
+# CONFIG_SURFACE_3_POWER_OPREGION is not set
+CONFIG_SURFACE_ACPI_NOTIFY=m
+CONFIG_SURFACE_AGGREGATOR_BUS=y
+CONFIG_SURFACE_AGGREGATOR_CDEV=m
+# CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set
+CONFIG_SURFACE_AGGREGATOR_HUB=m
+CONFIG_SURFACE_AGGREGATOR=m
+CONFIG_SURFACE_AGGREGATOR_REGISTRY=m
+CONFIG_SURFACE_AGGREGATOR_TABLET_SWITCH=m
+CONFIG_SURFACE_DTX=m
+CONFIG_SURFACE_GPE=m
+CONFIG_SURFACE_HID=m
+CONFIG_SURFACE_HOTPLUG=m
+CONFIG_SURFACE_KBD=m
+CONFIG_SURFACE_PLATFORM_PROFILE=m
+CONFIG_SURFACE_PLATFORMS=y
+CONFIG_SURFACE_PRO3_BUTTON=m
+# CONFIG_SUSPEND_SKIP_SYNC is not set
+CONFIG_SUSPEND=y
+CONFIG_SWAP=y
+# CONFIG_SWIOTLB_DYNAMIC is not set
+# CONFIG_SW_SYNC is not set
+CONFIG_SX9310=m
+CONFIG_SX9324=m
+CONFIG_SX9360=m
+# CONFIG_SX9500 is not set
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_SYNC_FILE=y
+CONFIG_SYNCLINK_GT=m
+CONFIG_SYN_COOKIES=y
+CONFIG_SYNTH_EVENT_GEN_TEST=m
+CONFIG_SYNTH_EVENTS=y
+CONFIG_SYSCON_REBOOT_MODE=y
+CONFIG_SYSCTL_KUNIT_TEST=m
+CONFIG_SYSCTL=y
+CONFIG_SYSFB_SIMPLEFB=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_SYSFS_SYSCALL=y
+# CONFIG_SYSTEM76_ACPI is not set
+CONFIG_SYSTEM_BLACKLIST_AUTH_UPDATE=y
+CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
+CONFIG_SYSTEM_BLACKLIST_KEYRING=y
+CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
+CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
+# CONFIG_SYSTEMPORT is not set
+# CONFIG_SYSTEM_REVOCATION_LIST is not set
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_SYSV_FS=m
+CONFIG_SYSVIPC=y
+# CONFIG_T5403 is not set
+CONFIG_TABLET_SERIAL_WACOM4=m
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_HANWANG=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_PEGASUS=m
+CONFIG_TARGET_CORE=m
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_TASKS_RCU=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_XACCT=y
+CONFIG_TCG_ATMEL=m
+CONFIG_TCG_CRB=y
+# CONFIG_TCG_INFINEON is not set
+CONFIG_TCG_NSC=m
+CONFIG_TCG_TIS_I2C_ATMEL=m
+CONFIG_TCG_TIS_I2C_CR50=m
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
+CONFIG_TCG_TIS_SPI_CR50=y
+CONFIG_TCG_TIS_SPI=m
+# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
+# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
+CONFIG_TCG_TIS=y
+CONFIG_TCG_TPM2_HMAC=y
+CONFIG_TCG_TPM=y
+CONFIG_TCG_VTPM_PROXY=m
+# CONFIG_TCG_XEN is not set
+CONFIG_TCM_FC=m
+CONFIG_TCM_FILEIO=m
+CONFIG_TCM_IBLOCK=m
+CONFIG_TCM_PSCSI=m
+# CONFIG_TCM_QLA2XXX_DEBUG is not set
+CONFIG_TCM_QLA2XXX=m
+CONFIG_TCM_USER2=m
+CONFIG_TCP_AO=y
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_BBR=m
+CONFIG_TCP_CONG_BIC=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HTCP=m
+CONFIG_TCP_CONG_HYBLA=m
+CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_LP=m
+CONFIG_TCP_CONG_NV=m
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_VENO=m
+CONFIG_TCP_CONG_WESTWOOD=m
+CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_MD5SIG=y
+# CONFIG_TCS3414 is not set
+# CONFIG_TCS3472 is not set
+CONFIG_TDX_GUEST_DRIVER=m
+CONFIG_TEE=m
+CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
+CONFIG_TELCLOCK=m
+CONFIG_TERANETICS_PHY=m
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_BITOPS is not set
+# CONFIG_TEST_BLACKHOLE_DEV is not set
+CONFIG_TEST_BPF=m
+# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set
+CONFIG_TEST_CPUMASK=m
+# CONFIG_TEST_DHRY is not set
+# CONFIG_TEST_DIV64 is not set
+CONFIG_TEST_DYNAMIC_DEBUG=m
+# CONFIG_TEST_FIRMWARE is not set
+CONFIG_TEST_FPU=m
+# CONFIG_TEST_FREE_PAGES is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_HEXDUMP is not set
+CONFIG_TEST_HMM=m
+# CONFIG_TEST_IDA is not set
+CONFIG_TEST_IOV_ITER=m
+# CONFIG_TEST_KMOD is not set
+CONFIG_TEST_KSTRTOX=y
+CONFIG_TEST_LIST_SORT=m
+# CONFIG_TEST_LKM is not set
+CONFIG_TEST_LOCKUP=m
+# CONFIG_TEST_MAPLE_TREE is not set
+# CONFIG_TEST_MEMCAT_P is not set
+# CONFIG_TEST_MEMINIT is not set
+CONFIG_TEST_MIN_HEAP=m
+# CONFIG_TEST_OBJAGG is not set
+# CONFIG_TEST_OBJPOOL is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_PARMAN is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_REF_TRACKER is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_SCANF is not set
+# CONFIG_TEST_SIPHASH is not set
+CONFIG_TEST_SORT=m
+# CONFIG_TEST_STACKINIT is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+CONFIG_TEST_STRING_HELPERS=m
+# CONFIG_TEST_STRSCPY is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UBSAN is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_UUID is not set
+CONFIG_TEST_VMALLOC=m
+# CONFIG_TEST_XARRAY is not set
+# CONFIG_THERMAL_DEBUGFS is not set
+# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+# CONFIG_THERMAL_EMULATION is not set
+# CONFIG_THERMAL_GOV_BANG_BANG is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
+CONFIG_THERMAL_GOV_STEP_WISE=y
+# CONFIG_THERMAL_GOV_USER_SPACE is not set
+CONFIG_THERMAL_HWMON=y
+# CONFIG_THERMAL_MMIO is not set
+CONFIG_THERMAL_NETLINK=y
+# CONFIG_THERMAL_OF is not set
+CONFIG_THERMAL_STATISTICS=y
+# CONFIG_THERMAL_WRITABLE_TRIPS is not set
+CONFIG_THERMAL=y
+CONFIG_THREAD_SIZE_ORDER=3
+CONFIG_THRUSTMASTER_FF=y
+# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADC0832 is not set
+# CONFIG_TI_ADC084S021 is not set
+# CONFIG_TI_ADC108S102 is not set
+# CONFIG_TI_ADC12138 is not set
+CONFIG_TI_ADC128S052=m
+# CONFIG_TI_ADC161S626 is not set
+CONFIG_TI_ADS1015=m
+CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
+# CONFIG_TI_ADS124S08 is not set
+# CONFIG_TI_ADS1298 is not set
+CONFIG_TI_ADS131E08=m
+CONFIG_TI_ADS7924=m
+# CONFIG_TI_ADS7950 is not set
+CONFIG_TI_ADS8344=m
+# CONFIG_TI_ADS8688 is not set
+# CONFIG_TICK_CPU_ACCOUNTING is not set
+# CONFIG_TI_CPSW_PHY_SEL is not set
+# CONFIG_TI_DAC082S085 is not set
+# CONFIG_TI_DAC5571 is not set
+CONFIG_TI_DAC7311=m
+# CONFIG_TI_DAC7612 is not set
+CONFIG_TIFM_7XX1=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIGON3_HWMON=y
+CONFIG_TIGON3=m
+CONFIG_TI_LMP92064=m
+CONFIG_TIME_KUNIT_TEST=m
+CONFIG_TIME_NS=y
+CONFIG_TIMERFD=y
+CONFIG_TIMERLAT_TRACER=y
+# CONFIG_TINYDRM_HX8357D is not set
+CONFIG_TINYDRM_ILI9163=m
+# CONFIG_TINYDRM_ILI9225 is not set
+# CONFIG_TINYDRM_ILI9341 is not set
+CONFIG_TINYDRM_ILI9486=m
+# CONFIG_TINYDRM_MI0283QT is not set
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
+# CONFIG_TINYDRM_ST7735R is not set
+CONFIG_TIPC_CRYPTO=y
+CONFIG_TIPC_DIAG=m
+CONFIG_TIPC=m
+# CONFIG_TIPC_MEDIA_IB is not set
+CONFIG_TIPC_MEDIA_UDP=y
+# CONFIG_TI_ST is not set
+# CONFIG_TI_TLC4541 is not set
+# CONFIG_TI_TMAG5273 is not set
+CONFIG_TI_TSC2046=m
+CONFIG_TLAN=m
+CONFIG_TLS_DEVICE=y
+CONFIG_TLS=m
+# CONFIG_TLS_TOE is not set
+# CONFIG_TMP006 is not set
+# CONFIG_TMP007 is not set
+CONFIG_TMP117=m
+CONFIG_TMPFS_INODE64=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_QUOTA=y
+CONFIG_TMPFS_XATTR=y
+CONFIG_TMPFS=y
+CONFIG_TORTURE_TEST=m
+# CONFIG_TOUCHSCREEN_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_AR1021_I2C is not set
+CONFIG_TOUCHSCREEN_ATMEL_MXT=m
+# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set
+CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_BU21029 is not set
+# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set
+# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set
+CONFIG_TOUCHSCREEN_COLIBRI_VF50=m
+CONFIG_TOUCHSCREEN_CY8CTMA140=m
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
+CONFIG_TOUCHSCREEN_CYTTSP5=m
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_DMI is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+CONFIG_TOUCHSCREEN_EDT_FT5X06=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_EGALAX=m
+# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
+# CONFIG_TOUCHSCREEN_EKTF2127 is not set
+CONFIG_TOUCHSCREEN_ELAN=m
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_EXC3000 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C is not set
+# CONFIG_TOUCHSCREEN_GOODIX_BERLIN_SPI is not set
+# CONFIG_TOUCHSCREEN_GOODIX is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_HIDEEP is not set
+CONFIG_TOUCHSCREEN_HIMAX_HX83112B=m
+CONFIG_TOUCHSCREEN_HYCON_HY46XX=m
+CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=m
+CONFIG_TOUCHSCREEN_ILI210X=m
+CONFIG_TOUCHSCREEN_ILITEK=m
+CONFIG_TOUCHSCREEN_IMAGIS=m
+# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+CONFIG_TOUCHSCREEN_IQS5XX=m
+CONFIG_TOUCHSCREEN_IQS7211=m
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+CONFIG_TOUCHSCREEN_MCS5000=m
+# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_MMS114=m
+CONFIG_TOUCHSCREEN_MSG2638=m
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS=m
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+CONFIG_TOUCHSCREEN_PIXCIR=m
+CONFIG_TOUCHSCREEN_RM_TS=m
+# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
+# CONFIG_TOUCHSCREEN_S6SY761 is not set
+CONFIG_TOUCHSCREEN_SILEAD=m
+CONFIG_TOUCHSCREEN_SIS_I2C=m
+CONFIG_TOUCHSCREEN_ST1232=m
+# CONFIG_TOUCHSCREEN_STMFTS is not set
+# CONFIG_TOUCHSCREEN_SUR40 is not set
+# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set
+# CONFIG_TOUCHSCREEN_SX8654 is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_TPS6507X is not set
+CONFIG_TOUCHSCREEN_TS4800=m
+# CONFIG_TOUCHSCREEN_TSC2004 is not set
+# CONFIG_TOUCHSCREEN_TSC2005 is not set
+CONFIG_TOUCHSCREEN_TSC2007_IIO=y
+CONFIG_TOUCHSCREEN_TSC2007=m
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_ELO=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_NEXIO=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_WACOM_I2C=m
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
+# CONFIG_TOUCHSCREEN_WM97XX is not set
+CONFIG_TOUCHSCREEN_ZET6223=m
+CONFIG_TOUCHSCREEN_ZFORCE=m
+CONFIG_TOUCHSCREEN_ZINITIX=m
+# CONFIG_TPL0102 is not set
+CONFIG_TPM_KEY_PARSER=m
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+CONFIG_TPS6594_ESM=m
+CONFIG_TPS6594_PFSM=m
+# CONFIG_TPS68470_PMIC_OPREGION is not set
+CONFIG_TRACE_EVAL_MAP_FILE=y
+# CONFIG_TRACE_EVENT_INJECT is not set
+# CONFIG_TRACE_MMIO_ACCESS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
+# CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set
+CONFIG_TRANSPARENT_HUGEPAGE=y
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_TRUSTED_KEYS_TEE=y
+CONFIG_TRUSTED_KEYS_TPM=y
+CONFIG_TRUSTED_KEYS=y
+# CONFIG_TS4800_IRQ is not set
+# CONFIG_TS4800_WATCHDOG is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2591 is not set
+CONFIG_TSL2772=m
+# CONFIG_TSL4531 is not set
+CONFIG_TSNEP=m
+# CONFIG_TSNEP_SELFTESTS is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
+# CONFIG_TTY_PRINTK is not set
+CONFIG_TTY=y
+CONFIG_TULIP=m
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_TUNE_GENERIC=y
+CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+CONFIG_TXGBE=m
+# CONFIG_TYPEC_ANX7411 is not set
+CONFIG_TYPEC_DP_ALTMODE=m
+CONFIG_TYPEC_FUSB302=m
+CONFIG_TYPEC_HD3SS3220=m
+CONFIG_TYPEC=m
+CONFIG_TYPEC_MUX_FSA4480=m
+CONFIG_TYPEC_MUX_GPIO_SBU=m
+CONFIG_TYPEC_MUX_IT5205=m
+CONFIG_TYPEC_MUX_NB7VPQ904M=m
+CONFIG_TYPEC_MUX_PI3USB30532=m
+CONFIG_TYPEC_MUX_PTN36502=m
+# CONFIG_TYPEC_MUX_WCD939X_USBSS is not set
+CONFIG_TYPEC_NVIDIA_ALTMODE=m
+# CONFIG_TYPEC_QCOM_PMIC is not set
+# CONFIG_TYPEC_RT1711H is not set
+CONFIG_TYPEC_RT1719=m
+CONFIG_TYPEC_STUSB160X=m
+CONFIG_TYPEC_TCPCI=m
+CONFIG_TYPEC_TCPCI_MAXIM=m
+CONFIG_TYPEC_TCPCI_MT6370=m
+CONFIG_TYPEC_TCPM=m
+CONFIG_TYPEC_TPS6598X=m
+CONFIG_TYPEC_UCSI=m
+CONFIG_TYPEC_WUSB3801=m
+CONFIG_TYPHOON=m
+CONFIG_UACCE=m
+CONFIG_UAPI_HEADER_TEST=y
+CONFIG_UBIFS_ATIME_SUPPORT=y
+# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
+CONFIG_UBIFS_FS_AUTHENTICATION=y
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_SECURITY=y
+CONFIG_UBIFS_FS_XATTR=y
+# CONFIG_UBSAN_ALIGNMENT is not set
+# CONFIG_UBSAN_BOOL is not set
+CONFIG_UBSAN_BOUNDS=y
+# CONFIG_UBSAN_DIV_ZERO is not set
+# CONFIG_UBSAN_ENUM is not set
+CONFIG_UBSAN_SANITIZE_ALL=y
+CONFIG_UBSAN_SHIFT=y
+# CONFIG_UBSAN_SIGNED_WRAP is not set
+# CONFIG_UBSAN_TRAP is not set
+# CONFIG_UBSAN_UNREACHABLE is not set
+CONFIG_UBSAN=y
+CONFIG_UCLAMP_BUCKETS_COUNT=5
+CONFIG_UCLAMP_TASK_GROUP=y
+CONFIG_UCLAMP_TASK=y
+CONFIG_UCSI_ACPI=m
+CONFIG_UCSI_CCG=m
+CONFIG_UCSI_STM32G0=m
+CONFIG_UDF_FS=m
+CONFIG_UDMABUF=y
+# CONFIG_UEVENT_HELPER is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+CONFIG_UHID=m
+CONFIG_UID16=y
+# CONFIG_UIO_AEC is not set
+# CONFIG_UIO_CIF is not set
+CONFIG_UIO_DFL=m
+# CONFIG_UIO_DMEM_GENIRQ is not set
+CONFIG_UIO_HV_GENERIC=m
+CONFIG_UIO=m
+# CONFIG_UIO_MF624 is not set
+# CONFIG_UIO_NETX is not set
+CONFIG_UIO_PCI_GENERIC=m
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_PRUSS is not set
+# CONFIG_UIO_SERCOS3 is not set
+CONFIG_ULI526X=m
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
+CONFIG_UNICODE_UTF8_DATA=y
+CONFIG_UNICODE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX_DIAG=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_UNIX=y
+CONFIG_UNUSED_KSYMS_WHITELIST=""
+# CONFIG_UNWINDER_FRAME_POINTER is not set
+CONFIG_UPROBE_EVENTS=y
+# CONFIG_US5182D is not set
+# CONFIG_USB4_DEBUGFS_WRITE is not set
+# CONFIG_USB4_DMA_TEST is not set
+# CONFIG_USB4_KUNIT_TEST is not set
+CONFIG_USB4_NET=m
+CONFIG_USB4=y
+CONFIG_USB_ACM=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_ALI_M5632=y
+# CONFIG_USB_AMD5536UDC is not set
+CONFIG_USB_AN2720=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_ATM=m
+# CONFIG_USB_AUDIO is not set
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+# CONFIG_USB_BDC_UDC is not set
+CONFIG_USB_BELKIN=y
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_CATC=m
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_USB_CDNS2_UDC=m
+CONFIG_USB_CDNS3_GADGET=y
+CONFIG_USB_CDNS3_HOST=y
+CONFIG_USB_CDNS3=m
+CONFIG_USB_CDNS3_PCI_WRAP=m
+CONFIG_USB_CDNS3_STARFIVE=m
+# CONFIG_USB_CDNSP_GADGET is not set
+# CONFIG_USB_CDNSP_HOST is not set
+CONFIG_USB_CDNSP_PCI=m
+CONFIG_USB_CDNS_SUPPORT=m
+CONFIG_USB_CHAOSKEY=m
+CONFIG_USB_CHIPIDEA_GENERIC=m
+CONFIG_USB_CHIPIDEA_IMX=m
+# CONFIG_USB_CHIPIDEA is not set
+CONFIG_USB_CHIPIDEA_MSM=m
+CONFIG_USB_CHIPIDEA_NPCM=m
+CONFIG_USB_CHIPIDEA_PCI=m
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_EEM=y
+# CONFIG_USB_CONFIGFS_F_FS is not set
+CONFIG_USB_CONFIGFS_F_HID=y
+# CONFIG_USB_CONFIGFS_F_LB_SS is not set
+CONFIG_USB_CONFIGFS_F_MIDI2=y
+# CONFIG_USB_CONFIGFS_F_MIDI is not set
+# CONFIG_USB_CONFIGFS_F_PRINTER is not set
+CONFIG_USB_CONFIGFS_F_TCM=y
+# CONFIG_USB_CONFIGFS_F_UAC1 is not set
+# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set
+# CONFIG_USB_CONFIGFS_F_UAC2 is not set
+# CONFIG_USB_CONFIGFS_F_UVC is not set
+CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+# CONFIG_USB_CONFIGFS_RNDIS is not set
+CONFIG_USB_CONFIGFS_SERIAL=y
+# CONFIG_USB_CONN_GPIO is not set
+CONFIG_USB_CXACRU=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_DEFAULT_AUTHORIZATION_MODE=1
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_DSBR=m
+# CONFIG_USB_DUMMY_HCD is not set
+# CONFIG_USB_DWC2_DEBUG is not set
+CONFIG_USB_DWC2_DUAL_ROLE=y
+# CONFIG_USB_DWC2_HOST is not set
+CONFIG_USB_DWC2=m
+CONFIG_USB_DWC2_PCI=m
+# CONFIG_USB_DWC2_PERIPHERAL is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
+CONFIG_USB_DWC3_DUAL_ROLE=y
+# CONFIG_USB_DWC3_GADGET is not set
+# CONFIG_USB_DWC3_HAPS is not set
+# CONFIG_USB_DWC3_HOST is not set
+CONFIG_USB_DWC3=m
+CONFIG_USB_DWC3_OF_SIMPLE=m
+CONFIG_USB_DWC3_PCI=m
+CONFIG_USB_DWC3_ULPI=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_EG20T is not set
+# CONFIG_USB_EHCI_FSL is not set
+CONFIG_USB_EHCI_HCD_PLATFORM=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+CONFIG_USB_EMI26=m
+CONFIG_USB_EMI62=m
+CONFIG_USB_EPSON2888=y
+# CONFIG_USB_ETH is not set
+CONFIG_USB_EZUSB_FX2=m
+# CONFIG_USB_FEW_INIT_RETRIES is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_FUNCTIONFS is not set
+# CONFIG_USB_G_ACM_MS is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+# CONFIG_USB_GADGET_TARGET is not set
+CONFIG_USB_GADGET_VBUS_DRAW=100
+# CONFIG_USB_GADGET_XILINX is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_G_HID is not set
+CONFIG_USB_GL860=m
+# CONFIG_USB_G_MULTI is not set
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GOKU is not set
+CONFIG_USB_GPIO_VBUS=m
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_GR_UDC is not set
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_DTCS033=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TOUPTEK=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+# CONFIG_USB_G_WEBCAM is not set
+# CONFIG_USB_HCD_BCMA is not set
+# CONFIG_USB_HCD_SSB is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_HID=y
+CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
+CONFIG_USB_HSO=m
+CONFIG_USB_HUB_USB251XB=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USBIP_CORE=m
+# CONFIG_USBIP_DEBUG is not set
+CONFIG_USB_IPHETH=m
+CONFIG_USBIP_HOST=m
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USBIP_VUDC=m
+CONFIG_USB_ISIGHTFW=m
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1301 is not set
+CONFIG_USB_ISP1760_DUAL_ROLE=y
+# CONFIG_USB_ISP1760_GADGET_ROLE is not set
+# CONFIG_USB_ISP1760_HOST_ROLE is not set
+# CONFIG_USB_ISP1760 is not set
+CONFIG_USB_KAWETH=m
+CONFIG_USB_KC2190=y
+CONFIG_USB_KEENE=m
+CONFIG_USB_LAN78XX=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LD=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_LEGOTOWER=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_LJCA is not set
+CONFIG_USB_M5602=m
+# CONFIG_USB_M66592 is not set
+CONFIG_USB_MA901=m
+# CONFIG_USB_MASS_STORAGE is not set
+CONFIG_USB_MAX3420_UDC=m
+# CONFIG_USB_MAX3421_HCD is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_USB_MON=y
+CONFIG_USB_MR800=m
+# CONFIG_USB_MUSB_GADGET is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_NET2280 is not set
+CONFIG_USB_NET_AQC111=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_NET_CH9200=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_QMI_WWAN=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_SR9700=m
+# CONFIG_USB_NET_SR9800 is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_HCD_PLATFORM=m
+# CONFIG_USB_OHCI_HCD_SSB is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_ONBOARD_DEV=m
+CONFIG_USB_ONBOARD_HUB=m
+# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
+CONFIG_USB_OTG_FSM=m
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+CONFIG_USB_OTG=y
+# CONFIG_USB_OXU210HP_HCD is not set
+CONFIG_USB_PCI_AMD=y
+CONFIG_USB_PCI=y
+CONFIG_USBPCWATCHDOG=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_PHY=y
+CONFIG_USB_PRINTER=m
+CONFIG_USB_PULSE8_CEC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_PWC=m
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_R8A66597 is not set
+CONFIG_USB_RAINSHADOW_CEC=m
+# CONFIG_USB_RAREMONO is not set
+CONFIG_USB_RAW_GADGET=m
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_RTL8153_ECM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_CONSOLE=y
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_DEBUG=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_F81232=m
+CONFIG_USB_SERIAL_F8153X=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+# CONFIG_USB_SERIAL_MXUPORT is not set
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_QCAUX=m
+CONFIG_USB_SERIAL_QT2=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SIMPLE=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_UPD78F0730=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_XR=m
+CONFIG_USB_SERIAL_XSENS_MT=m
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_SI470X=m
+# CONFIG_USB_SI4713 is not set
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SL811_CS is not set
+CONFIG_USB_SL811_HCD_ISO=y
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SNP_UDC_PLAT=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+CONFIG_USB_STORAGE_DATAFAB=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_ENE_UB6250=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_SUPPORT=y
+# CONFIG_USB_TEST is not set
+CONFIG_USB_TMC=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_UAS=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_ULPI_BUS=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VL600=m
+CONFIG_USB_WDM=m
+CONFIG_USB_XEN_HCD=m
+# CONFIG_USB_XHCI_DBGCAP is not set
+CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_HISTB is not set
+CONFIG_USB_XHCI_PCI_RENESAS=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_XHCI_PLATFORM=m
+CONFIG_USB_XUSBATM=m
+CONFIG_USB=y
+CONFIG_USB_YUREX=m
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
+# CONFIG_USER_DECRYPTED_DATA is not set
+# CONFIG_USER_EVENTS is not set
+CONFIG_USERFAULTFD=y
+CONFIG_U_SERIAL_CONSOLE=y
+# CONFIG_USERIO is not set
+CONFIG_USER_NS=y
+CONFIG_UTS_NS=y
+# CONFIG_UV_SYSFS is not set
+# CONFIG_V4L2_FLASH_LED_CLASS is not set
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+# CONFIG_V4L_PLATFORM_DRIVERS is not set
+CONFIG_V4L_TEST_DRIVERS=y
+CONFIG_VALIDATE_FS_PARSER=y
+CONFIG_VCAP=y
+CONFIG_VCHIQ_CDEV=y
+CONFIG_VCNL3020=m
+# CONFIG_VCNL4000 is not set
+CONFIG_VCNL4035=m
+CONFIG_VCPU_STALL_DETECTOR=m
+CONFIG_VDPA=m
+CONFIG_VDPA_SIM_BLOCK=m
+CONFIG_VDPA_SIM=m
+CONFIG_VDPA_SIM_NET=m
+CONFIG_VDPA_USER=m
+CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
+# CONFIG_VEML6070 is not set
+# CONFIG_VEML6075 is not set
+CONFIG_VETH=m
+# CONFIG_VF610_ADC is not set
+# CONFIG_VF610_DAC is not set
+CONFIG_VFAT_FS=m
+CONFIG_VFIO_CONTAINER=y
+# CONFIG_VFIO_DEBUGFS is not set
+# CONFIG_VFIO_DEVICE_CDEV is not set
+CONFIG_VFIO_GROUP=y
+CONFIG_VFIO_IOMMU_TYPE1=m
+CONFIG_VFIO=m
+CONFIG_VFIO_MDEV=m
+# CONFIG_VFIO_NOIOMMU is not set
+CONFIG_VFIO_PCI=m
+CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_VGA_ARB=y
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
+CONFIG_VHOST_MENU=y
+CONFIG_VHOST_NET=m
+CONFIG_VHOST_SCSI=m
+CONFIG_VHOST_VDPA=m
+CONFIG_VHOST_VSOCK=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_VELOCITY=m
+CONFIG_VIDEO_AD5820=m
+# CONFIG_VIDEO_AD9389B is not set
+CONFIG_VIDEO_ADP1653=m
+# CONFIG_VIDEO_ADV7170 is not set
+# CONFIG_VIDEO_ADV7175 is not set
+# CONFIG_VIDEO_ADV7180 is not set
+# CONFIG_VIDEO_ADV7183 is not set
+# CONFIG_VIDEO_ADV7343 is not set
+# CONFIG_VIDEO_ADV7393 is not set
+# CONFIG_VIDEO_ADV748X is not set
+# CONFIG_VIDEO_ADV7511 is not set
+# CONFIG_VIDEO_ADV7604_CEC is not set
+# CONFIG_VIDEO_ADV7604 is not set
+# CONFIG_VIDEO_ADV7842_CEC is not set
+# CONFIG_VIDEO_ADV7842 is not set
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_AK7375=m
+# CONFIG_VIDEO_AK881X is not set
+# CONFIG_VIDEO_ALVIUM_CSI2 is not set
+CONFIG_VIDEO_AR0521=m
+CONFIG_VIDEO_AU0828=m
+# CONFIG_VIDEO_AU0828_RC is not set
+CONFIG_VIDEO_AU0828_V4L2=y
+# CONFIG_VIDEO_BT819 is not set
+CONFIG_VIDEO_BT848=m
+# CONFIG_VIDEO_BT856 is not set
+# CONFIG_VIDEO_BT866 is not set
+# CONFIG_VIDEO_CADENCE_CSI2RX is not set
+CONFIG_VIDEO_CADENCE_CSI2TX=m
+# CONFIG_VIDEO_CADENCE is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_VIDEO_CAMERA_SENSOR=y
+CONFIG_VIDEO_CCS=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX23885=m
+# CONFIG_VIDEO_CX25821 is not set
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_ENABLE_VP3054=y
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_DS90UB913=m
+CONFIG_VIDEO_DS90UB953=m
+CONFIG_VIDEO_DS90UB960=m
+# CONFIG_VIDEO_DT3155 is not set
+CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_DW9719=m
+CONFIG_VIDEO_DW9768=m
+CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_VIDEO_EM28XX_V4L2=m
+CONFIG_VIDEO_ET8EK8=m
+CONFIG_VIDEO_FB_IVTV=m
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
+CONFIG_VIDEO_GC2145=m
+CONFIG_VIDEO_GO7007_LOADER=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
+CONFIG_VIDEO_GS1662=m
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HI556=m
+CONFIG_VIDEO_HI846=m
+CONFIG_VIDEO_HI847=m
+# CONFIG_VIDEO_I2C is not set
+CONFIG_VIDEO_IMX208=m
+CONFIG_VIDEO_IMX214=m
+CONFIG_VIDEO_IMX219=m
+CONFIG_VIDEO_IMX258=m
+CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
+CONFIG_VIDEO_IMX290=m
+CONFIG_VIDEO_IMX296=m
+CONFIG_VIDEO_IMX319=m
+CONFIG_VIDEO_IMX334=m
+CONFIG_VIDEO_IMX335=m
+CONFIG_VIDEO_IMX355=m
+CONFIG_VIDEO_IMX412=m
+CONFIG_VIDEO_IMX415=m
+# CONFIG_VIDEO_IPU3_CIO2 is not set
+CONFIG_VIDEO_IR_I2C=m
+# CONFIG_VIDEO_ISL7998X is not set
+# CONFIG_VIDEO_IVTV_ALSA is not set
+CONFIG_VIDEO_IVTV=m
+# CONFIG_VIDEO_KS0127 is not set
+CONFIG_VIDEO_LM3560=m
+CONFIG_VIDEO_LM3646=m
+CONFIG_VIDEO_M52790=m
+# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
+# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+# CONFIG_VIDEO_MGB4 is not set
+# CONFIG_VIDEO_ML86V7667 is not set
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_MT9M001=m
+# CONFIG_VIDEO_MT9M111 is not set
+CONFIG_VIDEO_MT9M114=m
+CONFIG_VIDEO_MT9P031=m
+CONFIG_VIDEO_MT9T112=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_MT9V032=m
+CONFIG_VIDEO_MT9V111=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_OG01A1B=m
+CONFIG_VIDEO_OV01A10=m
+CONFIG_VIDEO_OV02A10=m
+CONFIG_VIDEO_OV08D10=m
+CONFIG_VIDEO_OV08X40=m
+CONFIG_VIDEO_OV13858=m
+CONFIG_VIDEO_OV13B10=m
+CONFIG_VIDEO_OV2640=m
+CONFIG_VIDEO_OV2659=m
+CONFIG_VIDEO_OV2680=m
+CONFIG_VIDEO_OV2685=m
+CONFIG_VIDEO_OV2740=m
+CONFIG_VIDEO_OV4689=m
+CONFIG_VIDEO_OV5640=m
+CONFIG_VIDEO_OV5645=m
+CONFIG_VIDEO_OV5647=m
+CONFIG_VIDEO_OV5648=m
+CONFIG_VIDEO_OV5670=m
+CONFIG_VIDEO_OV5675=m
+CONFIG_VIDEO_OV5693=m
+CONFIG_VIDEO_OV5695=m
+CONFIG_VIDEO_OV64A40=m
+CONFIG_VIDEO_OV6650=m
+CONFIG_VIDEO_OV7251=m
+CONFIG_VIDEO_OV7640=m
+# CONFIG_VIDEO_OV7670 is not set
+CONFIG_VIDEO_OV772X=m
+CONFIG_VIDEO_OV7740=m
+CONFIG_VIDEO_OV8856=m
+CONFIG_VIDEO_OV8858=m
+CONFIG_VIDEO_OV8865=m
+CONFIG_VIDEO_OV9282=m
+CONFIG_VIDEO_OV9640=m
+CONFIG_VIDEO_OV9650=m
+CONFIG_VIDEO_OV9734=m
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_PVRUSB2_DVB=y
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
+CONFIG_VIDEO_RDACM20=m
+# CONFIG_VIDEO_RDACM21 is not set
+CONFIG_VIDEO_RJ54N1=m
+CONFIG_VIDEO_ROCKCHIP_VDEC=m
+CONFIG_VIDEO_S5C73M3=m
+CONFIG_VIDEO_S5K4ECGX=m
+CONFIG_VIDEO_S5K5BAF=m
+CONFIG_VIDEO_S5K6A3=m
+CONFIG_VIDEO_SAA6588=m
+# CONFIG_VIDEO_SAA7110 is not set
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_SAA7164=m
+CONFIG_VIDEO_SAA717X=m
+# CONFIG_VIDEO_SAA7185 is not set
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
+CONFIG_VIDEO_STK1160_COMMON=m
+CONFIG_VIDEO_STK1160=m
+# CONFIG_VIDEO_STKWEBCAM is not set
+CONFIG_VIDEO_STM32_DMA2D=m
+# CONFIG_VIDEO_ST_MIPID02 is not set
+CONFIG_VIDEO_ST_VGXY61=m
+CONFIG_VIDEO_TC358743_CEC=y
+# CONFIG_VIDEO_TC358743 is not set
+# CONFIG_VIDEO_TC358746 is not set
+# CONFIG_VIDEO_TDA1997X is not set
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+# CONFIG_VIDEO_TEGRA_TPG is not set
+# CONFIG_VIDEO_THP7312 is not set
+# CONFIG_VIDEO_THS7303 is not set
+# CONFIG_VIDEO_THS8200 is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_TVAUDIO=m
+# CONFIG_VIDEO_TVP514X is not set
+CONFIG_VIDEO_TVP5150=m
+# CONFIG_VIDEO_TVP7002 is not set
+CONFIG_VIDEO_TW2804=m
+# CONFIG_VIDEO_TW5864 is not set
+CONFIG_VIDEO_TW686X=m
+# CONFIG_VIDEO_TW68 is not set
+# CONFIG_VIDEO_TW9900 is not set
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
+# CONFIG_VIDEO_TW9910 is not set
+CONFIG_VIDEO_UDA1342=m
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_USBTV=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
+CONFIG_VIDEO_VICODEC=m
+CONFIG_VIDEO_VIM2M=m
+CONFIG_VIDEO_VIMC=m
+CONFIG_VIDEO_VISL=m
+CONFIG_VIDEO_VIVID_CEC=y
+CONFIG_VIDEO_VIVID=m
+CONFIG_VIDEO_VIVID_MAX_DEVS=64
+CONFIG_VIDEO_VP27SMPX=m
+# CONFIG_VIDEO_VPX3220 is not set
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_WM8775=m
+# CONFIG_VIDEO_XILINX is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIPERBOARD_ADC is not set
+CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
+# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_BLK=m
+CONFIG_VIRTIO_CONSOLE=m
+# CONFIG_VIRTIO_DEBUG is not set
+CONFIG_VIRTIO_FS=m
+# CONFIG_VIRTIO_HARDEN_NOTIFICATION is not set
+CONFIG_VIRTIO_INPUT=m
+# CONFIG_VIRTIO_IOMMU is not set
+CONFIG_VIRTIO_MEM=m
+CONFIG_VIRTIO_MENU=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_VIRTIO_MMIO=m
+CONFIG_VIRTIO_NET=m
+CONFIG_VIRTIO_PCI_LEGACY=y
+CONFIG_VIRTIO_PCI=y
+# CONFIG_VIRTIO_PMEM is not set
+CONFIG_VIRTIO_VDPA=m
+CONFIG_VIRTIO_VFIO_PCI=m
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_VIRT_WIFI=m
+# CONFIG_VISL_DEBUGFS is not set
+CONFIG_VITESSE_PHY=m
+CONFIG_VL53L0X_I2C=m
+CONFIG_VL6180=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_MVRP=y
+CONFIG_VMAP_STACK=y
+# CONFIG_VME_BUS is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_VMGENID=y
+# CONFIG_VMLINUX_MAP is not set
+# CONFIG_VMSPLIT_1G is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_3G_OPT is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMXNET3 is not set
+CONFIG_VORTEX=m
+CONFIG_VP_VDPA=m
+CONFIG_VSOCKETS_DIAG=m
+CONFIG_VSOCKETS_LOOPBACK=m
+CONFIG_VSOCKETS=m
+CONFIG_VSOCKMON=m
+# CONFIG_VT6655 is not set
+# CONFIG_VT6656 is not set
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_VT=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_VXGE=m
+CONFIG_VXLAN=m
+# CONFIG_VZ89X is not set
+CONFIG_W1_CON=y
+CONFIG_W1=m
+# CONFIG_W1_MASTER_AMD_AXI is not set
+# CONFIG_W1_MASTER_DS1WM is not set
+CONFIG_W1_MASTER_DS2482=m
+CONFIG_W1_MASTER_DS2490=m
+# CONFIG_W1_MASTER_GPIO is not set
+# CONFIG_W1_MASTER_MATROX is not set
+# CONFIG_W1_MASTER_SGI is not set
+CONFIG_W1_MASTER_UART=m
+CONFIG_W1_SLAVE_DS2405=m
+CONFIG_W1_SLAVE_DS2406=m
+CONFIG_W1_SLAVE_DS2408=m
+# CONFIG_W1_SLAVE_DS2408_READBACK is not set
+CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2423=m
+CONFIG_W1_SLAVE_DS2430=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2438=m
+# CONFIG_W1_SLAVE_DS250X is not set
+CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
+CONFIG_W1_SLAVE_DS28E04=m
+# CONFIG_W1_SLAVE_DS28E17 is not set
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+# CONFIG_WAFER_WDT is not set
+# CONFIG_WAN is not set
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+CONFIG_WATCHDOG_SYSFS=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCH_QUEUE=y
+# CONFIG_WCN36XX_DEBUGFS is not set
+CONFIG_WCN36XX=m
+CONFIG_WDAT_WDT=m
+CONFIG_WDTPCI=m
+# CONFIG_WERROR is not set
+# CONFIG_WFX is not set
+CONFIG_WIL6210_DEBUGFS=y
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_WIL6210=m
+# CONFIG_WIL6210_TRACING is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_WINBOND_840=m
+# CONFIG_WIREGUARD_DEBUG is not set
+CONFIG_WIREGUARD=m
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_HOTKEY=m
+CONFIG_WIRELESS=y
+CONFIG_WIZNET_BUS_ANY=y
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5100_SPI=m
+CONFIG_WIZNET_W5300=m
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL1251_SPI=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+CONFIG_WLAN_VENDOR_ATH=y
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+CONFIG_WLAN_VENDOR_BROADCOM=y
+# CONFIG_WLAN_VENDOR_CISCO is not set
+CONFIG_WLAN_VENDOR_INTEL=y
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+# CONFIG_WLAN_VENDOR_PURELIFI is not set
+CONFIG_WLAN_VENDOR_QUANTENNA=y
+CONFIG_WLAN_VENDOR_RALINK=y
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_WLAN_VENDOR_RSI=y
+# CONFIG_WLAN_VENDOR_SILABS is not set
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_WLAN_VENDOR_TI=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_WLAN=y
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WLCORE_SPI=m
+CONFIG_WPCM450_SOC=m
+CONFIG_WQ_CPU_INTENSIVE_REPORT=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_WQ_WATCHDOG=y
+CONFIG_WWAN_DEBUGFS=y
+CONFIG_WWAN_HWSIM=m
+CONFIG_WWAN=y
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# CONFIG_X25 is not set
+CONFIG_X9250=m
+CONFIG_XDP_SOCKETS_DIAG=m
+CONFIG_XDP_SOCKETS=y
+# CONFIG_XEN_GRANT_DMA_ALLOC is not set
+CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
+CONFIG_XEN_PRIVCMD_EVENTFD=y
+CONFIG_XEN_PRIVCMD_IRQFD=y
+CONFIG_XEN_PRIVCMD=m
+# CONFIG_XEN_PVCALLS_FRONTEND is not set
+CONFIG_XEN_PVHVM_GUEST=y
+CONFIG_XEN_UNPOPULATED_ALLOC=y
+# CONFIG_XEN_VIRTIO_FORCE_GRANT is not set
+CONFIG_XEN_VIRTIO=y
+CONFIG_XFRM_INTERFACE=m
+CONFIG_XFRM_MIGRATE=y
+CONFIG_XFRM_OFFLOAD=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_XFRM_SUB_POLICY=y
+# CONFIG_XFRM_USER_COMPAT is not set
+CONFIG_XFRM_USER=y
+CONFIG_XFRM=y
+# CONFIG_XFS_DEBUG is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_ONLINE_REPAIR is not set
+# CONFIG_XFS_ONLINE_SCRUB_STATS is not set
+CONFIG_XFS_ONLINE_SCRUB=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_RT=y
+CONFIG_XFS_SUPPORT_ASCII_CI=y
+CONFIG_XFS_SUPPORT_V4=y
+CONFIG_XFS_WARN=y
+# CONFIG_XIL_AXIS_FIFO is not set
+# CONFIG_XILINX_AXI_EMAC is not set
+# CONFIG_XILINX_DMA is not set
+CONFIG_XILINX_EMACLITE=m
+CONFIG_XILINX_GMII2RGMII=m
+# CONFIG_XILINX_INTC is not set
+CONFIG_XILINX_LL_TEMAC=m
+CONFIG_XILINX_PR_DECOUPLER=m
+# CONFIG_XILINX_SDFEC is not set
+CONFIG_XILINX_VCU=m
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_XILINX_XADC is not set
+CONFIG_XILINX_XDMA=m
+# CONFIG_XILINX_ZYNQMP_DPDMA is not set
+CONFIG_XILLYBUS=m
+# CONFIG_XILLYBUS_OF is not set
+CONFIG_XILLYBUS_PCIE=m
+CONFIG_XILLYUSB=m
+# CONFIG_XIP_KERNEL is not set
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_MICROLZMA=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_SPARC=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC=y
+# CONFIG_YAMAHA_YAS530 is not set
+CONFIG_YAM=m
+CONFIG_YELLOWFIN=m
+# CONFIG_YENTA is not set
+# CONFIG_YOGABOOK_WMI is not set
+CONFIG_Z3FOLD=y
+CONFIG_ZBUD=y
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZERO_CALL_USED_REGS is not set
+CONFIG_ZEROPLUS_FF=y
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+CONFIG_ZISOFS=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_DFLTCC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZONE_DMA=y
+CONFIG_ZONEFS_FS=m
+CONFIG_ZOPT2201=m
+# CONFIG_ZPA2326 is not set
+# CONFIG_ZRAM_DEF_COMP_842 is not set
+# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set
+# CONFIG_ZRAM_DEF_COMP_LZ4 is not set
+# CONFIG_ZRAM_DEF_COMP_LZO is not set
+CONFIG_ZRAM_DEF_COMP_LZORLE=y
+# CONFIG_ZRAM_DEF_COMP_ZSTD is not set
+CONFIG_ZRAM=m
+CONFIG_ZRAM_MEMORY_TRACKING=y
+CONFIG_ZRAM_MULTI_COMP=y
+CONFIG_ZRAM_TRACK_ENTRY_ACTIME=y
+# CONFIG_ZRAM_WRITEBACK is not set
+CONFIG_ZSMALLOC_CHAIN_SIZE=8
+# CONFIG_ZSMALLOC_STAT is not set
+CONFIG_ZSMALLOC=y
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set
+CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set
+# CONFIG_ZSWAP_DEFAULT_ON is not set
+CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON=y
+CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y
+CONFIG_ZSWAP=y
+# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set
+CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
+# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set
+CONFIG_I2C_NCT6775=m
+CONFIG_ZENIFY=y
+CONFIG_NTSYNC=y
+CONFIG_TCP_CONG_BBR2=m
+CONFIG_SND_SOC_AW87XXX=m
+CONFIG_SCHED_BORE=y
+CONFIG_MIN_BASE_SLICE_NS=1000000
+CONFIG_SCHED_CLASS_EXT=y
+CONFIG_HID_IPTS=m
+CONFIG_HID_ITHC=m
+CONFIG_SURFACE_BOOK1_DGPU_SWITCH=m
+CONFIG_IPC_CLASSES=y
+CONFIG_LEDS_TPS68470=m
+CONFIG_SENSORS_SURFACE_TEMP=m
+CONFIG_AMD_PRIVATE_COLOR=y
+CONFIG_DRM_APPLETBDRM=m
+CONFIG_HID_APPLETB_BL=m
+CONFIG_HID_APPLETB_KBD=m
+CONFIG_HID_APPLE_MAGIC_BACKLIGHT=m
+CONFIG_APPLE_BCE=m
+CONFIG_HID_ASUS_ALLY=m
+CONFIG_ASUS_ARMOURY=m
diff --git a/SOURCES/kernel-riscv64-fedora.config b/SOURCES/kernel-riscv64-fedora.config
new file mode 100644
index 0000000..8237444
--- /dev/null
+++ b/SOURCES/kernel-riscv64-fedora.config
@@ -0,0 +1,8576 @@
+# riscv
+# CONFIG_60XX_WDT is not set
+CONFIG_6LOWPAN_DEBUGFS=y
+CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m
+CONFIG_6LOWPAN_GHC_ICMPV6=m
+CONFIG_6LOWPAN_GHC_UDP=m
+CONFIG_6LOWPAN=m
+CONFIG_6LOWPAN_NHC_DEST=m
+CONFIG_6LOWPAN_NHC_FRAGMENT=m
+CONFIG_6LOWPAN_NHC_HOP=m
+CONFIG_6LOWPAN_NHC_IPV6=m
+CONFIG_6LOWPAN_NHC=m
+CONFIG_6LOWPAN_NHC_MOBILITY=m
+CONFIG_6LOWPAN_NHC_ROUTING=m
+CONFIG_6LOWPAN_NHC_UDP=m
+CONFIG_6PACK=m
+CONFIG_8139CP=m
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_8139TOO_8129=y
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_9P_FSCACHE=y
+CONFIG_9P_FS=m
+CONFIG_9P_FS_POSIX_ACL=y
+CONFIG_9P_FS_SECURITY=y
+CONFIG_A11Y_BRAILLE_CONSOLE=y
+CONFIG_ABP060MG=m
+CONFIG_ACCESSIBILITY=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_ALS=m
+CONFIG_ACPI_APEI_EINJ_CXL=y
+CONFIG_ACPI_APEI_EINJ=m
+# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BGRT=y
+CONFIG_ACPI_BUTTON=y
+# CONFIG_ACPI_CMPC is not set
+# CONFIG_ACPI_CONFIGFS is not set
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_CPPC_CPUFREQ_FIE=y
+CONFIG_ACPI_CPPC_CPUFREQ=m
+# CONFIG_ACPI_CUSTOM_METHOD is not set
+# CONFIG_ACPI_DEBUGGER is not set
+# CONFIG_ACPI_DEBUGGER_USER is not set
+# CONFIG_ACPI_DEBUG is not set
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_EC_DEBUGFS=m
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_FFH=y
+# CONFIG_ACPI_FPDT is not set
+CONFIG_ACPI_HED=y
+CONFIG_ACPI_HMAT=y
+CONFIG_ACPI_I2C_OPREGION=y
+CONFIG_ACPI_IPMI=m
+CONFIG_ACPI_NFIT=m
+CONFIG_ACPI_NUMA=y
+CONFIG_ACPI_PCC=y
+CONFIG_ACPI_PCI_SLOT=y
+CONFIG_ACPI_PFRUT=m
+CONFIG_ACPI_PLATFORM_PROFILE=m
+CONFIG_ACPI_PRMT=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_SPCR_TABLE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TAD=m
+CONFIG_ACPI_THERMAL=y
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI=y
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_AD2S1200 is not set
+# CONFIG_AD2S1210 is not set
+# CONFIG_AD2S90 is not set
+CONFIG_AD3552R=m
+CONFIG_AD4130=m
+# CONFIG_AD5064 is not set
+CONFIG_AD5110=m
+# CONFIG_AD525X_DPOT is not set
+CONFIG_AD5272=m
+# CONFIG_AD5360 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5421 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_AD5449 is not set
+# CONFIG_AD5504 is not set
+# CONFIG_AD5592R is not set
+# CONFIG_AD5593R is not set
+# CONFIG_AD5624R_SPI is not set
+# CONFIG_AD5686_SPI is not set
+# CONFIG_AD5696_I2C is not set
+# CONFIG_AD5755 is not set
+# CONFIG_AD5758 is not set
+# CONFIG_AD5761 is not set
+# CONFIG_AD5764 is not set
+CONFIG_AD5766=m
+CONFIG_AD5770R=m
+# CONFIG_AD5791 is not set
+# CONFIG_AD5933 is not set
+# CONFIG_AD7091R5 is not set
+CONFIG_AD7091R8=m
+CONFIG_AD7124=m
+# CONFIG_AD7150 is not set
+# CONFIG_AD7173 is not set
+# CONFIG_AD7192 is not set
+# CONFIG_AD7266 is not set
+# CONFIG_AD7280 is not set
+# CONFIG_AD7291 is not set
+CONFIG_AD7292=m
+CONFIG_AD7293=m
+# CONFIG_AD7298 is not set
+# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
+CONFIG_AD74115=m
+CONFIG_AD74413R=m
+# CONFIG_AD7476 is not set
+# CONFIG_AD7606_IFACE_PARALLEL is not set
+# CONFIG_AD7606_IFACE_SPI is not set
+# CONFIG_AD7746 is not set
+CONFIG_AD7766=m
+# CONFIG_AD7768_1 is not set
+# CONFIG_AD7780 is not set
+# CONFIG_AD7791 is not set
+# CONFIG_AD7793 is not set
+# CONFIG_AD7816 is not set
+# CONFIG_AD7887 is not set
+# CONFIG_AD7923 is not set
+# CONFIG_AD7944 is not set
+CONFIG_AD7949=m
+# CONFIG_AD799X is not set
+# CONFIG_AD8366 is not set
+# CONFIG_AD8801 is not set
+CONFIG_AD9467=m
+# CONFIG_AD9523 is not set
+# CONFIG_AD9739A is not set
+# CONFIG_AD9832 is not set
+# CONFIG_AD9834 is not set
+# CONFIG_ADA4250 is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADDRESS_MASKING is not set
+# CONFIG_ADE7854 is not set
+# CONFIG_ADF4350 is not set
+# CONFIG_ADF4371 is not set
+CONFIG_ADF4377=m
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADI_AXI_ADC is not set
+# CONFIG_ADI_AXI_DAC is not set
+# CONFIG_ADIN1100_PHY is not set
+CONFIG_ADIN1110=m
+CONFIG_ADIN_PHY=m
+# CONFIG_ADIS16080 is not set
+# CONFIG_ADIS16130 is not set
+# CONFIG_ADIS16136 is not set
+# CONFIG_ADIS16201 is not set
+# CONFIG_ADIS16203 is not set
+# CONFIG_ADIS16209 is not set
+# CONFIG_ADIS16240 is not set
+# CONFIG_ADIS16260 is not set
+# CONFIG_ADIS16400 is not set
+# CONFIG_ADIS16460 is not set
+CONFIG_ADIS16475=m
+# CONFIG_ADIS16480 is not set
+# CONFIG_ADJD_S311 is not set
+# CONFIG_ADMFM2000 is not set
+# CONFIG_ADMV1013 is not set
+# CONFIG_ADMV1014 is not set
+# CONFIG_ADMV4420 is not set
+# CONFIG_ADMV8818 is not set
+# CONFIG_ADRF6780 is not set
+# CONFIG_ADT7316 is not set
+CONFIG_ADUX1020=m
+# CONFIG_ADVANTECH_WDT is not set
+CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_ADV_SWBUTTON is not set
+CONFIG_ADXL313_I2C=m
+CONFIG_ADXL313_SPI=m
+# CONFIG_ADXL345_I2C is not set
+# CONFIG_ADXL345_SPI is not set
+CONFIG_ADXL355_I2C=m
+CONFIG_ADXL355_SPI=m
+CONFIG_ADXL367_I2C=m
+CONFIG_ADXL367_SPI=m
+CONFIG_ADXL372_I2C=m
+CONFIG_ADXL372_SPI=m
+CONFIG_ADXRS290=m
+# CONFIG_ADXRS450 is not set
+CONFIG_AF8133J=m
+# CONFIG_AFE4403 is not set
+# CONFIG_AFE4404 is not set
+CONFIG_AFFS_FS=m
+CONFIG_AF_KCM=m
+CONFIG_AF_RXRPC_DEBUG=y
+# CONFIG_AF_RXRPC_INJECT_LOSS is not set
+# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set
+CONFIG_AF_RXRPC_IPV6=y
+CONFIG_AF_RXRPC=m
+# CONFIG_AFS_DEBUG_CURSOR is not set
+CONFIG_AFS_DEBUG=y
+CONFIG_AFS_FSCACHE=y
+CONFIG_AFS_FS=m
+# CONFIG_AHCI_CEVA is not set
+CONFIG_AHCI_DWC=m
+# CONFIG_AHCI_QORIQ is not set
+CONFIG_AIC79XX_CMDS_PER_DEVICE=4
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=4
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+CONFIG_AIO=y
+CONFIG_AIR_EN8811H_PHY=m
+CONFIG_AIX_PARTITION=y
+# CONFIG_AK09911 is not set
+# CONFIG_AK8974 is not set
+# CONFIG_AK8975 is not set
+CONFIG_AL3010=m
+# CONFIG_AL3320A is not set
+# CONFIG_AL_FIC is not set
+# CONFIG_ALIBABA_ENI_VDPA is not set
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_DEV_COREDUMP=y
+# CONFIG_ALTERA_FREEZE_BRIDGE is not set
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
+CONFIG_ALTERA_PR_IP_CORE=m
+CONFIG_ALTERA_PR_IP_CORE_PLAT=m
+CONFIG_ALTERA_STAPL=m
+CONFIG_ALTERA_TSE=m
+CONFIG_ALX=m
+# CONFIG_AM2315 is not set
+# CONFIG_AMBA_PL08X is not set
+CONFIG_AMD8111_ETH=m
+CONFIG_AMD_ATL=m
+# CONFIG_AMD_IOMMU_DEBUGFS is not set
+CONFIG_AMD_PHY=m
+CONFIG_AMD_PMC=m
+# CONFIG_AMD_PTDMA is not set
+# CONFIG_AMDTEE is not set
+# CONFIG_AMD_XGBE_DCB is not set
+# CONFIG_AMIGA_PARTITION is not set
+CONFIG_AMT=m
+CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
+CONFIG_ANDROID_BINDERFS=y
+# CONFIG_ANDROID_BINDER_IPC is not set
+# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
+# CONFIG_ANON_VMA_NAME is not set
+# CONFIG_AOSONG_AGS02MA is not set
+# CONFIG_APDS9300 is not set
+CONFIG_APDS9306=m
+CONFIG_APDS9802ALS=m
+# CONFIG_APDS9960 is not set
+CONFIG_APPLE_MFI_FASTCHARGE=m
+# CONFIG_APPLE_PROPERTIES is not set
+# CONFIG_APPLICOM is not set
+CONFIG_AQTION=m
+CONFIG_AQUANTIA_PHY=m
+CONFIG_AR5523=m
+# CONFIG_ARCH_APPLE is not set
+# CONFIG_ARCH_BCM4908 is not set
+CONFIG_ARCH_CANAAN=y
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_KEEMBAY is not set
+CONFIG_ARCH_MICROCHIP_POLARFIRE=y
+CONFIG_ARCH_MICROCHIP=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_R9A07G043 is not set
+CONFIG_ARCH_RANDOM=y
+# CONFIG_ARCH_REALTEK is not set
+# CONFIG_ARCH_RENESAS is not set
+# CONFIG_ARCH_RV32I is not set
+CONFIG_ARCH_RV64I=y
+# CONFIG_ARCH_S32 is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_SIFIVE=y
+CONFIG_ARCH_SOPHGO=y
+# CONFIG_ARCH_SPARX5 is not set
+CONFIG_ARCH_STARFIVE=y
+# CONFIG_ARCH_SUNXI is not set
+CONFIG_ARCH_THEAD=y
+CONFIG_ARCH_VIRT=y
+# CONFIG_ARCNET is not set
+CONFIG_ARM64_AMU_EXTN=y
+CONFIG_ARM64_E0PD=y
+CONFIG_ARM64_EPAN=y
+CONFIG_ARM64_ERRATUM_1319367=y
+CONFIG_ARM64_ERRATUM_1530923=y
+CONFIG_ARM64_ERRATUM_1542419=y
+CONFIG_ARM64_ERRATUM_2054223=y
+CONFIG_ARM64_ERRATUM_2067961=y
+CONFIG_ARM64_ERRATUM_2119858=y
+CONFIG_ARM64_ERRATUM_2139208=y
+CONFIG_ARM64_ERRATUM_2224489=y
+CONFIG_ARM64_ERRATUM_2253138=y
+CONFIG_ARM64_USE_LSE_ATOMICS=y
+CONFIG_ARM_CMN=m
+# CONFIG_ARM_MHU is not set
+# CONFIG_ARM_MHU_V2 is not set
+# CONFIG_ARM_MHU_V3 is not set
+# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
+# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set
+# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
+CONFIG_ARM_SMCCC_SOC_ID=y
+# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set
+# CONFIG_AS3935 is not set
+# CONFIG_AS73211 is not set
+# CONFIG_ASUS_TF103C_DOCK is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE=m
+CONFIG_ASYNC_RAID6_TEST=m
+CONFIG_ASYNC_TX_DMA=y
+CONFIG_AT803X_PHY=m
+CONFIG_ATA_ACPI=y
+CONFIG_ATA_BMDMA=y
+CONFIG_ATA_FORCE=y
+CONFIG_ATA_GENERIC=m
+CONFIG_ATALK=m
+CONFIG_ATA_OVER_ETH=m
+CONFIG_ATA_PIIX=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_ATA_SFF=y
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA=y
+CONFIG_ATH10K_AHB=y
+CONFIG_ATH10K_DEBUGFS=y
+# CONFIG_ATH10K_DEBUG is not set
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+CONFIG_ATH10K_SDIO=m
+# CONFIG_ATH10K_SPECTRAL is not set
+# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
+# CONFIG_ATH11K_AHB is not set
+# CONFIG_ATH11K_DEBUGFS is not set
+# CONFIG_ATH11K_DEBUG is not set
+CONFIG_ATH11K=m
+CONFIG_ATH11K_PCI=m
+# CONFIG_ATH11K_SPECTRAL is not set
+# CONFIG_ATH11K_TRACING is not set
+# CONFIG_ATH12K_DEBUGFS is not set
+# CONFIG_ATH12K_DEBUG is not set
+CONFIG_ATH12K=m
+# CONFIG_ATH12K_TRACING is not set
+CONFIG_ATH5K_DEBUG=y
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_TRACER is not set
+CONFIG_ATH6KL_DEBUG=y
+CONFIG_ATH6KL=m
+CONFIG_ATH6KL_SDIO=m
+# CONFIG_ATH6KL_TRACING is not set
+CONFIG_ATH6KL_USB=m
+CONFIG_ATH9K_AHB=y
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+# CONFIG_ATH9K_COMMON_SPECTRAL is not set
+CONFIG_ATH9K_DEBUGFS=y
+# CONFIG_ATH9K_DYNACK is not set
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HWRNG is not set
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI_NO_EEPROM=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_PCOEM=y
+CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_STATION_STATISTICS is not set
+# CONFIG_ATH9K_WOW is not set
+CONFIG_ATH_COMMON=m
+# CONFIG_ATH_DEBUG is not set
+# CONFIG_ATH_TRACEPOINTS is not set
+CONFIG_ATL1C=m
+CONFIG_ATL1E=m
+CONFIG_ATL1=m
+CONFIG_ATL2=m
+# CONFIG_ATLAS_EZO_SENSOR is not set
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_ATM_BR2684=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_ENI_DEBUG is not set
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+# CONFIG_ATM_FORE200E is not set
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_LANAI is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM=m
+# CONFIG_ATM_MPOA is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
+CONFIG_ATM_TCP=m
+CONFIG_ATOMIC64_SELFTEST=y
+CONFIG_ATP=m
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUXDISPLAY=y
+CONFIG_AX25_DAMA_SLAVE=y
+CONFIG_AX25=m
+# CONFIG_AX45MP_L2_CACHE is not set
+CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
+CONFIG_AXP20X_ADC=m
+CONFIG_AXP20X_POWER=m
+CONFIG_AXP288_ADC=m
+CONFIG_B43_BCMA_PIO=y
+CONFIG_B43_BCMA=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
+# CONFIG_B43_DEBUG is not set
+# CONFIG_B43LEGACY_DEBUG is not set
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY=m
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43=m
+CONFIG_B43_PHY_G=y
+CONFIG_B43_PHY_HT=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_SDIO=y
+CONFIG_B44=m
+CONFIG_B44_PCI=y
+CONFIG_B53=m
+CONFIG_B53_MDIO_DRIVER=m
+CONFIG_B53_MMAP_DRIVER=m
+CONFIG_B53_SERDES=m
+CONFIG_B53_SPI_DRIVER=m
+CONFIG_B53_SRAB_DRIVER=m
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+CONFIG_BACKLIGHT_ARCXCNN=m
+# CONFIG_BACKLIGHT_BD6107 is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GPIO is not set
+CONFIG_BACKLIGHT_KTD253=m
+# CONFIG_BACKLIGHT_KTD2801 is not set
+CONFIG_BACKLIGHT_KTZ8866=m
+CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
+# CONFIG_BACKLIGHT_LM3630A is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+CONFIG_BACKLIGHT_LP855X=m
+# CONFIG_BACKLIGHT_LV5207LP is not set
+CONFIG_BACKLIGHT_MP3309C=m
+CONFIG_BACKLIGHT_MT6370=m
+CONFIG_BACKLIGHT_PWM=m
+# CONFIG_BACKLIGHT_QCOM_WLED is not set
+CONFIG_BACKLIGHT_RT4831=m
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+CONFIG_BALLOON_COMPACTION=y
+# CONFIG_BARCO_P50_GPIO is not set
+CONFIG_BAREUDP=m
+CONFIG_BASE_FULL=y
+# CONFIG_BASE_SMALL is not set
+CONFIG_BATMAN_ADV_BATMAN_V=y
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+# CONFIG_BATMAN_ADV_DEBUG is not set
+CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_NC=y
+CONFIG_BATMAN_ADV_TRACING=y
+CONFIG_BATTERY_AXP20X=m
+# CONFIG_BATTERY_BQ27XXX is not set
+CONFIG_BATTERY_CW2015=m
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_BATTERY_GOLDFISH is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_MAX1720X=m
+# CONFIG_BATTERY_MAX1721X is not set
+CONFIG_BATTERY_RT5033=m
+CONFIG_BATTERY_SAMSUNG_SDI=y
+# CONFIG_BATTERY_SBS is not set
+CONFIG_BATTERY_SURFACE=m
+CONFIG_BATTERY_UG3105=m
+CONFIG_BAYCOM_EPP=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+# CONFIG_BCACHE_ASYNC_REGISTRATION is not set
+# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+# CONFIG_BCACHE_DEBUG is not set
+# CONFIG_BCACHEFS_DEBUG is not set
+# CONFIG_BCACHEFS_DEBUG_TRANSACTIONS is not set
+# CONFIG_BCACHEFS_ERASURE_CODING is not set
+CONFIG_BCACHEFS_FS=m
+# CONFIG_BCACHEFS_LOCK_TIME_STATS is not set
+# CONFIG_BCACHEFS_NO_LATENCY_ACCT is not set
+CONFIG_BCACHEFS_POSIX_ACL=y
+CONFIG_BCACHEFS_QUOTA=y
+CONFIG_BCACHEFS_SIX_OPTIMISTIC_SPIN=y
+# CONFIG_BCACHEFS_TESTS is not set
+CONFIG_BCACHE=m
+CONFIG_BCM54140_PHY=m
+CONFIG_BCM7XXX_PHY=m
+# CONFIG_BCM84881_PHY is not set
+CONFIG_BCM87XX_PHY=m
+CONFIG_BCMA_BLOCKIO=y
+# CONFIG_BCMA_DEBUG is not set
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+# CONFIG_BCMA_HOST_SOC is not set
+CONFIG_BCMA=m
+CONFIG_BCMGENET=m
+# CONFIG_BCM_KONA_USB2_PHY is not set
+CONFIG_BCM_NET_PHYPTP=m
+CONFIG_BCM_VK=m
+CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
+CONFIG_BE2ISCSI=m
+CONFIG_BE2NET_BE2=y
+CONFIG_BE2NET_BE3=y
+# CONFIG_BE2NET_HWMON is not set
+CONFIG_BE2NET_LANCER=y
+CONFIG_BE2NET=m
+CONFIG_BE2NET_SKYHAWK=y
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BEFS_FS=m
+# CONFIG_BFQ_CGROUP_DEBUG is not set
+CONFIG_BFQ_GROUP_IOSCHED=y
+# CONFIG_BFS_FS is not set
+CONFIG_BH1750=m
+# CONFIG_BH1780 is not set
+CONFIG_BIG_KEYS=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_FLAT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_BINFMT_SCRIPT=y
+CONFIG_BITFIELD_KUNIT=m
+CONFIG_BITS_TEST=m
+CONFIG_BLK_CGROUP_FC_APPID=y
+CONFIG_BLK_CGROUP_IOCOST=y
+CONFIG_BLK_CGROUP_IOLATENCY=y
+CONFIG_BLK_CGROUP_IOPRIO=y
+CONFIG_BLK_CGROUP=y
+CONFIG_BLK_DEBUG_FS=y
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_BLK_DEV_DRBD=m
+CONFIG_BLK_DEV_FD=m
+# CONFIG_BLK_DEV_FD_RAWCMD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
+CONFIG_BLK_DEV_MD=y
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION is not set
+CONFIG_BLK_DEV_NULL_BLK=m
+CONFIG_BLK_DEV_NVME=m
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_RBD=m
+CONFIG_BLK_DEV_RNBD_CLIENT=m
+CONFIG_BLK_DEV_RNBD_SERVER=m
+# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SX8=m
+# CONFIG_BLK_DEV_THROTTLING_LOW is not set
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_BLKDEV_UBLK_LEGACY_OPCODES=y
+CONFIG_BLK_DEV_UBLK=m
+CONFIG_BLK_DEV_WRITE_MOUNTED=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_ZONED=y
+# CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK is not set
+CONFIG_BLK_INLINE_ENCRYPTION=y
+CONFIG_BLK_SED_OPAL=y
+CONFIG_BLK_WBT_MQ=y
+CONFIG_BLK_WBT=y
+CONFIG_BLOCK_LEGACY_AUTOLOAD=y
+CONFIG_BLOCK=y
+# CONFIG_BMA180 is not set
+# CONFIG_BMA220 is not set
+# CONFIG_BMA400 is not set
+CONFIG_BMC150_ACCEL=m
+CONFIG_BMC150_MAGN_I2C=m
+CONFIG_BMC150_MAGN_SPI=m
+CONFIG_BME680=m
+# CONFIG_BMG160 is not set
+# CONFIG_BMI088_ACCEL is not set
+CONFIG_BMI160_I2C=m
+CONFIG_BMI160_SPI=m
+CONFIG_BMI323_I2C=m
+CONFIG_BMI323_SPI=m
+CONFIG_BMP280=m
+CONFIG_BNA=m
+CONFIG_BNX2=m
+CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
+CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
+CONFIG_BNXT_HWMON=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
+CONFIG_BONDING=m
+# CONFIG_BOOT_CONFIG_EMBED is not set
+# CONFIG_BOOT_CONFIG_FORCE is not set
+CONFIG_BOOT_CONFIG=y
+# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOT_PRINTK_DELAY=y
+CONFIG_BOOTTIME_TRACING=y
+CONFIG_BOSCH_BNO055_I2C=m
+CONFIG_BOSCH_BNO055_SERIAL=m
+CONFIG_BOUNCE=y
+# CONFIG_BPFILTER is not set
+CONFIG_BPF_JIT_ALWAYS_ON=y
+CONFIG_BPF_JIT=y
+# CONFIG_BPF_KPROBE_OVERRIDE is not set
+CONFIG_BPF_LIRC_MODE2=y
+CONFIG_BPF_LSM=y
+CONFIG_BPF_PRELOAD_UMD=m
+CONFIG_BPF_PRELOAD=y
+CONFIG_BPF_STREAM_PARSER=y
+CONFIG_BPF_SYSCALL=y
+CONFIG_BPF_UNPRIV_DEFAULT_OFF=y
+CONFIG_BPQETHER=m
+CONFIG_BQL=y
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_BRCMDBG is not set
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PCIE=y
+CONFIG_BRCMFMAC_SDIO=y
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMSMAC=m
+# CONFIG_BRCM_TRACING is not set
+CONFIG_BRIDGE_CFM=y
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_MRP=y
+CONFIG_BRIDGE_NETFILTER=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_BROADCOM_PHY=m
+CONFIG_BSD_DISKLABEL=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BT_6LOWPAN=m
+CONFIG_BT_AOSPEXT=y
+CONFIG_BT_ATH3K=m
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_BREDR=y
+# CONFIG_BT_DEBUGFS is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBCM4377=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_MTK=y
+CONFIG_BT_HCIBTUSB_POLL_SYNC=y
+CONFIG_BT_HCIBTUSB_RTL=y
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_AG6XX=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_INTEL=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_MRVL=y
+CONFIG_BT_HCIUART_NOKIA=m
+CONFIG_BT_HCIUART_QCA=y
+# CONFIG_BT_HCIUART_RTL is not set
+CONFIG_BT_HCIUART_SERDEV=y
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_HIDP=m
+# CONFIG_BT_HS is not set
+CONFIG_BT_INTEL_PCIE=m
+CONFIG_BT_LEDS=y
+CONFIG_BT_LE_L2CAP_ECRED=y
+CONFIG_BT_LE=y
+CONFIG_BT=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_MSFTEXT=y
+CONFIG_BT_MTKSDIO=m
+CONFIG_BT_MTKUART=m
+CONFIG_BT_NXPUART=m
+CONFIG_BT_QCA=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+# CONFIG_BTRFS_ASSERT is not set
+# CONFIG_BTRFS_DEBUG is not set
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_REF_VERIFY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+CONFIG_BTRFS_FS=y
+# CONFIG_BT_SELFTEST is not set
+# CONFIG_BTT is not set
+CONFIG_BT_VIRTIO=m
+CONFIG_BUG_ON_DATA_CORRUPTION=y
+CONFIG_BUG=y
+CONFIG_BUILD_SALT=""
+# CONFIG_C2PORT is not set
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_ERROR_INJECTION is not set
+CONFIG_CACHEFILES=m
+CONFIG_CACHEFILES_ONDEMAND=y
+CONFIG_CACHESTAT_SYSCALL=y
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_CAIF is not set
+CONFIG_CAN_8DEV_USB=m
+CONFIG_CAN_BCM=m
+CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_CAN327=m
+# CONFIG_CAN_CC770 is not set
+# CONFIG_CAN_C_CAN is not set
+CONFIG_CAN_CTUCANFD_PCI=m
+CONFIG_CAN_CTUCANFD_PLATFORM=m
+# CONFIG_CAN_DEBUG_DEVICES is not set
+CONFIG_CAN_DEV=m
+CONFIG_CAN_EMS_USB=m
+# CONFIG_CAN_ESD_402_PCI is not set
+CONFIG_CAN_ESD_USB2=m
+CONFIG_CAN_ESD_USB=m
+# CONFIG_CAN_ETAS_ES58X is not set
+CONFIG_CAN_F81604=m
+# CONFIG_CAN_FLEXCAN is not set
+# CONFIG_CAN_GRCAN is not set
+CONFIG_CAN_GS_USB=m
+CONFIG_CAN_GW=m
+CONFIG_CAN_HI311X=m
+CONFIG_CAN_IFI_CANFD=m
+CONFIG_CAN_ISOTP=m
+CONFIG_CAN_J1939=m
+# CONFIG_CAN_KVASER_PCIEFD is not set
+CONFIG_CAN_KVASER_USB=m
+CONFIG_CAN=m
+CONFIG_CAN_M_CAN=m
+CONFIG_CAN_M_CAN_PCI=m
+# CONFIG_CAN_M_CAN_PLATFORM is not set
+# CONFIG_CAN_M_CAN_TCAN4X5X is not set
+CONFIG_CAN_MCBA_USB=m
+CONFIG_CAN_MCP251XFD=m
+# CONFIG_CAN_MCP251XFD_SANITY is not set
+CONFIG_CAN_MCP251X=m
+CONFIG_CAN_NETLINK=y
+CONFIG_CAN_PEAK_PCIEFD=m
+CONFIG_CAN_PEAK_USB=m
+CONFIG_CAN_RAW=m
+# CONFIG_CAN_SJA1000 is not set
+CONFIG_CAN_SLCAN=m
+# CONFIG_CAN_SOFTING is not set
+CONFIG_CAN_SUN4I=m
+# CONFIG_CAN_UCAN is not set
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_VXCAN=m
+# CONFIG_CARDBUS is not set
+# CONFIG_CARL9170_DEBUGFS is not set
+# CONFIG_CARL9170_HWRNG is not set
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170=m
+CONFIG_CASSINI=m
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+# CONFIG_CC10001_ADC is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+CONFIG_CDROM_PKTCDVD=m
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CDX_CONTROLLER=m
+CONFIG_CEC_CH7322=m
+CONFIG_CEC_GPIO=m
+# CONFIG_CEC_PIN_ERROR_INJ is not set
+CONFIG_CEC_PIN=y
+# CONFIG_CEC_SECO is not set
+CONFIG_CEC_SECO_RC=y
+CONFIG_CEPH_FSCACHE=y
+CONFIG_CEPH_FS=m
+CONFIG_CEPH_FS_POSIX_ACL=y
+CONFIG_CEPH_FS_SECURITY_LABEL=y
+CONFIG_CEPH_LIB=m
+# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+CONFIG_CFAG12864B=m
+CONFIG_CFAG12864B_RATE=20
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_DEBUGFS=y
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_KUNIT_TEST=m
+CONFIG_CFG80211=m
+# CONFIG_CFI_CLANG is not set
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_CGROUP_BPF=y
+CONFIG_CGROUP_CPUACCT=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_DEVICE=y
+# CONFIG_CGROUP_FAVOR_DYNMODS is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_CGROUP_MISC=y
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_RDMA=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CGROUPS=y
+# CONFIG_CHARGER_ADP5061 is not set
+CONFIG_CHARGER_AXP20X=m
+CONFIG_CHARGER_BD99954=m
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
+# CONFIG_CHARGER_BQ24735 is not set
+CONFIG_CHARGER_BQ2515X=m
+CONFIG_CHARGER_BQ256XX=m
+# CONFIG_CHARGER_BQ25890 is not set
+# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
+CONFIG_CHARGER_CROS_PCHG=m
+# CONFIG_CHARGER_CROS_USBPD is not set
+# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_LP8727 is not set
+CONFIG_CHARGER_LT3651=m
+CONFIG_CHARGER_LTC4162L=m
+# CONFIG_CHARGER_MANAGER is not set
+CONFIG_CHARGER_MAX77650=m
+CONFIG_CHARGER_MAX77976=m
+# CONFIG_CHARGER_MAX8903 is not set
+CONFIG_CHARGER_MT6370=m
+# CONFIG_CHARGER_RT9455 is not set
+CONFIG_CHARGER_RT9467=m
+CONFIG_CHARGER_RT9471=m
+# CONFIG_CHARGER_SBS is not set
+CONFIG_CHARGER_SMB347=m
+CONFIG_CHARGER_SURFACE=m
+CONFIG_CHARGER_UCS1002=m
+CONFIG_CHARLCD_BL_FLASH=y
+# CONFIG_CHARLCD_BL_OFF is not set
+# CONFIG_CHARLCD_BL_ON is not set
+CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_CHECKSUM_KUNIT=m
+CONFIG_CHELSIO_INLINE_CRYPTO=y
+CONFIG_CHELSIO_IPSEC_INLINE=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4_DCB=y
+# CONFIG_CHELSIO_T4_FCOE is not set
+CONFIG_CHELSIO_T4=m
+CONFIG_CHELSIO_T4VF=m
+CONFIG_CHELSIO_TLS_DEVICE=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_CHR_DEV_SG=y
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHROMEOS_ACPI=m
+CONFIG_CHROMEOS_PRIVACY_SCREEN=m
+CONFIG_CHROMEOS_TBMC=y
+CONFIG_CHROME_PLATFORMS=y
+CONFIG_CHT_DC_TI_PMIC_OPREGION=y
+CONFIG_CICADA_PHY=m
+CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set
+CONFIG_CIFS_DEBUG=y
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_FSCACHE=y
+CONFIG_CIFS=m
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_SMB_DIRECT is not set
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_SWN_UPCALL=y
+CONFIG_CIFS_UPCALL=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIO2_BRIDGE=y
+CONFIG_CLEANCACHE=y
+CONFIG_CLK_FD_KUNIT_TEST=m
+CONFIG_CLK_GATE_KUNIT_TEST=m
+# CONFIG_CLK_ICST is not set
+CONFIG_CLK_KUNIT_TEST=m
+# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLK_RASPBERRYPI is not set
+CONFIG_CLK_SIFIVE_PRCI=y
+CONFIG_CLK_SIFIVE=y
+CONFIG_CLK_SOPHGO_CV1800=y
+# CONFIG_CLK_SOPHGO_SG2042_PLL is not set
+# CONFIG_CLK_SP810 is not set
+CONFIG_CLK_STARFIVE_JH7100_AUDIO=m
+CONFIG_CLK_STARFIVE_JH7100=y
+CONFIG_CLK_STARFIVE_JH7110_AON=y
+CONFIG_CLK_STARFIVE_JH7110_ISP=y
+CONFIG_CLK_STARFIVE_JH7110_PLL=y
+CONFIG_CLK_STARFIVE_JH7110_STG=y
+CONFIG_CLK_STARFIVE_JH7110_SYS=y
+CONFIG_CLK_STARFIVE_JH7110_VOUT=y
+CONFIG_CLK_STARFIVE_JH71X0=y
+# CONFIG_CLK_SUNXI_CLOCKS is not set
+# CONFIG_CLK_SUNXI is not set
+# CONFIG_CLK_SUNXI_PRCM_SUN6I is not set
+# CONFIG_CLK_SUNXI_PRCM_SUN8I is not set
+# CONFIG_CLK_SUNXI_PRCM_SUN9I is not set
+CONFIG_CLK_THEAD_TH1520_AP=y
+CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100
+CONFIG_CLS_U32_MARK=y
+CONFIG_CLS_U32_PERF=y
+CONFIG_CM32181=m
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
+CONFIG_CM3605=m
+# CONFIG_CM36651 is not set
+CONFIG_CMA_AREAS=7
+# CONFIG_CMA_DEBUGFS is not set
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA is not set
+CONFIG_CMA_SYSFS=y
+CONFIG_CMDLINE=""
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+CONFIG_CMDLINE_KUNIT_TEST=m
+# CONFIG_CMDLINE_PARTITION is not set
+CONFIG_CMODEL_MEDANY=y
+# CONFIG_CMODEL_MEDLOW is not set
+CONFIG_CNIC=m
+CONFIG_CODA_FS=m
+# CONFIG_COMEDI is not set
+CONFIG_COMMAND_LINE_SIZE=4096
+CONFIG_COMMON_CLK_AXG_AUDIO=y
+CONFIG_COMMON_CLK_AXI_CLKGEN=m
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_FIXED_MMIO is not set
+# CONFIG_COMMON_CLK_FSL_FLEXSPI is not set
+# CONFIG_COMMON_CLK_FSL_SAI is not set
+# CONFIG_COMMON_CLK_LAN966X is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_MMP2_AUDIO is not set
+CONFIG_COMMON_CLK_PWM=m
+CONFIG_COMMON_CLK_RS9_PCIE=m
+# CONFIG_COMMON_CLK_SI514 is not set
+CONFIG_COMMON_CLK_SI521XX=y
+# CONFIG_COMMON_CLK_SI5341 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+CONFIG_COMMON_CLK_SI544=m
+# CONFIG_COMMON_CLK_SI570 is not set
+CONFIG_COMMON_CLK_VC3=m
+# CONFIG_COMMON_CLK_VC5 is not set
+CONFIG_COMMON_CLK_VC7=m
+# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
+CONFIG_COMMON_CLK=y
+CONFIG_COMPACTION=y
+CONFIG_COMPAT_32BIT_TIME=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_COMPAT is not set
+# CONFIG_COMPILE_TEST is not set
+CONFIG_CONFIGFS_FS=y
+CONFIG_CONNECTOR=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=3
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+# CONFIG_CONTEXT_TRACKING_USER_FORCE is not set
+CONFIG_CORDIC=m
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_COREDUMP=y
+# CONFIG_CORESIGHT_CPU_DEBUG_DEFAULT_ON is not set
+CONFIG_CORTINA_PHY=m
+# CONFIG_COUNTER is not set
+# CONFIG_CPU5_WDT is not set
+# CONFIG_CPU_BIG_ENDIAN is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND 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_SCHEDUTIL is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+CONFIG_CPUFREQ_DT=m
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_THERMAL=y
+CONFIG_CPU_FREQ=y
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_CPU_IDLE_GOV_HALTPOLL is not set
+# CONFIG_CPU_IDLE_GOV_LADDER is not set
+# CONFIG_CPU_IDLE_GOV_TEO is not set
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_ISOLATION=y
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPUMASK_KUNIT_TEST=m
+CONFIG_CPUMASK_OFFSTACK=y
+CONFIG_CPU_MITIGATIONS=y
+CONFIG_CPUSETS=y
+# CONFIG_CPU_THERMAL is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_CRAMFS_MTD is not set
+CONFIG_CRASH_DUMP=y
+CONFIG_CRASH_HOTPLUG=y
+CONFIG_CRASH_MAX_MEMORY_RANGES=8192
+CONFIG_CRC16=y
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_SELFTEST is not set
+# CONFIG_CRC32_SLICEBY4 is not set
+CONFIG_CRC32_SLICEBY8=y
+CONFIG_CRC32=y
+CONFIG_CRC4=m
+CONFIG_CRC64=y
+CONFIG_CRC7=y
+CONFIG_CRC8=m
+CONFIG_CRC_CCITT=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC_T10DIF=y
+# CONFIG_CROS_EC_DEBUGFS is not set
+# CONFIG_CROS_EC is not set
+# CONFIG_CROS_EC_LIGHTBAR is not set
+CONFIG_CROS_EC_MKBP_PROXIMITY=m
+CONFIG_CROS_EC_RPMSG=m
+CONFIG_CROS_EC_SENSORHUB=m
+CONFIG_CROS_EC_TYPEC=m
+CONFIG_CROS_EC_UART=m
+CONFIG_CROS_EC_WATCHDOG=m
+CONFIG_CROS_HPS_I2C=m
+CONFIG_CROS_KBD_LED_BACKLIGHT=m
+CONFIG_CROS_KUNIT_EC_PROTO_TEST=m
+CONFIG_CROS_KUNIT=m
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CROS_TYPEC_SWITCH=m
+CONFIG_CROS_USBPD_LOGGER=m
+CONFIG_CROS_USBPD_NOTIFY=m
+CONFIG_CRYPTO_842=y
+CONFIG_CRYPTO_ADIANTUM=m
+CONFIG_CRYPTO_AEGIS128=m
+# CONFIG_CRYPTO_AES_ARM64 is not set
+CONFIG_CRYPTO_AES_RISCV64=y
+CONFIG_CRYPTO_AES_TI=m
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ANSI_CPRNG=m
+# CONFIG_CRYPTO_ARIA is not set
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_BLAKE2B=y
+CONFIG_CRYPTO_BLAKE2S=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_CHACHA20=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
+CONFIG_CRYPTO_CHACHA_RISCV64=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_CRC32C_VPMSUM=m
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_CTR=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DES=m
+# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
+CONFIG_CRYPTO_DEV_ATMEL_ECC=m
+CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m
+# CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set
+# CONFIG_CRYPTO_DEV_CCREE is not set
+CONFIG_CRYPTO_DEV_CHELSIO=m
+# CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_TEST is not set
+CONFIG_CRYPTO_DEV_HIFN_795X=m
+CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+# CONFIG_CRYPTO_DEV_HISI_HPRE is not set
+# CONFIG_CRYPTO_DEV_HISI_SEC2 is not set
+# CONFIG_CRYPTO_DEV_HISI_SEC is not set
+# CONFIG_CRYPTO_DEV_HISI_TRNG is not set
+CONFIG_CRYPTO_DEV_JH7110=m
+CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
+# CONFIG_CRYPTO_DEV_OCTEONTX_CPT is not set
+CONFIG_CRYPTO_DEV_QAT_420XX=m
+CONFIG_CRYPTO_DEV_QAT_4XXX=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION is not set
+# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
+CONFIG_CRYPTO_DEV_VIRTIO=m
+CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
+CONFIG_CRYPTO_DH=y
+CONFIG_CRYPTO_DRBG_CTR=y
+CONFIG_CRYPTO_DRBG_HASH=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_ECDSA=y
+CONFIG_CRYPTO_ECHAINIV=m
+CONFIG_CRYPTO_ECRDSA=m
+CONFIG_CRYPTO_ESSIV=m
+CONFIG_CRYPTO_FCRYPT=m
+# CONFIG_CRYPTO_FIPS_CUSTOM_VERSION is not set
+CONFIG_CRYPTO_FIPS_NAME="Linux Kernel Cryptographic API"
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_GHASH_RISCV64=y
+CONFIG_CRYPTO_GHASH=y
+CONFIG_CRYPTO_HCTR2=m
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_1024 is not set
+# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_128 is not set
+CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_2=y
+# CONFIG_CRYPTO_JITTERENTROPY_MEMSIZE_8192 is not set
+CONFIG_CRYPTO_JITTERENTROPY_OSR=1
+# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set
+CONFIG_CRYPTO_KEYWRAP=m
+CONFIG_CRYPTO_LIB_BLAKE2S=m
+CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y
+CONFIG_CRYPTO_LIB_CHACHA=y
+CONFIG_CRYPTO_LIB_CURVE25519=m
+CONFIG_CRYPTO_LIB_POLY1305=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_LZ4HC=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+# CONFIG_CRYPTO_MANAGER_EXTRA_TESTS is not set
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_PCRYPT=m
+CONFIG_CRYPTO_POLY1305=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256_RISCV64=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA3=y
+CONFIG_CRYPTO_SHA512_RISCV64=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SIMD=y
+# CONFIG_CRYPTO_SM2 is not set
+# CONFIG_CRYPTO_SM3_GENERIC is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_SM3_RISCV64 is not set
+# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set
+# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set
+# CONFIG_CRYPTO_SM4_GENERIC is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_SM4_RISCV64 is not set
+# CONFIG_CRYPTO_STATS is not set
+CONFIG_CRYPTO_STREEBOG=m
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_USER_API_AEAD=y
+# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set
+CONFIG_CRYPTO_USER_API_HASH=y
+# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set
+CONFIG_CRYPTO_USER_API_RNG=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_USER=m
+CONFIG_CRYPTO_VMAC=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_XXHASH=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ZSTD=m
+# CONFIG_CSD_LOCK_WAIT_DEBUG_DEFAULT is not set
+# CONFIG_CSD_LOCK_WAIT_DEBUG is not set
+CONFIG_CUSE=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_CW1200_WLAN_SPI=m
+CONFIG_CXD2880_SPI_DRV=m
+# CONFIG_CX_ECAT is not set
+CONFIG_CXL_ACPI=m
+CONFIG_CXL_BUS=m
+CONFIG_CXL_MEM=m
+# CONFIG_CXL_MEM_RAW_COMMANDS is not set
+CONFIG_CXL_PCI=m
+CONFIG_CXL_PMEM=m
+CONFIG_CXL_PMU=m
+# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
+CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
+CONFIG_DA280=m
+CONFIG_DA311=m
+CONFIG_DA9063_WATCHDOG=m
+# CONFIG_DAMON_DBGFS_DEPRECATED is not set
+CONFIG_DAMON_DBGFS=y
+# CONFIG_DAMON_LRU_SORT is not set
+CONFIG_DAMON_PADDR=y
+CONFIG_DAMON_RECLAIM=y
+CONFIG_DAMON_SYSFS=y
+CONFIG_DAMON_VADDR=y
+CONFIG_DAMON=y
+CONFIG_DAVICOM_PHY=m
+CONFIG_DAX=y
+CONFIG_DCB=y
+# CONFIG_DDR is not set
+CONFIG_DE2104X_DSL=0
+CONFIG_DE2104X=m
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+CONFIG_DEBUG_BOOT_PARAMS=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_CGROUP_REF is not set
+# CONFIG_DEBUG_CLOSURES is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_ENTRY is not set
+# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_DEBUG_INFO_BTF_MODULES=y
+CONFIG_DEBUG_INFO_BTF=y
+# CONFIG_DEBUG_INFO_COMPRESSED is not set
+CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
+# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set
+# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set
+# CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_DEBUG_INFO_DWARF5 is not set
+CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
+# CONFIG_DEBUG_INFO_NONE is not set
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_IRQFLAGS is not set
+# CONFIG_DEBUG_KERNEL_DC is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_KMAP_LOCAL is not set
+# CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_KMEMLEAK_TEST is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_KOBJECT_RELEASE is not set
+CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_LOCKDEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_MAPLE_TREE is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_MISC is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_NET is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=0
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_PAGE_REF is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_DEBUG_PLIST is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_RSEQ is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_DEBUG_SHIRQ=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VM_MAPLE_TREE is not set
+# CONFIG_DEBUG_VM_PGFLAGS is not set
+# CONFIG_DEBUG_VM_PGTABLE is not set
+# CONFIG_DEBUG_VM_RB is not set
+# CONFIG_DEBUG_VM_SHOOT_LAZIES is not set
+# CONFIG_DEBUG_VM_VMACACHE is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+CONFIG_DEBUG_WX=y
+# CONFIG_DECNET is not set
+CONFIG_DEFAULT_CUBIC=y
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+# CONFIG_DEFAULT_RENO is not set
+# CONFIG_DEFAULT_SECURITY_DAC is not set
+CONFIG_DEFAULT_SECURITY_SELINUX=y
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_DEV_DAX_CXL=m
+CONFIG_DEV_DAX_HMEM=m
+# CONFIG_DEV_DAX_KMEM is not set
+CONFIG_DEV_DAX=m
+# CONFIG_DEV_DAX_PMEM_COMPAT is not set
+CONFIG_DEVMEM=y
+CONFIG_DEVPORT=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DEVTMPFS_SAFE=y
+CONFIG_DEVTMPFS=y
+CONFIG_DHT11=m
+CONFIG_DL2K=m
+# CONFIG_DLHL60D is not set
+CONFIG_DLM_DEBUG=y
+# CONFIG_DLM_DEPRECATED_API is not set
+CONFIG_DLM=m
+CONFIG_DLN2_ADC=m
+CONFIG_DM9051=m
+CONFIG_DM9102=m
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_DMA_API_DEBUG_SG is not set
+# CONFIG_DMABUF_DEBUG is not set
+CONFIG_DMABUF_HEAPS_CMA=y
+CONFIG_DMABUF_HEAPS_SYSTEM=y
+CONFIG_DMABUF_HEAPS=y
+# CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_SELFTESTS is not set
+# CONFIG_DMABUF_SYSFS_STATS is not set
+# CONFIG_DMA_CMA is not set
+# CONFIG_DMADEVICES_DEBUG is not set
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+# CONFIG_DMA_FENCE_TRACE is not set
+# CONFIG_DMA_MAP_BENCHMARK is not set
+# CONFIG_DMA_NUMA_CMA is not set
+# CONFIG_DMAPOOL_TEST is not set
+# CONFIG_DMARD06 is not set
+# CONFIG_DMARD09 is not set
+CONFIG_DMARD10=m
+# CONFIG_DMA_RESTRICTED_POOL is not set
+# CONFIG_DMATEST is not set
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_SMQ=m
+CONFIG_DM_CLONE=m
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+CONFIG_DM_DEBUG=y
+CONFIG_DM_DELAY=m
+CONFIG_DM_DUST=m
+CONFIG_DM_EBS=m
+CONFIG_DM_ERA=m
+CONFIG_DM_FLAKEY=m
+CONFIG_DMIID=y
+CONFIG_DM_INIT=y
+CONFIG_DM_INTEGRITY=m
+CONFIG_DMI_SYSFS=y
+CONFIG_DMI=y
+# CONFIG_DM_KUNIT_TEST is not set
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_LOG_WRITES=m
+CONFIG_DM_MIRROR=y
+CONFIG_DM_MULTIPATH_HST=m
+CONFIG_DM_MULTIPATH_IOA=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+CONFIG_DM_RAID=m
+CONFIG_DM_SNAPSHOT=y
+CONFIG_DM_SWITCH=m
+CONFIG_DM_THIN_PROVISIONING=m
+CONFIG_DM_UEVENT=y
+CONFIG_DM_UNSTRIPED=m
+CONFIG_DM_VDO=m
+CONFIG_DM_VERITY_FEC=y
+CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
+CONFIG_DM_WRITECACHE=m
+CONFIG_DM_ZERO=y
+CONFIG_DM_ZONED=m
+CONFIG_DNET=m
+CONFIG_DNOTIFY=y
+CONFIG_DNS_RESOLVER=m
+CONFIG_DP83640_PHY=m
+CONFIG_DP83822_PHY=m
+CONFIG_DP83848_PHY=m
+CONFIG_DP83867_PHY=m
+CONFIG_DP83869_PHY=m
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83TD510_PHY is not set
+CONFIG_DP83TG720_PHY=m
+# CONFIG_DPM_WATCHDOG is not set
+CONFIG_DPOT_DAC=m
+# CONFIG_DPS310 is not set
+CONFIG_DRAGONRISE_FF=y
+# CONFIG_DRBD_FAULT_INJECTION is not set
+CONFIG_DRIVER_PE_KUNIT_TEST=m
+# CONFIG_DRM_ACCEL_QAIC is not set
+CONFIG_DRM_ACCEL=y
+CONFIG_DRM_AMD_ACP=y
+CONFIG_DRM_AMD_DC_HDCP=y
+CONFIG_DRM_AMD_DC_SI=y
+CONFIG_DRM_AMD_DC=y
+CONFIG_DRM_AMDGPU_CIK=y
+CONFIG_DRM_AMDGPU=m
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMDGPU_USERPTR=y
+# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
+CONFIG_DRM_AMD_SECURE_DISPLAY=y
+CONFIG_DRM_ANALOGIX_ANX6345=m
+CONFIG_DRM_ANALOGIX_ANX7625=m
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_ARCPGU is not set
+CONFIG_DRM_AST=m
+CONFIG_DRM_BOCHS=m
+# CONFIG_DRM_CDNS_DSI is not set
+# CONFIG_DRM_CDNS_MHDP8546 is not set
+CONFIG_DRM_CHIPONE_ICN6211=m
+CONFIG_DRM_CHRONTEL_CH7033=m
+CONFIG_DRM_CIRRUS_QEMU=m
+# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set
+# CONFIG_DRM_DEBUG_MM is not set
+# CONFIG_DRM_DEBUG_MODESET_LOCK is not set
+# CONFIG_DRM_DEBUG_SELFTEST is not set
+CONFIG_DRM_DISPLAY_CONNECTOR=m
+# CONFIG_DRM_DISPLAY_DEBUG_DP_TUNNEL_STATE is not set
+CONFIG_DRM_DISPLAY_DP_AUX_CEC=y
+CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV=y
+# CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG is not set
+CONFIG_DRM_DP_AUX_CHARDEV=y
+CONFIG_DRM_DP_CEC=y
+# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
+# CONFIG_DRM_DW_HDMI_I2S_AUDIO is not set
+# CONFIG_DRM_ETNAVIV is not set
+CONFIG_DRM_FBDEV_EMULATION=y
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_FSL_LDB is not set
+CONFIG_DRM_GM12U320=m
+CONFIG_DRM_GUD=m
+# CONFIG_DRM_HISI_HIBMC is not set
+CONFIG_DRM_HYPERV=m
+# CONFIG_DRM_I2C_ADV7511 is not set
+CONFIG_DRM_I2C_CH7006=m
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+CONFIG_DRM_I2C_SIL164=m
+# CONFIG_DRM_IMX_LCDIF is not set
+CONFIG_DRM_ITE_IT6505=m
+# CONFIG_DRM_ITE_IT66121 is not set
+# CONFIG_DRM_KOMEDA is not set
+CONFIG_DRM_KUNIT_TEST=m
+# CONFIG_DRM_LEGACY is not set
+CONFIG_DRM_LOAD_EDID_FIRMWARE=y
+# CONFIG_DRM_LOGICVC is not set
+CONFIG_DRM_LONTIUM_LT8912B=m
+# CONFIG_DRM_LONTIUM_LT9211 is not set
+# CONFIG_DRM_LONTIUM_LT9611 is not set
+CONFIG_DRM_LONTIUM_LT9611UXC=m
+# CONFIG_DRM_LOONGSON is not set
+# CONFIG_DRM_LVDS_CODEC is not set
+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
+CONFIG_DRM_MGAG200=m
+# CONFIG_DRM_MSM_GPU_SUDO is not set
+# CONFIG_DRM_MSM_VALIDATE_XML is not set
+# CONFIG_DRM_MXSFB is not set
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
+CONFIG_DRM_NOUVEAU=m
+# CONFIG_DRM_NOUVEAU_SVM is not set
+# CONFIG_DRM_NWL_MIPI_DSI is not set
+# CONFIG_DRM_NXP_PTN3460 is not set
+# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set
+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
+# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set
+# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set
+CONFIG_DRM_PANEL_BOE_BF060Y8M_AJ0=m
+# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
+# CONFIG_DRM_PANEL_BOE_TH101MB31UIG002_28A is not set
+CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
+CONFIG_DRM_PANEL_BRIDGE=y
+CONFIG_DRM_PANEL_DSI_CM=m
+# CONFIG_DRM_PANEL_EBBG_FT8719 is not set
+# CONFIG_DRM_PANEL_EDP is not set
+CONFIG_DRM_PANEL_ELIDA_KD35T133=m
+CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
+CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
+# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
+# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
+# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
+# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
+CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
+# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set
+CONFIG_DRM_PANEL_JADARD_JD9365DA_H3=m
+CONFIG_DRM_PANEL_JDI_LPM102A188A=m
+# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
+CONFIG_DRM_PANEL_JDI_R63452=m
+# CONFIG_DRM_PANEL_KHADAS_TS050 is not set
+# CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set
+# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set
+# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
+# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
+# CONFIG_DRM_PANEL_LG_LG4573 is not set
+# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
+# CONFIG_DRM_PANEL_LVDS is not set
+CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
+CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
+CONFIG_DRM_PANEL_MIPI_DBI=m
+# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set
+CONFIG_DRM_PANEL_NEWVISION_NV3051D=m
+# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set
+CONFIG_DRM_PANEL_NOVATEK_NT35510=m
+CONFIG_DRM_PANEL_NOVATEK_NT35560=m
+CONFIG_DRM_PANEL_NOVATEK_NT35950=m
+# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT36672E is not set
+# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set
+# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set
+# CONFIG_DRM_PANEL_ORISETECH_OTA5601A is not set
+CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m
+# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set
+# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
+# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
+# CONFIG_DRM_PANEL_RAYDIUM_RM67191 is not set
+# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
+CONFIG_DRM_PANEL_RAYDIUM_RM692E5=m
+CONFIG_DRM_PANEL_RAYDIUM_RM69380=m
+CONFIG_DRM_PANEL_RONBO_RB070D30=m
+CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20=m
+CONFIG_DRM_PANEL_SAMSUNG_DB7430=m
+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D27A1 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D7AA0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E3FA7 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
+CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m
+# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set
+CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m
+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set
+CONFIG_DRM_PANEL_SEIKO_43WVF1G=m
+# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS037V7DW01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS060T1SX01 is not set
+# CONFIG_DRM_PANEL_SIMPLE is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7701 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
+# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set
+# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set
+CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521=m
+CONFIG_DRM_PANEL_STARTEK_KD070FHFID015=m
+# CONFIG_DRM_PANEL_SYNAPTICS_R63353 is not set
+# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set
+# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set
+# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set
+# CONFIG_DRM_PANEL_TPO_TPG110 is not set
+# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set
+CONFIG_DRM_PANEL_VISIONOX_R66451=m
+CONFIG_DRM_PANEL_VISIONOX_RM69299=m
+# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set
+CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m
+# CONFIG_DRM_PANEL_XINPENG_XPP055C272 is not set
+CONFIG_DRM_PANEL=y
+# CONFIG_DRM_PARADE_PS8622 is not set
+CONFIG_DRM_PARADE_PS8640=m
+CONFIG_DRM_QXL=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_RADEON_USERPTR=y
+# CONFIG_DRM_RCAR_DW_HDMI is not set
+# CONFIG_DRM_RCAR_LVDS is not set
+# CONFIG_DRM_RCAR_MIPI_DSI is not set
+# CONFIG_DRM_RCAR_USE_LVDS is not set
+# CONFIG_DRM_RCAR_USE_MIPI_DSI is not set
+CONFIG_DRM_SAMSUNG_DSIM=m
+CONFIG_DRM_SII902X=m
+CONFIG_DRM_SII9234=m
+# CONFIG_DRM_SIL_SII8620 is not set
+CONFIG_DRM_SIMPLE_BRIDGE=m
+CONFIG_DRM_SIMPLEDRM=y
+CONFIG_DRM_SSD130X_I2C=m
+CONFIG_DRM_SSD130X=m
+CONFIG_DRM_SSD130X_SPI=m
+# CONFIG_DRM_THINE_THC63LVD1024 is not set
+CONFIG_DRM_TI_DLPC3433=m
+# CONFIG_DRM_TIDSS is not set
+# CONFIG_DRM_TI_SN65DSI83 is not set
+CONFIG_DRM_TI_SN65DSI86=m
+CONFIG_DRM_TI_TFP410=m
+CONFIG_DRM_TI_TPD12S015=m
+CONFIG_DRM_TOSHIBA_TC358762=m
+CONFIG_DRM_TOSHIBA_TC358764=m
+# CONFIG_DRM_TOSHIBA_TC358767 is not set
+CONFIG_DRM_TOSHIBA_TC358768=m
+CONFIG_DRM_TOSHIBA_TC358775=m
+# CONFIG_DRM_TTM_KUNIT_TEST is not set
+CONFIG_DRM_UDL=m
+CONFIG_DRM_USE_DYNAMIC_DEBUG=y
+# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VGEM=m
+CONFIG_DRM_VIRTIO_GPU_KMS=y
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_VKMS=m
+CONFIG_DRM_VMWGFX_FBCON=y
+CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX_MKSSTATS is not set
+CONFIG_DRM_WERROR=y
+# CONFIG_DRM_XE_DEBUG is not set
+# CONFIG_DRM_XE_DEBUG_MEM is not set
+# CONFIG_DRM_XE_DEBUG_SRIOV is not set
+# CONFIG_DRM_XE_DEBUG_VM is not set
+CONFIG_DRM_XE_DISPLAY=y
+CONFIG_DRM_XE_ENABLE_SCHEDTIMEOUT_LIMIT=y
+CONFIG_DRM_XE_FORCE_PROBE=""
+CONFIG_DRM_XE_JOB_TIMEOUT_MAX=10000
+CONFIG_DRM_XE_JOB_TIMEOUT_MIN=1
+# CONFIG_DRM_XE_KUNIT_TEST is not set
+# CONFIG_DRM_XE_LARGE_GUC_BUFFER is not set
+CONFIG_DRM_XE=m
+# CONFIG_DRM_XEN_FRONTEND is not set
+CONFIG_DRM_XE_PREEMPT_TIMEOUT=640000
+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX=10000000
+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN=1
+# CONFIG_DRM_XE_SIMPLE_ERROR_CAPTURE is not set
+CONFIG_DRM_XE_TIMESLICE_MAX=10000000
+CONFIG_DRM_XE_TIMESLICE_MIN=1
+# CONFIG_DRM_XE_USERPTR_INVAL_INJECT is not set
+# CONFIG_DRM_XE_WERROR is not set
+CONFIG_DRM=y
+# CONFIG_DS1682 is not set
+# CONFIG_DS1803 is not set
+# CONFIG_DS4424 is not set
+CONFIG_DTPM_CPU=y
+CONFIG_DTPM_DEVFREQ=y
+CONFIG_DTPM=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_DUMMY_IRQ is not set
+CONFIG_DUMMY=m
+CONFIG_DVB_AS102=m
+# CONFIG_DVB_AV7110 is not set
+CONFIG_DVB_B2C2_FLEXCOP=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+CONFIG_DVB_BT8XX=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_CORE=m
+CONFIG_DVB_CXD2099=m
+# CONFIG_DVB_CXD2880 is not set
+CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
+# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
+# CONFIG_DVB_DIB9000 is not set
+CONFIG_DVB_DM1105=m
+# CONFIG_DVB_DUMMY_FE is not set
+CONFIG_DVB_DYNAMIC_MINORS=y
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_HOPPER=m
+# CONFIG_DVB_LGS8GL5 is not set
+# CONFIG_DVB_LNBH29 is not set
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_MAX_ADAPTERS=16
+# CONFIG_DVB_MMAP is not set
+# CONFIG_DVB_MN88443X is not set
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
+CONFIG_DVB_NETUP_UNIDVB=m
+CONFIG_DVB_NET=y
+CONFIG_DVB_NGENE=m
+# CONFIG_DVB_PLATFORM_DRIVERS is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_PT1=m
+# CONFIG_DVB_PT3 is not set
+# CONFIG_DVB_S5H1432 is not set
+CONFIG_DVB_SMIPCIE=m
+# CONFIG_DVB_TEST_DRIVERS is not set
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+# CONFIG_DVB_ULE_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_CXUSB_ANALOG=y
+CONFIG_DVB_USB_CXUSB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_DIB0700=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MB=m
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_DVBSKY=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_ZD1301=m
+CONFIG_DW_AXI_DMAC=m
+CONFIG_DWC_PCIE_PMU=m
+CONFIG_DW_DMAC_CORE=m
+CONFIG_DW_DMAC=m
+CONFIG_DW_DMAC_PCI=m
+CONFIG_DW_EDMA=m
+CONFIG_DW_EDMA_PCIE=m
+CONFIG_DWMAC_DWC_QOS_ETH=m
+CONFIG_DWMAC_GENERIC=m
+# CONFIG_DWMAC_INTEL_PLAT is not set
+# CONFIG_DWMAC_LOONGSON is not set
+CONFIG_DWMAC_STARFIVE=m
+# CONFIG_DW_WATCHDOG is not set
+CONFIG_DW_XDATA_PCIE=m
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_E1000E=m
+CONFIG_E1000=m
+CONFIG_E100=m
+CONFIG_EARLY_PRINTK_DBGP=y
+CONFIG_EARLY_PRINTK_USB_XDBC=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_EBC_C384_WDT is not set
+CONFIG_ECHO=m
+CONFIG_ECRYPT_FS=m
+# CONFIG_ECRYPT_FS_MESSAGING is not set
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DMC520=m
+CONFIG_EDAC_GHES=y
+CONFIG_EDAC_IGEN6=m
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_EDAC_SIFIVE=y
+# CONFIG_EDAC_SYNOPSYS is not set
+CONFIG_EDAC=y
+CONFIG_EEPROM_93CX6=m
+# CONFIG_EEPROM_93XX46 is not set
+CONFIG_EEPROM_AT24=m
+# CONFIG_EEPROM_AT25 is not set
+CONFIG_EEPROM_EE1004=m
+CONFIG_EEPROM_IDT_89HPESX=m
+CONFIG_EEPROM_MAX6875=m
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
+CONFIG_EFI_COCO_SECRET=y
+CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
+# CONFIG_EFI_DISABLE_PCI_DMA is not set
+# CONFIG_EFI_DISABLE_RUNTIME is not set
+CONFIG_EFI_HANDOVER_PROTOCOL=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_EFI_PGT_DUMP is not set
+# CONFIG_EFI_RCI2_TABLE is not set
+CONFIG_EFI_SECRET=m
+CONFIG_EFI_SOFT_RESERVE=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI_TEST=m
+CONFIG_EFIVAR_FS=y
+CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
+CONFIG_EFI_VARS_PSTORE=y
+CONFIG_EFI=y
+CONFIG_EFI_ZBOOT=y
+# CONFIG_EFS_FS is not set
+CONFIG_ELF_CORE=y
+# CONFIG_EMBEDDED is not set
+# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
+CONFIG_ENERGY_MODEL=y
+CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
+CONFIG_ENVELOPE_DETECTOR=m
+CONFIG_EPIC100=m
+CONFIG_EPOLL=y
+CONFIG_EQUALIZER=m
+# CONFIG_EROFS_FS_DEBUG is not set
+CONFIG_EROFS_FS=m
+CONFIG_EROFS_FS_ONDEMAND=y
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
+CONFIG_EROFS_FS_POSIX_ACL=y
+CONFIG_EROFS_FS_SECURITY=y
+CONFIG_EROFS_FS_XATTR=y
+CONFIG_EROFS_FS_ZIP_DEFLATE=y
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+CONFIG_EROFS_FS_ZIP_ZSTD=y
+CONFIG_ERRATA_ANDES_CMO=y
+CONFIG_ERRATA_ANDES=y
+CONFIG_ERRATA_SIFIVE_CIP_1200=y
+CONFIG_ERRATA_SIFIVE_CIP_453=y
+CONFIG_ERRATA_SIFIVE=y
+# CONFIG_ERRATA_STARFIVE_JH7100 is not set
+CONFIG_ERRATA_THEAD_CMO=y
+CONFIG_ERRATA_THEAD_MAE=y
+CONFIG_ERRATA_THEAD_PMU=y
+CONFIG_ERRATA_THEAD=y
+CONFIG_ET131X=m
+CONFIG_ETHERNET=y
+CONFIG_ETHOC=m
+CONFIG_ETHTOOL_NETLINK=y
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_EVM_ADD_XATTRS is not set
+CONFIG_EVM_ATTR_FSUUID=y
+# CONFIG_EVM_LOAD_X509 is not set
+CONFIG_EVM=y
+CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_EXFAT_FS=m
+CONFIG_EXPERT=y
+CONFIG_EXPORTFS=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_KUNIT_TESTS=m
+CONFIG_EXT4_USE_FOR_EXT2=y
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_FSA9480 is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_PTN5150 is not set
+# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_TUSB320=m
+# CONFIG_EXTCON_USB_GPIO is not set
+CONFIG_EXTCON=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_EZX_PCAP is not set
+# CONFIG_F2FS_CHECK_FS is not set
+# CONFIG_F2FS_FAULT_INJECTION is not set
+CONFIG_F2FS_FS_COMPRESSION=y
+CONFIG_F2FS_FS_LZ4HC=y
+CONFIG_F2FS_FS_LZ4=y
+CONFIG_F2FS_FS_LZORLE=y
+CONFIG_F2FS_FS_LZO=y
+CONFIG_F2FS_FS=m
+CONFIG_F2FS_FS_POSIX_ACL=y
+CONFIG_F2FS_FS_SECURITY=y
+CONFIG_F2FS_FS_XATTR=y
+CONFIG_F2FS_FS_ZSTD=y
+CONFIG_F2FS_IOSTAT=y
+CONFIG_F2FS_STAT_FS=y
+CONFIG_F2FS_UNFAIR_RWSEM=y
+# CONFIG_FAIL_FUTEX is not set
+CONFIG_FAILOVER=m
+# CONFIG_FAIL_SUNRPC is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_FANOTIFY=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+CONFIG_FAT_FS=m
+CONFIG_FAT_KUNIT_TEST=m
+# CONFIG_FAULT_INJECTION_CONFIGFS is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_FAULT_INJECTION_USERCOPY is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_DA8XX is not set
+# CONFIG_FB_DEVICE is not set
+CONFIG_FB_EFI=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_GEODE is not set
+# CONFIG_FB_GOLDFISH is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_HYPERV is not set
+# CONFIG_FB_I740 is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_IMX is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_MATROX_G is not set
+# CONFIG_FB_MATROX_I2C is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_MATROX_MILLENIUM is not set
+# CONFIG_FB_MATROX_MYSTIQUE is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_METRONOME is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_OF is not set
+# CONFIG_FB_OPENCORES is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+CONFIG_FB_SIMPLE=y
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_SM501 is not set
+# CONFIG_FB_SM712 is not set
+# CONFIG_FB_SM750 is not set
+# CONFIG_FB_SMSCUFX is not set
+CONFIG_FB_SSD1307=m
+# CONFIG_FB_TFT is not set
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_VESA=y
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_VIA is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_XILINX is not set
+CONFIG_FB=y
+CONFIG_FCOE=m
+# CONFIG_FDDI is not set
+CONFIG_FEALNX=m
+CONFIG_FHANDLE=y
+# CONFIG_FIELDBUS_DEV is not set
+CONFIG_FILE_LOCKING=y
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
+# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
+# CONFIG_FIREWIRE_NOSY is not set
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FIRMWARE_MEMMAP is not set
+CONFIG_FIXED_PHY=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_FM10K=m
+# CONFIG_FONTS is not set
+CONFIG_FORCEDETH=m
+# CONFIG_FORCE_NR_CPUS is not set
+CONFIG_FORTIFY_KUNIT_TEST=m
+CONFIG_FORTIFY_SOURCE=y
+CONFIG_FPGA_BRIDGE=m
+CONFIG_FPGA_DFL_AFU=m
+CONFIG_FPGA_DFL_EMIF=m
+CONFIG_FPGA_DFL_FME_BRIDGE=m
+CONFIG_FPGA_DFL_FME=m
+CONFIG_FPGA_DFL_FME_MGR=m
+CONFIG_FPGA_DFL_FME_REGION=m
+CONFIG_FPGA_DFL=m
+CONFIG_FPGA_DFL_NIOS_INTEL_PAC_N3000=m
+CONFIG_FPGA_DFL_PCI=m
+CONFIG_FPGA=m
+CONFIG_FPGA_M10_BMC_SEC_UPDATE=m
+CONFIG_FPGA_MGR_ALTERA_CVP=m
+CONFIG_FPGA_MGR_ALTERA_PS_SPI=m
+CONFIG_FPGA_MGR_ICE40_SPI=m
+CONFIG_FPGA_MGR_LATTICE_SYSCONFIG_SPI=m
+CONFIG_FPGA_MGR_MACHXO2_SPI=m
+# CONFIG_FPGA_MGR_MICROCHIP_SPI is not set
+CONFIG_FPGA_MGR_XILINX_SELECTMAP=m
+CONFIG_FPGA_MGR_XILINX_SPI=m
+CONFIG_FPGA_MGR_ZYNQ_FPGA=m
+CONFIG_FPGA_REGION=m
+CONFIG_FPROBE_EVENTS=y
+CONFIG_FPROBE=y
+CONFIG_FPU=y
+CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAME_POINTER=y
+CONFIG_FRAME_WARN=2048
+CONFIG_FRONTSWAP=y
+CONFIG_FSCACHE_STATS=y
+CONFIG_FSCACHE=y
+CONFIG_FS_DAX=y
+CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
+CONFIG_FS_ENCRYPTION=y
+# CONFIG_FSI is not set
+# CONFIG_FSL_EDMA is not set
+# CONFIG_FSL_ENETC_IERB is not set
+# CONFIG_FSL_ENETC is not set
+# CONFIG_FSL_ENETC_MDIO is not set
+# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_PQ_MDIO is not set
+# CONFIG_FSL_QDMA is not set
+# CONFIG_FSL_RCPM is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_FSNOTIFY=y
+CONFIG_FS_PID=y
+# CONFIG_FS_VERITY_BUILTIN_SIGNATURES is not set
+# CONFIG_FS_VERITY_DEBUG is not set
+CONFIG_FS_VERITY=y
+# CONFIG_FTL is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_RECORD_RECURSION is not set
+# CONFIG_FTRACE_SORT_STARTUP_TEST is not set
+# CONFIG_FTRACE_STARTUP_TEST is not set
+CONFIG_FTRACE_SYSCALLS=y
+# CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING is not set
+CONFIG_FTRACE=y
+CONFIG_FUEL_GAUGE_MM8013=m
+# CONFIG_FUJITSU_ES is not set
+# CONFIG_FUNCTION_ERROR_INJECTION is not set
+CONFIG_FUNCTION_GRAPH_RETVAL=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUN_ETH=m
+CONFIG_FUSE_DAX=y
+CONFIG_FUSE_FS=m
+CONFIG_FUSE_PASSTHROUGH=y
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_FC=m
+CONFIG_FUSION_LAN=m
+CONFIG_FUSION_LOGGING=y
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_SPI=m
+CONFIG_FUSION=y
+CONFIG_FUTEX=y
+CONFIG_FW_CACHE=y
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set
+CONFIG_FW_LOADER_COMPRESS_XZ=y
+CONFIG_FW_LOADER_COMPRESS=y
+CONFIG_FW_LOADER_COMPRESS_ZSTD=y
+CONFIG_FW_LOADER_DEBUG=y
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER=y
+CONFIG_FW_UPLOAD=y
+CONFIG_FXAS21002C=m
+# CONFIG_FXLS8962AF_I2C is not set
+# CONFIG_FXLS8962AF_SPI is not set
+CONFIG_FXOS8700_I2C=m
+CONFIG_FXOS8700_SPI=m
+CONFIG_GACT_PROB=y
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_FM801=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set
+# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set
+# CONFIG_GCC_PLUGINS is not set
+# CONFIG_GCC_PLUGIN_STACKLEAK is not set
+# CONFIG_GCOV_KERNEL is not set
+# CONFIG_GDB_SCRIPTS is not set
+# CONFIG_GENERIC_ADC_BATTERY is not set
+# CONFIG_GENERIC_ADC_THERMAL is not set
+# CONFIG_GENERIC_CPU is not set
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+CONFIG_GENERIC_PHY=y
+CONFIG_GENEVE=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_GENWQE is not set
+CONFIG_GFS2_FS_LOCKING_DLM=y
+CONFIG_GFS2_FS=m
+# CONFIG_GIGABYTE_WMI is not set
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_GNSS=m
+CONFIG_GNSS_MTK_SERIAL=m
+CONFIG_GNSS_SIRF_SERIAL=m
+CONFIG_GNSS_UBX_SERIAL=m
+CONFIG_GNSS_USB=m
+# CONFIG_GOLDFISH_AUDIO is not set
+# CONFIG_GOLDFISH_PIPE is not set
+# CONFIG_GOLDFISH_TTY is not set
+CONFIG_GOLDFISH=y
+# CONFIG_GOOGLE_FIRMWARE is not set
+CONFIG_GP2AP002=m
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ADNP is not set
+# CONFIG_GPIO_ADP5588 is not set
+CONFIG_GPIO_AGGREGATOR=m
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_AMD_FCH is not set
+# CONFIG_GPIO_AMDPT is not set
+# CONFIG_GPIO_BCM_XGS_IPROC is not set
+CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_BT8XX=m
+CONFIG_GPIO_CADENCE=m
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CROS_EC=m
+CONFIG_GPIO_DLN2=m
+CONFIG_GPIO_DS4520=m
+# CONFIG_GPIO_DWAPB is not set
+CONFIG_GPIO_EXAR=m
+# CONFIG_GPIO_FTGPIO010 is not set
+CONFIG_GPIO_FXL6408=m
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_GW_PLD is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_IT87 is not set
+# CONFIG_GPIO_LATCH is not set
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_GPIOLIB=y
+# CONFIG_GPIO_LOGICVC is not set
+# CONFIG_GPIO_MAX3191X is not set
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MAX732X is not set
+CONFIG_GPIO_MAX77650=m
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_MC33880 is not set
+CONFIG_GPIO_MLXBF2=m
+# CONFIG_GPIO_MOCKUP is not set
+CONFIG_GPIO_MXC=m
+# CONFIG_GPIO_PCA953X_IRQ is not set
+CONFIG_GPIO_PCA953X=m
+# CONFIG_GPIO_PCA9570 is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_PCIE_IDIO_24 is not set
+CONFIG_GPIO_PCI_IDIO_16=m
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_PL061 is not set
+# CONFIG_GPIO_RDC321X is not set
+# CONFIG_GPIO_SAMA5D2_PIOBU is not set
+# CONFIG_GPIO_SCH311X is not set
+CONFIG_GPIO_SIFIVE=y
+CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
+CONFIG_GPIO_SYSCON=m
+# CONFIG_GPIO_SYSFS is not set
+# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS65219=m
+# CONFIG_GPIO_TS4900 is not set
+# CONFIG_GPIO_VIPERBOARD is not set
+CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
+# CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_GPIO_WINBOND is not set
+CONFIG_GPIO_WM8994=m
+# CONFIG_GPIO_WS16C48 is not set
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_XRA1403 is not set
+CONFIG_GP_PCI1XXXX=m
+CONFIG_GREENASIA_FF=y
+# CONFIG_GREYBUS is not set
+# CONFIG_GS_FPGABOOT is not set
+CONFIG_GTP=m
+# CONFIG_GUP_TEST is not set
+CONFIG_GVE=m
+# CONFIG_HABANA_AI is not set
+CONFIG_HAMACHI=m
+CONFIG_HAMRADIO=y
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_HAPPYMEAL=m
+CONFIG_HARDENED_USERCOPY=y
+# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set
+CONFIG_HARDLOCKUP_DETECTOR=y
+CONFIG_HASH_KUNIT_TEST=m
+CONFIG_HASHTABLE_KUNIT_TEST=m
+CONFIG_HD44780=m
+# CONFIG_HDC100X is not set
+CONFIG_HDC2010=m
+# CONFIG_HDC3020 is not set
+CONFIG_HEADERS_INSTALL=y
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_HI6421V600_IRQ=m
+# CONFIG_HI8435 is not set
+# CONFIG_HIBERNATION_COMP_LZ4 is not set
+CONFIG_HIBERNATION_COMP_LZO=y
+CONFIG_HIBERNATION_SNAPSHOT_DEV=y
+CONFIG_HIBERNATION=y
+CONFIG_HID_A4TECH=m
+CONFIG_HID_ACCUTOUCH=m
+CONFIG_HID_ACRUX_FF=y
+CONFIG_HID_ACRUX=m
+CONFIG_HID_ALPS=m
+CONFIG_HID_APPLEIR=m
+CONFIG_HID_APPLE=m
+# CONFIG_HID_ASUS is not set
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HID_BELKIN=m
+CONFIG_HID_BETOP_FF=m
+CONFIG_HID_BIGBEN_FF=m
+CONFIG_HID_BPF=y
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CMEDIA=m
+CONFIG_HID_CORSAIR=m
+CONFIG_HID_COUGAR=m
+CONFIG_HID_CP2112=m
+CONFIG_HID_CREATIVE_SB0540=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_HID_ELAN=m
+CONFIG_HID_ELECOM=m
+CONFIG_HID_ELO=m
+CONFIG_HID_EMS_FF=m
+CONFIG_HID_EVISION=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_FT260=m
+CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GENERIC=y
+CONFIG_HID_GFRM=m
+CONFIG_HID_GLORIOUS=m
+# CONFIG_HID_GOOGLE_HAMMER is not set
+CONFIG_HID_GOOGLE_STADIA_FF=m
+CONFIG_HID_GREENASIA=m
+CONFIG_HID_GT683R=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HID_HYPERV_MOUSE=m
+CONFIG_HID_ICADE=m
+CONFIG_HID_ITE=m
+CONFIG_HID_JABRA=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KEYTOUCH=m
+CONFIG_HID_KUNIT_TEST=m
+CONFIG_HID_KYE=m
+CONFIG_HID_LCPOWER=m
+CONFIG_HID_LED=m
+CONFIG_HID_LENOVO=m
+CONFIG_HID_LETSKETCH=m
+CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
+CONFIG_HID_LOGITECH=m
+CONFIG_HID_MACALLY=m
+CONFIG_HID_MAGICMOUSE=y
+CONFIG_HID_MALTRON=m
+CONFIG_HID_MAYFLASH=m
+# CONFIG_HID_MCP2200 is not set
+CONFIG_HID_MCP2221=m
+CONFIG_HID_MEGAWORLD_FF=m
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_MULTITOUCH=m
+CONFIG_HID_NINTENDO=m
+CONFIG_HID_NTI=m
+CONFIG_HID_NTRIG=y
+CONFIG_HID_NVIDIA_SHIELD=m
+CONFIG_HID_ORTEK=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_HID_PENMOUNT=m
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_PICOLCD_BACKLIGHT=y
+CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PICOLCD_FB=y
+CONFIG_HID_PICOLCD_LCD=y
+CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PICOLCD=m
+CONFIG_HID_PID=y
+CONFIG_HID_PLANTRONICS=m
+CONFIG_HID_PLAYSTATION=m
+CONFIG_HID_PRIMAX=m
+CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_PXRC=m
+CONFIG_HIDRAW=y
+CONFIG_HID_RAZER=m
+# CONFIG_HID_REDRAGON is not set
+CONFIG_HID_RETRODE=m
+CONFIG_HID_RMI=m
+CONFIG_HID_ROCCAT=m
+CONFIG_HID_SAITEK=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SEMITEK=m
+CONFIG_HID_SENSOR_ACCEL_3D=m
+CONFIG_HID_SENSOR_ALS=m
+CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE=m
+# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set
+CONFIG_HID_SENSOR_DEVICE_ROTATION=m
+CONFIG_HID_SENSOR_GYRO_3D=m
+CONFIG_HID_SENSOR_HUB=m
+CONFIG_HID_SENSOR_HUMIDITY=m
+CONFIG_HID_SENSOR_IIO_COMMON=m
+CONFIG_HID_SENSOR_IIO_TRIGGER=m
+CONFIG_HID_SENSOR_INCLINOMETER_3D=m
+CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
+# CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_HID_SENSOR_PROX is not set
+CONFIG_HID_SENSOR_TEMP=m
+CONFIG_HID_SIGMAMICRO=m
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
+CONFIG_HID_STEAM=m
+CONFIG_HID_STEELSERIES=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID_THINGM=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_HID_TIVO=m
+CONFIG_HID_TOPRE=m
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_U2FZERO=m
+CONFIG_HID_UCLOGIC=m
+CONFIG_HID_UDRAW_PS3=m
+CONFIG_HID_VIEWSONIC=m
+CONFIG_HID_VIVALDI=m
+# CONFIG_HID_VRC2 is not set
+CONFIG_HID_WACOM=m
+CONFIG_HID_WALTOP=m
+CONFIG_HID_WIIMOTE=m
+CONFIG_HID_WINWING=m
+CONFIG_HID_XIAOMI=m
+CONFIG_HID_XINMO=m
+CONFIG_HID=y
+CONFIG_HID_ZEROPLUS=m
+CONFIG_HID_ZYDACRON=m
+CONFIG_HIGH_RES_TIMERS=y
+# CONFIG_HIPPI is not set
+# CONFIG_HISI_DMA is not set
+CONFIG_HISI_HIKEY_USB=m
+# CONFIG_HISI_PCIE_PMU is not set
+# CONFIG_HIST_TRIGGERS_DEBUG is not set
+CONFIG_HIST_TRIGGERS=y
+CONFIG_HMC425=m
+# CONFIG_HMC6352 is not set
+CONFIG_HOLTEK_FF=y
+CONFIG_HOTPLUG_CPU=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=y
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+CONFIG_HOTPLUG_PCI_PCIE=y
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HP03 is not set
+# CONFIG_HP206C is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_HP_ILO is not set
+CONFIG_HSA_AMD_SVM=y
+CONFIG_HSA_AMD=y
+# CONFIG_HSC030PA is not set
+# CONFIG_HSI is not set
+CONFIG_HSR=m
+# CONFIG_HSU_DMA is not set
+CONFIG_HT16K33=m
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTE is not set
+CONFIG_HTS221=m
+# CONFIG_HTU21 is not set
+CONFIG_HUGETLBFS=y
+# CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set
+# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
+CONFIG_HUGETLB_PAGE=y
+# CONFIG_HVC_RISCV_SBI is not set
+CONFIG_HW_CONSOLE=y
+CONFIG_HWLAT_TRACER=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_HWMON=y
+CONFIG_HWPOISON_INJECT=m
+CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y
+# CONFIG_HW_RANDOM_BA431 is not set
+# CONFIG_HW_RANDOM_CCTRNG is not set
+CONFIG_HW_RANDOM_JH7110=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_TPM=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_HW_RANDOM_XIPHERA=m
+CONFIG_HW_RANDOM=y
+CONFIG_HWSPINLOCK=y
+# CONFIG_HX711 is not set
+CONFIG_HYPERV_BALLOON=m
+CONFIG_HYPERV_IOMMU=y
+CONFIG_HYPERV_KEYBOARD=m
+CONFIG_HYPERV=m
+CONFIG_HYPERV_NET=m
+CONFIG_HYPERV_STORAGE=m
+# CONFIG_HYPERV_TESTING is not set
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
+CONFIG_HZ_1000=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_ALGOPCF=m
+# 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_AMD756_S4882 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_AMD_MP2=m
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
+CONFIG_I2C_ATR=m
+# CONFIG_I2C_CADENCE is not set
+# CONFIG_I2C_CBUS_GPIO is not set
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CP2615=m
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEMUX_PINCTRL is not set
+CONFIG_I2C_DESIGNWARE_PCI=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_I2C_DESIGNWARE_SLAVE=y
+CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_DLN2=m
+# CONFIG_I2C_EG20T is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_FSI is not set
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_HID_ACPI=m
+CONFIG_I2C_HID_OF_ELAN=m
+# CONFIG_I2C_HID_OF_GOODIX is not set
+# CONFIG_I2C_HID_OF is not set
+CONFIG_I2C_HID=y
+# CONFIG_I2C_HISI is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_MICROCHIP_CORE is not set
+CONFIG_I2C_MLXBF=m
+CONFIG_I2C_MLXCPLD=m
+# CONFIG_I2C_MUX_GPIO is not set
+CONFIG_I2C_MUX_GPMUX=m
+CONFIG_I2C_MUX_LTC4306=m
+CONFIG_I2C_MUX=m
+CONFIG_I2C_MUX_MLXCPLD=m
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PCA954x is not set
+# CONFIG_I2C_MUX_PINCTRL is not set
+# CONFIG_I2C_MUX_REG is not set
+CONFIG_I2C_NFORCE2=m
+# CONFIG_I2C_NFORCE2_S4985 is not set
+# CONFIG_I2C_NOMADIK is not set
+CONFIG_I2C_NVIDIA_GPU=m
+CONFIG_I2C_OCORES=y
+CONFIG_I2C_PCA_PLATFORM=m
+CONFIG_I2C_PCI1XXXX=m
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_QCOM_CCI is not set
+# CONFIG_I2C_RK3X is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+CONFIG_I2C_SCMI=m
+CONFIG_I2C_SI470X=m
+# CONFIG_I2C_SI4713 is not set
+CONFIG_I2C_SIMTEC=m
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+CONFIG_I2C_SLAVE_EEPROM=m
+# CONFIG_I2C_SLAVE_TESTUNIT is not set
+CONFIG_I2C_SLAVE=y
+CONFIG_I2C_SMBUS=m
+CONFIG_I2C_STUB=m
+# CONFIG_I2C_TAOS_EVM is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VIPERBOARD is not set
+CONFIG_I2C_VIRTIO=m
+# CONFIG_I2C_XILINX is not set
+CONFIG_I2C=y
+CONFIG_I2C_ZHAOXIN=m
+# CONFIG_I3C is not set
+# CONFIG_I40E_DCB is not set
+CONFIG_I40E=m
+CONFIG_I40EVF=m
+CONFIG_I6300ESB_WDT=m
+# CONFIG_I8K is not set
+# CONFIG_IAQCORE is not set
+CONFIG_ICE_HWMON=y
+CONFIG_ICE_HWTS=y
+CONFIG_ICE=m
+CONFIG_ICE_SWITCHDEV=y
+CONFIG_ICP10100=m
+CONFIG_ICPLUS_PHY=m
+# CONFIG_ICS932S401 is not set
+# CONFIG_IDLE_INJECT is not set
+CONFIG_IDLE_PAGE_TRACKING=y
+CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
+CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_IEEE802154_ADF7242=m
+# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
+CONFIG_IEEE802154_AT86RF230=m
+CONFIG_IEEE802154_ATUSB=m
+# CONFIG_IEEE802154_CA8210_DEBUGFS is not set
+CONFIG_IEEE802154_CA8210=m
+CONFIG_IEEE802154_CC2520=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKELB=m
+# CONFIG_IEEE802154_HWSIM is not set
+CONFIG_IEEE802154=m
+CONFIG_IEEE802154_MCR20A=m
+CONFIG_IEEE802154_MRF24J40=m
+# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
+CONFIG_IEEE802154_SOCKET=m
+CONFIG_IFB=m
+CONFIG_IFCVF=m
+CONFIG_IGB_DCA=y
+CONFIG_IGB_HWMON=y
+CONFIG_IGB=m
+CONFIG_IGBVF=m
+CONFIG_IGC=m
+CONFIG_IIO_BUFFER_CB=m
+CONFIG_IIO_BUFFER_DMAENGINE=m
+CONFIG_IIO_BUFFER_DMA=m
+CONFIG_IIO_BUFFER_HW_CONSUMER=m
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_CONFIGFS=m
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m
+CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE=m
+CONFIG_IIO_FORMAT_KUNIT_TEST=m
+CONFIG_IIO_GTS_KUNIT_TEST=m
+# CONFIG_IIO_HRTIMER_TRIGGER is not set
+CONFIG_IIO_INTERRUPT_TRIGGER=m
+CONFIG_IIO_KFIFO_BUF=m
+CONFIG_IIO_KX022A_I2C=m
+CONFIG_IIO_KX022A_SPI=m
+CONFIG_IIO=m
+CONFIG_IIO_MUX=m
+CONFIG_IIO_RESCALE_KUNIT_TEST=m
+CONFIG_IIO_RESCALE=m
+# CONFIG_IIO_SIMPLE_DUMMY is not set
+# CONFIG_IIO_SSP_SENSORHUB is not set
+CONFIG_IIO_ST_ACCEL_3AXIS=m
+CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
+CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m
+CONFIG_IIO_ST_GYRO_3AXIS=m
+CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
+CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
+CONFIG_IIO_ST_LSM6DSX=m
+# CONFIG_IIO_ST_LSM9DS0 is not set
+CONFIG_IIO_ST_MAGN_3AXIS=m
+CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
+CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+# CONFIG_IIO_ST_PRESS is not set
+CONFIG_IIO_SW_DEVICE=m
+CONFIG_IIO_SW_TRIGGER=m
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+CONFIG_IIO_TIGHTLOOP_TRIGGER=m
+CONFIG_IIO_TRIGGERED_BUFFER=m
+CONFIG_IIO_TRIGGERED_EVENT=m
+CONFIG_IIO_TRIGGER=y
+# CONFIG_IKCONFIG is not set
+CONFIG_IKHEADERS=m
+CONFIG_IMA_APPRAISE_BOOTPARAM=y
+# CONFIG_IMA_APPRAISE_BUILD_POLICY is not set
+CONFIG_IMA_APPRAISE_MODSIG=y
+CONFIG_IMA_APPRAISE=y
+CONFIG_IMA_ARCH_POLICY=y
+# CONFIG_IMA_BLACKLIST_KEYRING is not set
+# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set
+CONFIG_IMA_DEFAULT_HASH="sha256"
+CONFIG_IMA_DEFAULT_HASH_SHA256=y
+# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set
+# CONFIG_IMA_DISABLE_HTABLE is not set
+CONFIG_IMA_KEXEC=y
+CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY=y
+# CONFIG_IMA_LOAD_X509 is not set
+CONFIG_IMA_LSM_RULES=y
+CONFIG_IMA_MEASURE_PCR_IDX=10
+CONFIG_IMA_NG_TEMPLATE=y
+CONFIG_IMA_READ_POLICY=y
+# CONFIG_IMA_SIG_TEMPLATE is not set
+# CONFIG_IMA_TEMPLATE is not set
+CONFIG_IMA_WRITE_POLICY=y
+CONFIG_IMA=y
+# CONFIG_IMG_ASCII_LCD is not set
+# CONFIG_INA2XX_ADC is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESPINTCP=y
+CONFIG_INET6_ESP=m
+CONFIG_INET6_ESP_OFFLOAD=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET_AH=m
+CONFIG_INET_DIAG_DESTROY=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_ESPINTCP=y
+CONFIG_INET_ESP=m
+CONFIG_INET_ESP_OFFLOAD=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_MPTCP_DIAG=y
+CONFIG_INET_RAW_DIAG=y
+CONFIG_INET_TABLE_PERTURB_ORDER=16
+CONFIG_INET_TCP_DIAG=y
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_UDP_DIAG=y
+CONFIG_INET=y
+CONFIG_INFINIBAND_ADDR_TRANS=y
+# CONFIG_INFINIBAND_BNXT_RE is not set
+CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_EFA=m
+CONFIG_INFINIBAND_ERDMA=m
+CONFIG_INFINIBAND_IPOIB_CM=y
+CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IRDMA=m
+CONFIG_INFINIBAND_ISER=m
+CONFIG_INFINIBAND_ISERT=m
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_OCRDMA=m
+CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
+CONFIG_INFINIBAND_QEDR=m
+CONFIG_INFINIBAND_QIB_DCA=y
+CONFIG_INFINIBAND_QIB=m
+CONFIG_INFINIBAND_RDMAVT=m
+CONFIG_INFINIBAND_RTRS_CLIENT=m
+CONFIG_INFINIBAND_RTRS_SERVER=m
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_SRPT=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USNIC=m
+# CONFIG_INFINIBAND_VMWARE_PVRDMA is not set
+# CONFIG_INFTL is not set
+# CONFIG_INIT_MLOCKED_ON_FREE_DEFAULT_ON is not set
+CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
+# CONFIG_INITRAMFS_PRESERVE_MTIME is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_INIT_STACK_ALL_PATTERN is not set
+CONFIG_INIT_STACK_ALL_ZERO=y
+# CONFIG_INIT_STACK_NONE is not set
+CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_ADXL34X is not set
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_ATLAS_BTNS=m
+# CONFIG_INPUT_ATMEL_CAPTOUCH is not set
+CONFIG_INPUT_AXP20X_PEK=m
+# CONFIG_INPUT_BMA150 is not set
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_CMA3000_I2C=m
+CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
+# CONFIG_INPUT_DA7280_HAPTICS is not set
+CONFIG_INPUT_DA9063_ONKEY=m
+# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+CONFIG_INPUT_E3X0_BUTTON=m
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_FF_MEMLESS=m
+# CONFIG_INPUT_GPIO_BEEPER is not set
+# CONFIG_INPUT_GPIO_DECODER is not set
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+CONFIG_INPUT_GPIO_VIBRA=m
+# CONFIG_INPUT_IBM_PANEL is not set
+CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
+# CONFIG_INPUT_IMS_PCU is not set
+CONFIG_INPUT_IQS269A=m
+CONFIG_INPUT_IQS626A=m
+CONFIG_INPUT_IQS7222=m
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KUNIT_TEST=m
+CONFIG_INPUT_KXTJ9=m
+CONFIG_INPUT_LEDS=y
+CONFIG_INPUT_MATRIXKMAP=m
+CONFIG_INPUT_MAX77650_ONKEY=m
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_PM8XXX_VIBRATOR=m
+CONFIG_INPUT_PMIC8XXX_PWRKEY=m
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
+CONFIG_INPUT_REGULATOR_HAPTIC=m
+CONFIG_INPUT_RK805_PWRKEY=m
+CONFIG_INPUT_RT5120_PWRKEY=m
+CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_TABLET=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_WISTRON_BTNS=m
+CONFIG_INPUT=y
+CONFIG_INPUT_YEALINK=m
+CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
+CONFIG_INTEGRITY_AUDIT=y
+CONFIG_INTEGRITY_CA_MACHINE_KEYRING_MAX=y
+CONFIG_INTEGRITY_CA_MACHINE_KEYRING=y
+CONFIG_INTEGRITY_MACHINE_KEYRING=y
+CONFIG_INTEGRITY_PLATFORM_KEYRING=y
+CONFIG_INTEGRITY_SIGNATURE=y
+CONFIG_INTEGRITY_TRUSTED_KEYRING=y
+CONFIG_INTEGRITY=y
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_INTEL_IDXD_COMPAT is not set
+CONFIG_INTEL_IDXD=m
+# CONFIG_INTEL_IDXD_PERFMON is not set
+# CONFIG_INTEL_IOMMU_DEBUGFS is not set
+# CONFIG_INTEL_ISHTP_ECLITE is not set
+# CONFIG_INTEL_LDMA is not set
+# CONFIG_INTEL_MEI_PXP is not set
+# CONFIG_INTEL_PMT_CLASS is not set
+# CONFIG_INTEL_PMT_CRASHLOG is not set
+# CONFIG_INTEL_PMT_TELEMETRY is not set
+# CONFIG_INTEL_SAR_INT1092 is not set
+# CONFIG_INTEL_SCU_PCI is not set
+# CONFIG_INTEL_SCU_PLATFORM is not set
+CONFIG_INTEL_SOC_PMIC_CHTDC_TI=y
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_INTEL_TCC_COOLING is not set
+# CONFIG_INTEL_TH is not set
+CONFIG_INTEL_UNCORE_FREQ_CONTROL=m
+# CONFIG_INTEL_WMI_SBL_FW_UPDATE is not set
+CONFIG_INTEL_XWAY_PHY=m
+# CONFIG_INTERCONNECT_QCOM_SM6350 is not set
+CONFIG_INTERCONNECT=y
+# CONFIG_INTERVAL_TREE_TEST is not set
+CONFIG_INV_ICM42600_I2C=m
+CONFIG_INV_ICM42600_SPI=m
+# CONFIG_INV_MPU6050_I2C is not set
+# CONFIG_INV_MPU6050_IIO is not set
+# CONFIG_INV_MPU6050_SPI is not set
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_NONE is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IOMMU_DEBUGFS is not set
+CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
+# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMUFD=m
+# CONFIG_IOMMUFD_TEST is not set
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_IONIC=m
+CONFIG_IOSCHED_BFQ=y
+CONFIG_IOSM=m
+CONFIG_IO_STRICT_DEVMEM=y
+CONFIG_IO_URING=y
+# CONFIG_IP5XXX_POWER is not set
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_SRH=m
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
+# CONFIG_IPACK_BUS is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IPC_NS=y
+# CONFIG_IP_DCCP is not set
+CONFIG_IP_FIB_TRIE_STATS=y
+# CONFIG_IPMB_DEVICE_INTERFACE is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_HANDLER=m
+CONFIG_IPMI_IPMB=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_POWEROFF=m
+CONFIG_IPMI_SI=m
+CONFIG_IPMI_SSIF=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_IP_PNP is not set
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_SCTP=m
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPMAC=m
+CONFIG_IP_SET_HASH_IPMARK=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
+CONFIG_IP_SET_LIST_SET=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IPU_BRIDGE=m
+CONFIG_IPV6_GRE=m
+CONFIG_IPV6_ILA=m
+CONFIG_IPV6_IOAM6_LWTUNNEL=y
+CONFIG_IPV6_MIP6=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_IPV6_PIMSM_V2=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_RPL_LWTUNNEL=y
+CONFIG_IPV6_SEG6_HMAC=y
+CONFIG_IPV6_SEG6_LWTUNNEL=y
+CONFIG_IPV6_SIT_6RD=y
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_VTI=m
+CONFIG_IPV6=y
+CONFIG_IPVLAN=m
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_FTP=m
+CONFIG_IP_VS_IPV6=y
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS=m
+CONFIG_IP_VS_MH=m
+CONFIG_IP_VS_MH_TAB_INDEX=12
+CONFIG_IP_VS_NQ=m
+CONFIG_IP_VS_OVF=m
+CONFIG_IP_VS_PE_SIP=m
+CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_SCTP=y
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SH_TAB_BITS=8
+CONFIG_IP_VS_TAB_BITS=12
+CONFIG_IP_VS_TWOS=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IPVTAP=m
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_IR_ENE=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
+CONFIG_IR_HIX5HD2=m
+CONFIG_IR_IGORPLUGUSB=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_IMON_DECODER=m
+CONFIG_IR_IMON=m
+CONFIG_IR_IMON_RAW=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_IRQ_STACKS=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_RCMM_DECODER=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_SANYO_DECODER=m
+# CONFIG_IRSD200 is not set
+CONFIG_IR_SERIAL=m
+CONFIG_IR_SERIAL_TRANSMITTER=y
+CONFIG_IR_SHARP_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_SPI=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_TOY=m
+CONFIG_IR_TTUSBIR=m
+CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_XMP_DECODER=m
+# CONFIG_ISA_BUS is not set
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+CONFIG_ISCSI_BOOT_SYSFS=m
+# CONFIG_ISCSI_IBFT is not set
+CONFIG_ISCSI_TARGET_CXGB4=m
+CONFIG_ISCSI_TARGET=m
+CONFIG_ISCSI_TCP=m
+# CONFIG_ISDN is not set
+CONFIG_ISL29003=m
+CONFIG_ISL29020=m
+# CONFIG_ISL29125 is not set
+# CONFIG_ISL29501 is not set
+# CONFIG_ISL76682 is not set
+CONFIG_ISO9660_FS=m
+CONFIG_IS_SIGNED_TYPE_KUNIT_TEST=m
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_ITCO_WDT=m
+# CONFIG_ITG3200 is not set
+CONFIG_IWL3945=m
+CONFIG_IWL4965=m
+CONFIG_IWLDVM=m
+CONFIG_IWLEGACY_DEBUGFS=y
+CONFIG_IWLEGACY_DEBUG=y
+CONFIG_IWLEGACY=m
+# CONFIG_IWLMEI is not set
+CONFIG_IWLMVM=m
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+CONFIG_IWLWIFI_DEBUGFS=y
+CONFIG_IWLWIFI_DEBUG=y
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+CONFIG_IWLWIFI=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGBE_DCB=y
+CONFIG_IXGBE_HWMON=y
+CONFIG_IXGBE_IPSEC=y
+CONFIG_IXGBE=m
+CONFIG_IXGBEVF_IPSEC=y
+CONFIG_IXGBEVF=m
+CONFIG_IXGB=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFS_DEBUG is not set
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+# CONFIG_JFS_STATISTICS is not set
+CONFIG_JH71XX_PMU=y
+CONFIG_JME=m
+CONFIG_JOLIET=y
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADC=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_ANALOG=m
+# CONFIG_JOYSTICK_AS5011 is not set
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_DB9=m
+# CONFIG_JOYSTICK_FSIA6B is not set
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_IFORCE_232=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_JOYDUMP=m
+# CONFIG_JOYSTICK_MAGELLAN is not set
+CONFIG_JOYSTICK_PSXPAD_SPI_FF=y
+CONFIG_JOYSTICK_PSXPAD_SPI=m
+CONFIG_JOYSTICK_PXRC=m
+CONFIG_JOYSTICK_QWIIC=m
+# CONFIG_JOYSTICK_SEESAW is not set
+# CONFIG_JOYSTICK_SENSEHAT is not set
+CONFIG_JOYSTICK_SIDEWINDER=m
+# CONFIG_JOYSTICK_SPACEBALL is not set
+# CONFIG_JOYSTICK_SPACEORB is not set
+# CONFIG_JOYSTICK_STINGER is not set
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+# CONFIG_JOYSTICK_TWIDJOY is not set
+CONFIG_JOYSTICK_WALKERA0701=m
+# CONFIG_JOYSTICK_WARRIOR is not set
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+CONFIG_JOYSTICK_XPAD=m
+# CONFIG_JOYSTICK_ZHENHUA is not set
+# CONFIG_JSA1212 is not set
+CONFIG_JUMP_LABEL=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_SELFTEST is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_KASAN_EXTRA_INFO is not set
+# CONFIG_KASAN is not set
+# CONFIG_KASAN_MODULE_TEST is not set
+# CONFIG_KASAN_VMALLOC is not set
+# CONFIG_KCOV is not set
+# CONFIG_KCSAN is not set
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KEBA_CP500=m
+# CONFIG_KERNEL_BZIP2 is not set
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_LZ4 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_UNCOMPRESSED is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_ZSTD is not set
+CONFIG_KEXEC_FILE=y
+CONFIG_KEXEC_IMAGE_VERIFY_SIG=y
+CONFIG_KEXEC_SIG=y
+CONFIG_KEXEC=y
+# CONFIG_KEYBOARD_ADC is not set
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+# CONFIG_KEYBOARD_APPLESPI is not set
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_BCM is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+CONFIG_KEYBOARD_CYPRESS_SF=m
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_GOLDFISH_EVENTS is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MATRIX 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_OMAP4 is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_PINEPHONE is not set
+CONFIG_KEYBOARD_PMIC8XXX=m
+CONFIG_KEYBOARD_QT1050=m
+CONFIG_KEYBOARD_QT1070=m
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+CONFIG_KEYBOARD_TM2_TOUCHKEY=m
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_KEY_DH_OPERATIONS=y
+CONFIG_KEY_NOTIFICATIONS=y
+CONFIG_KEYS_REQUEST_CACHE=y
+CONFIG_KEYS=y
+# CONFIG_KFENCE_DEFERRABLE is not set
+CONFIG_KFENCE_KUNIT_TEST=m
+CONFIG_KFENCE_NUM_OBJECTS=255
+CONFIG_KFENCE_SAMPLE_INTERVAL=100
+# CONFIG_KFENCE_STATIC_KEYS is not set
+CONFIG_KFENCE_STRESS_TEST_FAULTS=0
+CONFIG_KFENCE=y
+CONFIG_KGDB_HONOUR_BLOCKLIST=y
+# CONFIG_KGDB_KDB is not set
+CONFIG_KGDB_LOW_LEVEL_TRAP=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+# CONFIG_KGDB_TESTS_ON_BOOT is not set
+CONFIG_KGDB_TESTS=y
+CONFIG_KGDB=y
+# CONFIG_KMX61 is not set
+# CONFIG_KPROBE_EVENT_GEN_TEST is not set
+# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set
+CONFIG_KPROBE_EVENTS=y
+CONFIG_KPROBES_SANITY_TEST=m
+CONFIG_KPROBES=y
+# CONFIG_KS7010 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
+CONFIG_KSM=y
+CONFIG_KSZ884X_PCI=m
+CONFIG_KUNIT_ALL_TESTS=m
+CONFIG_KUNIT_DEBUGFS=y
+# CONFIG_KUNIT_DEFAULT_ENABLED is not set
+CONFIG_KUNIT_EXAMPLE_TEST=m
+# CONFIG_KUNIT_FAULT_TEST is not set
+CONFIG_KUNIT=m
+CONFIG_KUNIT_TEST=m
+CONFIG_KVM_MAX_NR_VCPUS=4096
+# CONFIG_KVM_PROVE_MMU is not set
+CONFIG_KVM_SMM=y
+# CONFIG_KVM_WERROR is not set
+CONFIG_KVM_XEN=y
+CONFIG_KVM=y
+CONFIG_KXCJK1013=m
+# CONFIG_KXSD9 is not set
+CONFIG_L2TP_DEBUGFS=m
+CONFIG_L2TP_ETH=m
+CONFIG_L2TP_IP=m
+CONFIG_L2TP=m
+CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
+CONFIG_LAN966X_SWITCH=m
+# CONFIG_LAPB is not set
+CONFIG_LATENCYTOP=y
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_LCD2S is not set
+# CONFIG_LCD_AMS369FG06 is not set
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_HX8357 is not set
+# CONFIG_LCD_ILI922X is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_L4F00242T03 is not set
+# CONFIG_LCD_LMS283GF05 is not set
+# CONFIG_LCD_LMS501KF03 is not set
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_OTM3225A is not set
+CONFIG_LCD_PLATFORM=m
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+# CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is not set
+CONFIG_LDISC_AUTOLOAD=y
+# CONFIG_LDM_DEBUG is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AN30259A=m
+# CONFIG_LEDS_ARIEL is not set
+CONFIG_LEDS_AS3645A=m
+CONFIG_LEDS_AW200XX=m
+# CONFIG_LEDS_AW2013 is not set
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_BD2606MVV is not set
+# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_BLINKM=m
+CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
+CONFIG_LEDS_CLASS_FLASH=m
+CONFIG_LEDS_CLASS_MULTICOLOR=m
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLEVO_MAIL=m
+CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_EL15203000 is not set
+# CONFIG_LEDS_GPIO is not set
+CONFIG_LEDS_GROUP_MULTICOLOR=m
+# CONFIG_LEDS_IS31FL319X is not set
+CONFIG_LEDS_IS31FL32XX=m
+CONFIG_LEDS_KTD202X=m
+# CONFIG_LEDS_KTD2692 is not set
+# CONFIG_LEDS_LGM is not set
+CONFIG_LEDS_LM3530=m
+CONFIG_LEDS_LM3532=m
+# CONFIG_LEDS_LM355x is not set
+CONFIG_LEDS_LM3601X=m
+# CONFIG_LEDS_LM36274 is not set
+# CONFIG_LEDS_LM3642 is not set
+CONFIG_LEDS_LM3692X=m
+# CONFIG_LEDS_LM3697 is not set
+CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_LP3952=m
+CONFIG_LEDS_LP50XX=m
+# CONFIG_LEDS_LP55XX_COMMON is not set
+# CONFIG_LEDS_LP8860 is not set
+CONFIG_LEDS_LT3593=m
+CONFIG_LEDS_MAX5970=m
+CONFIG_LEDS_MAX77650=m
+CONFIG_LEDS_MLXCPLD=m
+CONFIG_LEDS_MLXREG=m
+CONFIG_LEDS_NCP5623=m
+CONFIG_LEDS_NIC78BX=m
+# CONFIG_LEDS_OT200 is not set
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+CONFIG_LEDS_PCA995X=m
+CONFIG_LEDS_PWM=m
+CONFIG_LEDS_PWM_MULTICOLOR=m
+CONFIG_LEDS_REGULATOR=m
+# CONFIG_LEDS_RT4505 is not set
+# CONFIG_LEDS_RT8515 is not set
+# CONFIG_LEDS_SGM3140 is not set
+# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
+CONFIG_LEDS_SYSCON=y
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TI_LMU_COMMON is not set
+# CONFIG_LEDS_TLC591XX is not set
+CONFIG_LEDS_TRIGGER_ACTIVITY=m
+CONFIG_LEDS_TRIGGER_AUDIO=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+CONFIG_LEDS_TRIGGER_DISK=y
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
+CONFIG_LEDS_TRIGGER_MTD=y
+CONFIG_LEDS_TRIGGER_NETDEV=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_PANIC=y
+CONFIG_LEDS_TRIGGER_PATTERN=m
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_TTY=m
+CONFIG_LEDS_USER=m
+CONFIG_LED_TRIGGER_PHY=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_LEGACY_TIOCSTI is not set
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+CONFIG_LIB80211_CRYPT_WEP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_LIB80211=m
+CONFIG_LIBCRC32C=y
+# CONFIG_LIBERTAS is not set
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM=m
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_LIBNVDIMM=m
+# CONFIG_LIDAR_LITE_V2 is not set
+CONFIG_LINEAR_RANGES_TEST=m
+CONFIG_LIRC=y
+CONFIG_LIST_KUNIT_TEST=m
+CONFIG_LITEX_LITEETH=y
+CONFIG_LITEX_SOC_CONTROLLER=y
+CONFIG_LIVEPATCH=y
+# CONFIG_LKDTM is not set
+# CONFIG_LLC2 is not set
+CONFIG_LLC=m
+# CONFIG_LMK04832 is not set
+CONFIG_LMP91000=m
+CONFIG_LOAD_UEFI_KEYS=y
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_LOCKDEP_BITS=16
+CONFIG_LOCKDEP_CHAINS_BITS=19
+CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12
+CONFIG_LOCKDEP_STACK_TRACE_BITS=19
+CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14
+CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
+# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set
+# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set
+CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
+CONFIG_LOCKD_V4=y
+# CONFIG_LOCK_EVENT_COUNTS is not set
+# CONFIG_LOCK_STAT is not set
+CONFIG_LOCK_TORTURE_TEST=m
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_LOGIG940_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIWHEELS_FF=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO=y
+CONFIG_LOOPBACK_TARGET=m
+# CONFIG_LPC_ICH is not set
+CONFIG_LP_CONSOLE=y
+# CONFIG_LPC_SCH is not set
+CONFIG_LRU_GEN_ENABLED=y
+# CONFIG_LRU_GEN_STATS is not set
+CONFIG_LRU_GEN=y
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LSM="lockdown,yama,integrity,selinux,bpf,landlock"
+CONFIG_LSM_MMAP_MIN_ADDR=65535
+CONFIG_LTC1660=m
+# CONFIG_LTC2309 is not set
+# CONFIG_LTC2471 is not set
+# CONFIG_LTC2485 is not set
+# CONFIG_LTC2496 is not set
+# CONFIG_LTC2497 is not set
+# CONFIG_LTC2632 is not set
+CONFIG_LTC2688=m
+CONFIG_LTC2983=m
+# CONFIG_LTE_GDM724X is not set
+# CONFIG_LTO_CLANG_FULL is not set
+# CONFIG_LTO_CLANG_THIN is not set
+CONFIG_LTO_NONE=y
+# CONFIG_LTR390 is not set
+CONFIG_LTR501=m
+CONFIG_LTRF216A=m
+CONFIG_LV0104CS=m
+# CONFIG_LWQ_TEST is not set
+CONFIG_LWTUNNEL_BPF=y
+CONFIG_LWTUNNEL=y
+CONFIG_LXT_PHY=m
+CONFIG_LZ4_COMPRESS=m
+# CONFIG_M62332 is not set
+CONFIG_MAC80211_DEBUGFS=y
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_HWSIM=m
+CONFIG_MAC80211_KUNIT_TEST=m
+CONFIG_MAC80211_LEDS=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_MESH=y
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC802154=m
+CONFIG_MACB=m
+CONFIG_MACB_PCI=m
+CONFIG_MACB_USE_HWSTAMP=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_MACHZ_WDT=m
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MACSEC=m
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+# CONFIG_MAG3110 is not set
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0
+CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_MAILBOX=y
+# CONFIG_MANAGER_SBS is not set
+CONFIG_MANTIS_CORE=m
+# CONFIG_MARCH_Z16 is not set
+CONFIG_MARVELL_10G_PHY=m
+CONFIG_MARVELL_88Q2XXX_PHY=m
+CONFIG_MARVELL_88X2222_PHY=m
+CONFIG_MARVELL_PHY=m
+# CONFIG_MATOM is not set
+# CONFIG_MAX1027 is not set
+# CONFIG_MAX11100 is not set
+# CONFIG_MAX1118 is not set
+CONFIG_MAX11205=m
+CONFIG_MAX11410=m
+CONFIG_MAX1241=m
+CONFIG_MAX1363=m
+CONFIG_MAX30100=m
+# CONFIG_MAX30102 is not set
+CONFIG_MAX30208=m
+CONFIG_MAX31827=m
+CONFIG_MAX31856=m
+CONFIG_MAX31865=m
+CONFIG_MAX34408=m
+# CONFIG_MAX44000 is not set
+CONFIG_MAX44009=m
+# CONFIG_MAX517 is not set
+# CONFIG_MAX5432 is not set
+# CONFIG_MAX5481 is not set
+# CONFIG_MAX5487 is not set
+CONFIG_MAX5522=m
+# CONFIG_MAX5821 is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_MAX6959 is not set
+CONFIG_MAX77620_WATCHDOG=m
+# CONFIG_MAX9611 is not set
+CONFIG_MAXIM_THERMOCOUPLE=m
+CONFIG_MAXLINEAR_GPHY=m
+CONFIG_MAXPHYSMEM_128GB=y
+# CONFIG_MAXPHYSMEM_2GB is not set
+CONFIG_MAX_SKB_FRAGS=17
+CONFIG_MB1232=m
+# CONFIG_MC3230 is not set
+# CONFIG_MCB is not set
+CONFIG_MCHP_CLK_MPFS=y
+# CONFIG_MCORE2 is not set
+# CONFIG_MCP320X is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_MCP3564 is not set
+CONFIG_MCP3911=m
+CONFIG_MCP4018=m
+CONFIG_MCP41010=m
+# CONFIG_MCP4131 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_MCP4725 is not set
+CONFIG_MCP4728=m
+CONFIG_MCP4821=m
+# CONFIG_MCP4922 is not set
+CONFIG_MCP9600=m
+CONFIG_MCTP_SERIAL=m
+# CONFIG_MCTP_TRANSPORT_I2C is not set
+# CONFIG_MCTP_TRANSPORT_I3C is not set
+CONFIG_MCTP=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_BITMAP_FILE=y
+# CONFIG_MD_CLUSTER is not set
+CONFIG_MD_FAULTY=m
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
+CONFIG_MDIO_DEVICE=y
+# CONFIG_MDIO_GPIO is not set
+# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
+# CONFIG_MDIO_IPQ4019 is not set
+# CONFIG_MDIO_IPQ8064 is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+CONFIG_MDIO_MVUSB=m
+# CONFIG_MDIO_OCTEON is not set
+# CONFIG_MDIO_THUNDER is not set
+CONFIG_MD_LINEAR=m
+CONFIG_MDM_GCC_9607=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID456=m
+CONFIG_MD=y
+CONFIG_MEAN_AND_VARIANCE_UNIT_TEST=m
+CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_CEC_RC=y
+CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER_DVB=y
+CONFIG_MEDIA_CONTROLLER=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_MEDIA_PCI_SUPPORT=y
+CONFIG_MEDIA_PLATFORM_DRIVERS=y
+CONFIG_MEDIA_PLATFORM_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+# CONFIG_MEDIA_SDR_SUPPORT is not set
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_SUPPORT_FILTER=y
+CONFIG_MEDIA_SUPPORT=m
+CONFIG_MEDIATEK_GE_PHY=m
+CONFIG_MEDIATEK_MT6370_ADC=m
+CONFIG_MEDIA_TEST_SUPPORT=y
+# CONFIG_MEDIA_TUNER_MSI001 is not set
+# CONFIG_MEDIA_TUNER_MXL301RF is not set
+CONFIG_MEDIA_USB_SUPPORT=y
+# CONFIG_MEFFICEON is not set
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_SAS=m
+# CONFIG_MELAN is not set
+CONFIG_MELLANOX_PLATFORM=y
+# CONFIG_MEM_ALLOC_PROFILING is not set
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
+CONFIG_MEMCG=y
+CONFIG_MEMCPY_KUNIT_TEST=m
+CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
+CONFIG_MEMORY_FAILURE=y
+# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set
+# CONFIG_MEMORY_HOTPLUG is not set
+# CONFIG_MEMORY is not set
+# CONFIG_MEMSTICK_DEBUG is not set
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_MEMSTICK=m
+CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
+CONFIG_MEMSTICK_REALTEK_USB=m
+CONFIG_MEMSTICK_TIFM_MS=m
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MEMTEST=y
+# CONFIG_MEN_A21_WDT is not set
+# CONFIG_MERAKI_MX100 is not set
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
+# CONFIG_MFD_ATC260X_I2C is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_AXP20X_RSB=m
+CONFIG_MFD_AXP20X=y
+# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_CPCAP is not set
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
+CONFIG_MFD_CS42L43_I2C=m
+CONFIG_MFD_CS42L43_SDW=m
+# CONFIG_MFD_CS5535 is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+CONFIG_MFD_DA9063=m
+# CONFIG_MFD_DA9150 is not set
+CONFIG_MFD_DLN2=m
+CONFIG_MFD_ENE_KB3930=m
+# CONFIG_MFD_GATEWORKS_GSC is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_MFD_HI6421_SPMI is not set
+CONFIG_MFD_INTEL_M10_BMC=m
+CONFIG_MFD_INTEL_M10_BMC_PMCI=m
+CONFIG_MFD_INTEL_M10_BMC_SPI=m
+# 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_KHADAS_MCU is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_LOCHNAGAR is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_MFD_MAX14577 is not set
+CONFIG_MFD_MAX5970=m
+CONFIG_MFD_MAX597X=m
+# CONFIG_MFD_MAX77541 is not set
+# CONFIG_MFD_MAX77620 is not set
+CONFIG_MFD_MAX77650=m
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+CONFIG_MFD_MAX77714=m
+# 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_MC13XXX_I2C is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_MFD_MP2629 is not set
+# CONFIG_MFD_MT6360 is not set
+# CONFIG_MFD_MT6370 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_NTXEC is not set
+# CONFIG_MFD_OCELOT is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_QCOM_PM8008 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RK8XX_I2C is not set
+# CONFIG_MFD_RK8XX_SPI is not set
+# CONFIG_MFD_RN5T618 is not set
+# CONFIG_MFD_ROHM_BD71828 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
+# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
+CONFIG_MFD_RSMU_I2C=m
+CONFIG_MFD_RSMU_SPI=m
+CONFIG_MFD_RT4831=m
+# CONFIG_MFD_RT5033 is not set
+CONFIG_MFD_RT5120=m
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SIMPLE_MFD_I2C=m
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SL28CPLD is not set
+CONFIG_MFD_SM501_GPIO=y
+CONFIG_MFD_SM501=m
+# CONFIG_MFD_SMPRO is not set
+# CONFIG_MFD_STMFX is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_STPMIC1 is not set
+CONFIG_MFD_SY7636A=m
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_TI_LMU is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
+# CONFIG_MFD_TIMBERDALE is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS65219 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS6594_I2C=m
+# CONFIG_MFD_TPS6594_SPI is not set
+# CONFIG_MFD_TQMX86 is not set
+# CONFIG_MFD_VIPERBOARD is not set
+CONFIG_MFD_VX855=m
+CONFIG_MFD_WL1273_CORE=m
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MHI_BUS_DEBUG is not set
+# CONFIG_MHI_BUS_EP is not set
+CONFIG_MHI_BUS=m
+CONFIG_MHI_BUS_PCI_GENERIC=m
+CONFIG_MHI_NET=m
+CONFIG_MHI_WWAN_CTRL=m
+CONFIG_MHI_WWAN_MBIM=m
+# CONFIG_MICREL_KS8995MA is not set
+CONFIG_MICREL_PHY=m
+CONFIG_MICROCHIP_PHY=m
+# CONFIG_MICROCHIP_PIT64B is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+CONFIG_MICROCHIP_T1S_PHY=m
+CONFIG_MICROSEMI_PHY=m
+CONFIG_MICROSOFT_MANA=m
+CONFIG_MIGRATION=y
+CONFIG_MII=m
+CONFIG_MINIX_FS=m
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_MISC_ALCOR_PCI=m
+CONFIG_MISC_FILESYSTEMS=y
+CONFIG_MISC_RTSX_PCI=m
+CONFIG_MISC_RTSX_USB=m
+CONFIG_MKISS=m
+CONFIG_MLX4_CORE_GEN2=y
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_MLX4_EN_DCB=y
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_INFINIBAND=m
+CONFIG_MLX5_ACCEL=y
+CONFIG_MLX5_CLS_ACT=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_IPOIB=y
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_DPLL=m
+CONFIG_MLX5_EN_ARFS=y
+CONFIG_MLX5_EN_IPSEC=y
+CONFIG_MLX5_EN_MACSEC=y
+CONFIG_MLX5_EN_RXNFC=y
+CONFIG_MLX5_EN_TLS=y
+CONFIG_MLX5_ESWITCH=y
+# CONFIG_MLX5_FPGA_IPSEC is not set
+# CONFIG_MLX5_FPGA_TLS is not set
+CONFIG_MLX5_FPGA=y
+CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_IPSEC=y
+CONFIG_MLX5_MACSEC=y
+CONFIG_MLX5_MPFS=y
+CONFIG_MLX5_SF=y
+CONFIG_MLX5_SW_STEERING=y
+CONFIG_MLX5_TC_CT=y
+CONFIG_MLX5_TC_SAMPLE=y
+CONFIG_MLX5_TLS=y
+CONFIG_MLX5_VDPA_NET=m
+# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set
+CONFIG_MLX5_VDPA=y
+CONFIG_MLX5_VFIO_PCI=m
+CONFIG_MLX90614=m
+CONFIG_MLX90632=m
+# CONFIG_MLX90635 is not set
+# CONFIG_MLXBF_BOOTCTL is not set
+# CONFIG_MLXBF_GIGE is not set
+# CONFIG_MLXBF_TMFIFO is not set
+CONFIG_MLXFW=m
+CONFIG_MLXREG_HOTPLUG=m
+CONFIG_MLXREG_IO=m
+CONFIG_MLXREG_LC=m
+CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_CORE=m
+CONFIG_MLXSW_CORE_THERMAL=y
+CONFIG_MLXSW_I2C=m
+CONFIG_MLXSW_MINIMAL=m
+CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_SPECTRUM_DCB=y
+CONFIG_MLXSW_SPECTRUM=m
+CONFIG_MLX_WDT=m
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7455_SPI is not set
+CONFIG_MMA7660=m
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MMC35240 is not set
+CONFIG_MMC_ALCOR=m
+# CONFIG_MMC_ARMMMCI is not set
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CB710=m
+CONFIG_MMC_CQHCI=y
+# CONFIG_MMC_CRYPTO is not set
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_DW_BLUEFIELD is not set
+# CONFIG_MMC_DW_EXYNOS is not set
+# CONFIG_MMC_DW_HI3798CV200 is not set
+CONFIG_MMC_DW_HI3798MV200=m
+# CONFIG_MMC_DW_K3 is not set
+CONFIG_MMC_DW=m
+CONFIG_MMC_DW_PCI=m
+CONFIG_MMC_DW_PLTFM=m
+CONFIG_MMC_DW_STARFIVE=m
+# CONFIG_MMC_GOLDFISH is not set
+CONFIG_MMC_HSQ=m
+CONFIG_MMC_LITEX=y
+# CONFIG_MMC_MTK is not set
+CONFIG_MMC_REALTEK_PCI=m
+CONFIG_MMC_REALTEK_USB=m
+CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_SDHCI_ACPI=m
+# CONFIG_MMC_SDHCI_AM654 is not set
+CONFIG_MMC_SDHCI_CADENCE=m
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_SDHCI_MILBEAUT is not set
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
+CONFIG_MMC_SDHCI_OF_DWCMSHC=m
+# CONFIG_MMC_SDHCI_OF_ESDHC is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_XENON=m
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDRICOH_CS=m
+CONFIG_MMC_SPI=y
+# CONFIG_MMC_STM32_SDMMC is not set
+# CONFIG_MMC_TEST is not set
+CONFIG_MMC_TIFM_SD=m
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_USDHI6ROL0 is not set
+CONFIG_MMC_USHC=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MMC_VUB300=m
+CONFIG_MMC_WBSD=m
+CONFIG_MMC=y
+CONFIG_MMU=y
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_MODPROBE_PATH="/usr/sbin/modprobe"
+# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set
+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
+# CONFIG_MODULE_COMPRESS_GZIP is not set
+CONFIG_MODULE_COMPRESS_NONE=y
+# CONFIG_MODULE_COMPRESS_XZ is not set
+# CONFIG_MODULE_COMPRESS_ZSTD is not set
+# CONFIG_MODULE_DEBUG is not set
+# CONFIG_MODULE_FORCE_LOAD is not set
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODULE_SIG_ALL=y
+# CONFIG_MODULE_SIG_FORCE is not set
+CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
+# CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set
+CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
+# CONFIG_MODULE_SIG_SHA1 is not set
+# CONFIG_MODULE_SIG_SHA224 is not set
+# CONFIG_MODULE_SIG_SHA256 is not set
+# CONFIG_MODULE_SIG_SHA3_256 is not set
+# CONFIG_MODULE_SIG_SHA3_384 is not set
+# CONFIG_MODULE_SIG_SHA3_512 is not set
+# CONFIG_MODULE_SIG_SHA384 is not set
+CONFIG_MODULE_SIG_SHA512=y
+CONFIG_MODULE_SIG=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD_TAINT_TRACKING=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MOST is not set
+CONFIG_MOTORCOMM_PHY=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_ELAN_I2C_I2C=y
+CONFIG_MOUSE_ELAN_I2C=m
+CONFIG_MOUSE_ELAN_I2C_SMBUS=y
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y
+CONFIG_MOUSE_PS2_FOCALTECH=y
+# CONFIG_MOUSE_PS2 is not set
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_SERIAL is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
+CONFIG_MOUSE_VSXXXAA=m
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXTET is not set
+CONFIG_MPL115_I2C=m
+# CONFIG_MPL115_SPI is not set
+# CONFIG_MPL3115 is not set
+CONFIG_MPLS_IPTUNNEL=m
+CONFIG_MPLS_ROUTING=m
+# CONFIG_MPRLS0025PA is not set
+CONFIG_MPTCP_IPV6=y
+CONFIG_MPTCP_KUNIT_TEST=m
+CONFIG_MPTCP=y
+CONFIG_MPU3050_I2C=m
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
+CONFIG_MSA311=m
+# CONFIG_MS_BLOCK is not set
+CONFIG_MSDOS_FS=m
+CONFIG_MSDOS_PARTITION=y
+CONFIG_MSE102X=m
+# CONFIG_MSM_GCC_8939 is not set
+# CONFIG_MSM_GCC_8953 is not set
+# CONFIG_MSM_GPUCC_8998 is not set
+# CONFIG_MSM_MMCC_8998 is not set
+CONFIG_MSPRO_BLOCK=m
+CONFIG_MT7601U=m
+CONFIG_MT7603E=m
+CONFIG_MT7615E=m
+CONFIG_MT7663S=m
+CONFIG_MT7663U=m
+CONFIG_MT76x0E=m
+CONFIG_MT76x0U=m
+CONFIG_MT76x2E=m
+CONFIG_MT76x2U=m
+CONFIG_MT7915E=m
+CONFIG_MT7921E=m
+CONFIG_MT7921S=m
+CONFIG_MT7921U=m
+CONFIG_MT7925E=m
+CONFIG_MT7925U=m
+CONFIG_MT7996E=m
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_AR7_PARTS is not set
+CONFIG_MTD_BLKDEVS=m
+CONFIG_MTD_BLOCK2MTD=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI=m
+CONFIG_MTD_CFI_STAA=m
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_DOCG3 is not set
+# CONFIG_MTD_HYPERBUS is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_JEDECPROBE is not set
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD=m
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MCHP23K256 is not set
+CONFIG_MTD_MCHP48L640=m
+CONFIG_MTD_MTDRAM=m
+# CONFIG_MTD_NAND_ARASAN is not set
+# CONFIG_MTD_NAND_BRCMNAND is not set
+CONFIG_MTD_NAND_CADENCE=m
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_CS553X is not set
+# CONFIG_MTD_NAND_DENALI_DT is not set
+# CONFIG_MTD_NAND_DENALI_PCI is not set
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_ECC_MXIC=y
+# CONFIG_MTD_NAND_ECC_SW_BCH is not set
+# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+# CONFIG_MTD_NAND_GPIO is not set
+# CONFIG_MTD_NAND_HISI504 is not set
+# CONFIG_MTD_NAND_INTEL_LGM is not set
+# CONFIG_MTD_NAND_MESON is not set
+# CONFIG_MTD_NAND_MXC is not set
+# CONFIG_MTD_NAND_MXIC is not set
+CONFIG_MTD_NAND_NANDSIM=m
+# CONFIG_MTD_NAND_OMAP2 is not set
+# CONFIG_MTD_NAND_PL35X is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_NAND_QCOM is not set
+# CONFIG_MTD_NAND_RICOH is not set
+# CONFIG_MTD_NAND_ROCKCHIP is not set
+# CONFIG_MTD_NAND_SUNXI is not set
+CONFIG_MTD_OF_PARTS=m
+# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_PARTITIONED_MASTER is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+# CONFIG_MTD_PHYSMAP_GEMINI is not set
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_PHYSMAP_VERSATILE is not set
+# CONFIG_MTD_PLATRAM is not set
+# CONFIG_MTD_PMC551 is not set
+CONFIG_MTDRAM_ERASE_SIZE=128
+# CONFIG_MTD_RAM is not set
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTD_RAW_NAND=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_SHARPSL_PARTS is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_SPI_NAND is not set
+CONFIG_MTD_SPI_NOR=m
+# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set
+CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
+# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SWAP is not set
+# CONFIG_MTD_TESTS is not set
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_BLOCK is not set
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_FAULT_INJECTION is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_NVMEM=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTK_T7XX=m
+CONFIG_MULTIPLEXER=m
+CONFIG_MULTIUSER=y
+CONFIG_MUX_ADG792A=m
+# CONFIG_MUX_ADGS1408 is not set
+CONFIG_MUX_GPIO=m
+CONFIG_MUX_MMIO=m
+# CONFIG_MVIAC7 is not set
+CONFIG_MVMDIO=m
+CONFIG_MWAVE=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_MWL8K=m
+CONFIG_MXC4005=m
+CONFIG_MXC6255=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_MYRI10GE=m
+CONFIG_NAMESPACES=y
+CONFIG_NATIONAL_PHY=m
+CONFIG_NATSEMI=m
+# CONFIG_NAU7802 is not set
+# CONFIG_NBPFAXI_DMA is not set
+CONFIG_NCN26000_PHY=m
+CONFIG_NCSI_OEM_CMD_GET_MAC=y
+CONFIG_NCSI_OEM_CMD_KEEP_PHY=y
+# CONFIG_NDC_DIS_DYNAMIC_CACHING is not set
+CONFIG_NE2K_PCI=m
+# CONFIG_NET_9P_DEBUG is not set
+CONFIG_NET_9P_FD=m
+CONFIG_NET_9P=m
+CONFIG_NET_9P_RDMA=m
+CONFIG_NET_9P_VIRTIO=m
+CONFIG_NET_9P_XEN=m
+CONFIG_NET_ACT_BPF=m
+CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_CTINFO=m
+CONFIG_NET_ACT_CT=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_NET_ACT_GATE=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_MPLS=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_SAMPLE=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_SKBMOD=m
+CONFIG_NET_ACT_TUNNEL_KEY=m
+CONFIG_NET_ACT_VLAN=m
+CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_BPF=m
+CONFIG_NET_CLS_CGROUP=y
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_MATCHALL=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_U32=m
+CONFIG_NET_CLS=y
+CONFIG_NETCONSOLE_DYNAMIC=y
+# CONFIG_NETCONSOLE_EXTENDED_LOG is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NET_CORE=y
+CONFIG_NETDEV_ADDR_LIST_TEST=m
+CONFIG_NETDEVICES=y
+CONFIG_NET_DEVLINK=y
+# CONFIG_NET_DEV_REFCNT_TRACKER is not set
+CONFIG_NETDEVSIM=m
+CONFIG_NET_DROP_MONITOR=y
+# CONFIG_NET_DSA_AR9331 is not set
+CONFIG_NET_DSA_BCM_SF2=m
+CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK=m
+# CONFIG_NET_DSA_LANTIQ_GSWIP is not set
+CONFIG_NET_DSA_LOOP=m
+CONFIG_NET_DSA=m
+# CONFIG_NET_DSA_MICROCHIP_KSZ8795 is not set
+# CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C is not set
+CONFIG_NET_DSA_MICROCHIP_KSZ9477=m
+CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI=m
+# CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON is not set
+CONFIG_NET_DSA_MT7530=m
+CONFIG_NET_DSA_MT7530_MDIO=m
+CONFIG_NET_DSA_MT7530_MMIO=m
+# CONFIG_NET_DSA_MV88E6060 is not set
+CONFIG_NET_DSA_MV88E6XXX=m
+CONFIG_NET_DSA_MV88E6XXX_PTP=y
+CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y
+CONFIG_NET_DSA_QCA8K=m
+CONFIG_NET_DSA_REALTEK=m
+# CONFIG_NET_DSA_REALTEK_MDIO is not set
+CONFIG_NET_DSA_REALTEK_RTL8365MB=m
+CONFIG_NET_DSA_REALTEK_RTL8366RB=m
+# CONFIG_NET_DSA_REALTEK_SMI is not set
+# CONFIG_NET_DSA_SJA1105 is not set
+CONFIG_NET_DSA_SMSC_LAN9303_I2C=m
+CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m
+# CONFIG_NET_DSA_TAG_AR9331 is not set
+CONFIG_NET_DSA_TAG_GSWIP=m
+CONFIG_NET_DSA_TAG_HELLCREEK=m
+CONFIG_NET_DSA_TAG_KSZ=m
+CONFIG_NET_DSA_TAG_OCELOT_8021Q=m
+CONFIG_NET_DSA_TAG_OCELOT=m
+CONFIG_NET_DSA_TAG_RTL4_A=m
+CONFIG_NET_DSA_TAG_RTL8_4=m
+# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
+CONFIG_NET_DSA_TAG_SJA1105=m
+CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
+CONFIG_NET_DSA_TAG_XRS700X=m
+# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
+# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
+CONFIG_NET_DSA_XRS700X_I2C=m
+CONFIG_NET_DSA_XRS700X_MDIO=m
+CONFIG_NET_EMATCH_CANID=m
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_IPSET=m
+CONFIG_NET_EMATCH_IPT=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_FAILOVER=m
+CONFIG_NET_FC=y
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_NETFILTER_EGRESS=y
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_NETLINK_ACCT=m
+# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
+CONFIG_NETFILTER_NETLINK_HOOK=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_OSF=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+# CONFIG_NETFILTER_XTABLES_COMPAT is not set
+CONFIG_NETFILTER_XTABLES=y
+CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_MARK=m
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_NAT=m
+CONFIG_NETFILTER_XT_SET=m
+CONFIG_NETFILTER_XT_TARGET_AUDIT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_TARGET_CT=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_FOU_IP_TUNNELS=y
+CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
+CONFIG_NETFS_STATS=y
+CONFIG_NETFS_SUPPORT=m
+CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
+CONFIG_NET_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
+CONFIG_NET_IFE_SKBTCINDEX=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPVTI=m
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_NETKIT=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_NETLABEL=y
+CONFIG_NETLINK_DIAG=y
+CONFIG_NET_MPLS_GSO=m
+CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
+# CONFIG_NET_NS_REFCNT_TRACKER is not set
+CONFIG_NET_NS=y
+CONFIG_NET_PKTGEN=m
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_NETROM=m
+# CONFIG_NET_SB1000 is not set
+CONFIG_NET_SCH_CAKE=m
+CONFIG_NET_SCH_CBS=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_CODEL=m
+# CONFIG_NET_SCH_DEFAULT is not set
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_ETF=m
+CONFIG_NET_SCH_ETS=m
+CONFIG_NET_SCH_FQ_CODEL=y
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_FQ_PIE=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_HHF=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_PIE=m
+CONFIG_NET_SCH_PLUG=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+# CONFIG_NET_SCH_SKBPRIO is not set
+CONFIG_NET_SCH_TAPRIO=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_TC_SKB_EXT=y
+CONFIG_NET_TEAM=m
+CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
+CONFIG_NET_TEAM_MODE_BROADCAST=m
+CONFIG_NET_TEAM_MODE_LOADBALANCE=m
+CONFIG_NET_TEAM_MODE_RANDOM=m
+CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
+CONFIG_NET_TEST=m
+CONFIG_NET_TULIP=y
+CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_NET_VENDOR_8390=y
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_NET_VENDOR_ADI=y
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_NET_VENDOR_ALACRITECH is not set
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_NET_VENDOR_AQUANTIA=y
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ASIX=y
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_NET_VENDOR_CAVIUM is not set
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_NET_VENDOR_CORTINA is not set
+CONFIG_NET_VENDOR_DAVICOM=y
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_NET_VENDOR_ENGLEDER=y
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_FUJITSU is not set
+CONFIG_NET_VENDOR_FUNGIBLE=y
+CONFIG_NET_VENDOR_GOOGLE=y
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
+# CONFIG_NET_VENDOR_I825XX is not set
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_LITEX=y
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_NET_VENDOR_MICROSEMI is not set
+CONFIG_NET_VENDOR_MICROSOFT=y
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_NETERION=y
+CONFIG_NET_VENDOR_NETRONOME=y
+# CONFIG_NET_VENDOR_NI is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+CONFIG_NET_VENDOR_PENSANDO=y
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_NET_VENDOR_RDC=y
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_NET_VENDOR_RENESAS is not set
+CONFIG_NET_VENDOR_ROCKER=y
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_NET_VENDOR_SIS=y
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_NET_VENDOR_SOCIONEXT is not set
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+CONFIG_NET_VENDOR_TI=y
+CONFIG_NET_VENDOR_VERTEXCOM=y
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_NET_VENDOR_WANGXUN=y
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_NET_VENDOR_XILINX=y
+CONFIG_NET_VENDOR_XIRCOM=y
+CONFIG_NET_VRF=m
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_NETXEN_NIC=m
+CONFIG_NET=y
+CONFIG_NEW_LEDS=y
+CONFIG_NFC_DIGITAL=m
+# CONFIG_NFC_FDP is not set
+CONFIG_NFC_HCI=m
+CONFIG_NFC=m
+CONFIG_NFC_MICROREAD_I2C=m
+CONFIG_NFC_MICROREAD=m
+# CONFIG_NFC_MRVL_I2C is not set
+CONFIG_NFC_MRVL=m
+# CONFIG_NFC_MRVL_SPI is not set
+CONFIG_NFC_MRVL_USB=m
+CONFIG_NFC_NCI=m
+CONFIG_NFC_NCI_SPI=m
+# CONFIG_NFC_NCI_UART is not set
+CONFIG_NFC_NXP_NCI_I2C=m
+CONFIG_NFC_NXP_NCI=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_BRIDGE=m
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NFC_PN532_UART=m
+CONFIG_NFC_PN533_I2C=m
+CONFIG_NFC_PN533=m
+CONFIG_NFC_PN533_USB=m
+CONFIG_NFC_PN544_I2C=m
+CONFIG_NFC_PN544=m
+CONFIG_NFC_PORT100=m
+# CONFIG_NFC_S3FWRN5_I2C is not set
+# CONFIG_NFC_S3FWRN82_UART is not set
+CONFIG_NFC_SHDLC=y
+CONFIG_NFC_SIM=m
+CONFIG_NFC_ST21NFCA_I2C=m
+CONFIG_NFC_ST21NFCA=m
+# CONFIG_NFC_ST95HF is not set
+# CONFIG_NFC_ST_NCI_I2C is not set
+# CONFIG_NFC_ST_NCI_SPI is not set
+CONFIG_NF_CT_NETLINK=m
+# CONFIG_NF_CT_PROTO_DCCP is not set
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
+CONFIG_NFC_TRF7970A=m
+# CONFIG_NFC_VIRTUAL_NCI is not set
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NF_FLOW_TABLE_INET=m
+CONFIG_NF_FLOW_TABLE_IPV4=m
+CONFIG_NF_FLOW_TABLE_IPV6=m
+CONFIG_NF_FLOW_TABLE=m
+CONFIG_NF_FLOW_TABLE_PROCFS=y
+# CONFIG_NFIT_SECURITY_DEBUG is not set
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_LOG_SYSLOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+# CONFIG_NFP_APP_ABM_NIC is not set
+CONFIG_NFP_APP_FLOWER=y
+# CONFIG_NFP_DEBUG is not set
+CONFIG_NFP=m
+CONFIG_NFP_NET_IPSEC=y
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NFSD_BLOCKLAYOUT=y
+CONFIG_NFSD_FLEXFILELAYOUT=y
+CONFIG_NFS_DISABLE_UDP_SUPPORT=y
+# CONFIG_NFSD_LEGACY_CLIENT_TRACKING is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_PNFS=y
+CONFIG_NFSD_SCSILAYOUT=y
+# CONFIG_NFSD_V2 is not set
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V4_2_INTER_SSC=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFS_FSCACHE=y
+CONFIG_NFS_FS=m
+CONFIG_NF_SOCKET_IPV4=m
+CONFIG_NF_SOCKET_IPV6=m
+CONFIG_NFS_SWAP=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+# CONFIG_NFS_V2 is not set
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V3=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
+# CONFIG_NFS_V4_1_MIGRATION is not set
+CONFIG_NFS_V4_1=y
+# CONFIG_NFS_V4_2_READ_PLUS is not set
+CONFIG_NFS_V4_2=y
+CONFIG_NFS_V4=m
+CONFIG_NF_TABLES_ARP=y
+CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_NETDEV=y
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NFT_COMPAT=m
+CONFIG_NFT_CONNLIMIT=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FIB_INET=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
+CONFIG_NFT_FLOW_OFFLOAD=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_LIMIT=m
+# CONFIG_NFTL is not set
+CONFIG_NFT_LOG=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_NUMGEN=m
+CONFIG_NFT_OBJREF=m
+# CONFIG_NFT_OSF is not set
+CONFIG_NF_TPROXY_IPV4=m
+CONFIG_NF_TPROXY_IPV6=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_QUOTA=m
+CONFIG_NFT_REDIR=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_NETDEV=m
+CONFIG_NFT_SOCKET=m
+CONFIG_NFT_SYNPROXY=m
+CONFIG_NFT_TPROXY=m
+CONFIG_NFT_TUNNEL=m
+CONFIG_NFT_XFRM=m
+CONFIG_NGBE=m
+CONFIG_N_GSM=m
+CONFIG_N_HDLC=m
+# CONFIG_NI903X_WDT is not set
+CONFIG_NILFS2_FS=m
+CONFIG_NINTENDO_FF=y
+CONFIG_NITRO_ENCLAVES=m
+# CONFIG_NITRO_ENCLAVES_MISC_DEV_TEST is not set
+CONFIG_NIU=m
+# CONFIG_NL80211_TESTMODE is not set
+CONFIG_NLMON=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UCS2_UTILS=m
+CONFIG_NLS_UTF8=m
+CONFIG_NLS=y
+# CONFIG_NMI_CHECK_CPU is not set
+# CONFIG_NOA1305 is not set
+CONFIG_NODES_SHIFT=2
+CONFIG_NO_HZ_FULL=y
+# CONFIG_NO_HZ_IDLE is not set
+CONFIG_NO_HZ=y
+# CONFIG_NONPORTABLE is not set
+CONFIG_NOP_USB_XCEIV=m
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+# CONFIG_NOUVEAU_DEBUG_MMU is not set
+# CONFIG_NOUVEAU_DEBUG_PUSH is not set
+# CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set
+CONFIG_NOZOMI=m
+CONFIG_NR_CPUS=32
+CONFIG_NS83820=m
+CONFIG_NSM=m
+CONFIG_NTB_EPF=m
+# CONFIG_NTB is not set
+# CONFIG_NTFS3_64BIT_CLUSTER is not set
+CONFIG_NTFS3_FS=m
+CONFIG_NTFS3_FS_POSIX_ACL=y
+CONFIG_NTFS3_LZX_XPRESS=y
+# CONFIG_NTFS_FS is not set
+CONFIG_NULL_TTY=m
+CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
+CONFIG_NUMA_BALANCING=y
+CONFIG_NUMA=y
+# CONFIG_NVDIMM_SECURITY_TEST is not set
+# CONFIG_NVHE_EL2_DEBUG is not set
+CONFIG_NVIDIA_SHIELD_FF=y
+# CONFIG_NVIDIA_WMI_EC_BACKLIGHT is not set
+CONFIG_NVME_AUTH=m
+CONFIG_NVME_FC=m
+CONFIG_NVME_HOST_AUTH=y
+CONFIG_NVME_HWMON=y
+CONFIG_NVMEM_LAYOUT_ONIE_TLV=m
+CONFIG_NVMEM_LAYOUT_SL28_VPD=m
+# CONFIG_NVMEM_QCOM_QFPROM is not set
+# CONFIG_NVMEM_REBOOT_MODE is not set
+CONFIG_NVMEM_RMEM=m
+CONFIG_NVMEM_SYSFS=y
+CONFIG_NVMEM_U_BOOT_ENV=m
+CONFIG_NVME_MULTIPATH=y
+CONFIG_NVMEM=y
+CONFIG_NVME_RDMA=m
+CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
+CONFIG_NVME_TARGET_FCLOOP=m
+CONFIG_NVME_TARGET_FC=m
+CONFIG_NVME_TARGET_LOOP=m
+CONFIG_NVME_TARGET=m
+CONFIG_NVME_TARGET_PASSTHRU=y
+CONFIG_NVME_TARGET_RDMA=m
+CONFIG_NVME_TARGET_TCP=m
+CONFIG_NVME_TARGET_TCP_TLS=y
+CONFIG_NVME_TCP=m
+CONFIG_NVME_TCP_TLS=y
+# CONFIG_NVME_VERBOSE_ERRORS is not set
+# CONFIG_NVRAM is not set
+# CONFIG_NVSW_SN2201 is not set
+CONFIG_NXP_C45_TJA11XX_PHY=m
+CONFIG_NXP_CBTX_PHY=m
+# CONFIG_NXP_TJA11XX_PHY is not set
+# CONFIG_OCFS2_DEBUG_FS is not set
+# CONFIG_OCFS2_DEBUG_MASKLOG is not set
+CONFIG_OCFS2_FS=m
+CONFIG_OCFS2_FS_O2CB=m
+# CONFIG_OCFS2_FS_STATS is not set
+CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
+CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
+CONFIG_OCTEON_EP_VF=m
+CONFIG_OF_FPGA_REGION=m
+CONFIG_OF_GPIO=y
+CONFIG_OF_KUNIT_TEST=m
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_PMEM=m
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF=y
+# CONFIG_OMFS_FS is not set
+# CONFIG_OPAL_CORE is not set
+# CONFIG_OPEN_DICE is not set
+CONFIG_OPENVSWITCH_GENEVE=m
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPT3001=m
+CONFIG_OPT4001=m
+CONFIG_OPTPROBES=y
+CONFIG_ORANGEFS_FS=m
+CONFIG_OSF_PARTITION=y
+CONFIG_OSNOISE_TRACER=y
+CONFIG_OVERFLOW_KUNIT_TEST=m
+# CONFIG_OVERLAY_FS_DEBUG is not set
+# CONFIG_OVERLAY_FS_INDEX is not set
+CONFIG_OVERLAY_FS=m
+# CONFIG_OVERLAY_FS_METACOPY is not set
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
+# CONFIG_OVERLAY_FS_XINO_AUTO is not set
+CONFIG_PA12203001=m
+CONFIG_PAC1934=m
+CONFIG_PACKET_DIAG=y
+CONFIG_PACKET=y
+CONFIG_PACKING=y
+CONFIG_PAGE_EXTENSION=y
+CONFIG_PAGE_OWNER=y
+CONFIG_PAGE_POISONING=y
+CONFIG_PAGE_POOL_STATS=y
+CONFIG_PAGE_REPORTING=y
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_TABLE_CHECK is not set
+# CONFIG_PANEL_CHANGE_MESSAGE is not set
+# CONFIG_PANEL is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_PANTHERLORD_FF=y
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
+CONFIG_PARAVIRT=y
+CONFIG_PARMAN=m
+# CONFIG_PARPORT is not set
+# CONFIG_PARPORT_PC is not set
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_PATA_ACPI is not set
+CONFIG_PATA_ALI=m
+CONFIG_PATA_AMD=m
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+CONFIG_PATA_ATP867X=m
+CONFIG_PATA_CMD640_PCI=m
+CONFIG_PATA_CMD64X=m
+CONFIG_PATA_CS5520=m
+CONFIG_PATA_CS5530=m
+CONFIG_PATA_CS5535=m
+CONFIG_PATA_CS5536=m
+# CONFIG_PATA_CYPRESS is not set
+CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
+CONFIG_PATA_HPT3X2N=m
+# CONFIG_PATA_HPT3X3_DMA is not set
+CONFIG_PATA_HPT3X3=m
+CONFIG_PATA_IT8213=m
+CONFIG_PATA_IT821X=m
+CONFIG_PATA_JMICRON=m
+# CONFIG_PATA_LEGACY is not set
+CONFIG_PATA_MARVELL=m
+# CONFIG_PATA_MPIIX is not set
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NINJA32=m
+CONFIG_PATA_NS87410=m
+CONFIG_PATA_NS87415=m
+# CONFIG_PATA_OF_PLATFORM is not set
+# CONFIG_PATA_OLDPIIX is not set
+CONFIG_PATA_OPTIDMA=m
+CONFIG_PATA_OPTI=m
+# CONFIG_PATA_PARPORT is not set
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_PDC_OLD=m
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RDC is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SCH is not set
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_SIS=m
+# CONFIG_PATA_TOSHIBA is not set
+# CONFIG_PATA_TRIFLEX is not set
+CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
+# CONFIG_PC104 is not set
+# CONFIG_PC87413_WDT is not set
+# CONFIG_PCCARD is not set
+# CONFIG_PCH_GBE is not set
+# CONFIG_PCI_CNB20LE_QUIRK is not set
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_DYNAMIC_OF_NODES is not set
+CONFIG_PCIEAER_CXL=y
+CONFIG_PCIEAER_INJECT=m
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ALTERA is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEASPM=y
+CONFIG_PCIE_BUS_DEFAULT=y
+# CONFIG_PCIE_BUS_PEER2PEER is not set
+# CONFIG_PCIE_BUS_PERFORMANCE is not set
+# CONFIG_PCIE_BUS_SAFE is not set
+# CONFIG_PCIE_BUS_TUNE_OFF is not set
+CONFIG_PCIE_CADENCE_HOST=y
+CONFIG_PCIE_CADENCE_PLAT_EP=y
+# CONFIG_PCIE_CADENCE_PLAT_HOST is not set
+CONFIG_PCIE_DPC=y
+# CONFIG_PCIE_DW_PLAT_HOST is not set
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIE_EDR=y
+CONFIG_PCIE_FU740=y
+# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set
+CONFIG_PCIE_MICROCHIP_HOST=y
+# CONFIG_PCIE_MOBIVEIL is not set
+# CONFIG_PCI_ENDPOINT is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_PTM=y
+# CONFIG_PCIE_STARFIVE_HOST is not set
+CONFIG_PCIE_XILINX_CPM=y
+CONFIG_PCIE_XILINX=y
+# CONFIG_PCI_FTPCI100 is not set
+# CONFIG_PCI_GOOLPC is not set
+CONFIG_PCI_HOST_COMMON=y
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_PCI_HYPERV=m
+CONFIG_PCI_IOV=y
+CONFIG_PCI_J721E_HOST=y
+# CONFIG_PCI_MESON is not set
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_P2PDMA=y
+CONFIG_PCI_PASID=y
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_PCI_PF_STUB=m
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
+CONFIG_PCI_SW_SWITCHTEC=m
+CONFIG_PCI=y
+CONFIG_PCNET32=m
+CONFIG_PCP_BATCH_SCALE_MAX=5
+CONFIG_PCPU_DEV_REFCNT=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_PCS_XPCS=m
+# CONFIG_PDA_POWER is not set
+CONFIG_PDC_ADMA=m
+CONFIG_PDS_CORE=m
+CONFIG_PDS_VDPA=m
+CONFIG_PDS_VFIO_PCI=m
+# CONFIG_PECI is not set
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_PERCPU_TEST is not set
+CONFIG_PERF_EVENTS_AMD_UNCORE=y
+CONFIG_PERF_EVENTS=y
+CONFIG_PERSISTENT_KEYRINGS=y
+# CONFIG_PER_VMA_LOCK_STATS is not set
+CONFIG_PFCP=m
+# CONFIG_PHANTOM is not set
+# CONFIG_PHONET is not set
+CONFIG_PHY_CADENCE_DPHY=m
+CONFIG_PHY_CADENCE_DPHY_RX=m
+CONFIG_PHY_CADENCE_SALVO=m
+CONFIG_PHY_CADENCE_SIERRA=m
+CONFIG_PHY_CADENCE_TORRENT=m
+# CONFIG_PHY_CAN_TRANSCEIVER is not set
+# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_HI3670_PCIE is not set
+# CONFIG_PHY_HI3670_USB is not set
+# CONFIG_PHY_LAN966X_SERDES is not set
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_PHY_OCELOT_SERDES is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_QCOM_EDP is not set
+# CONFIG_PHY_QCOM_IPQ4019_USB is not set
+# CONFIG_PHY_QCOM_IPQ806X_USB is not set
+# CONFIG_PHY_QCOM_USB_HS_28NM is not set
+# CONFIG_PHY_QCOM_USB_HSIC is not set
+# CONFIG_PHY_QCOM_USB_HS is not set
+# CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 is not set
+# CONFIG_PHY_QCOM_USB_SS is not set
+CONFIG_PHY_RTK_RTD_USB2PHY=m
+CONFIG_PHY_RTK_RTD_USB3PHY=m
+# CONFIG_PHY_SAMSUNG_USB2 is not set
+# CONFIG_PHYS_RAM_BASE_FIXED is not set
+CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=m
+# CONFIG_PHY_STARFIVE_JH7110_DPHY_TX is not set
+CONFIG_PHY_STARFIVE_JH7110_PCIE=m
+CONFIG_PHY_STARFIVE_JH7110_USB=m
+# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
+CONFIG_PID_NS=y
+CONFIG_PINCONF=y
+# CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_AW9523 is not set
+CONFIG_PINCTRL_AXP209=m
+CONFIG_PINCTRL_CS42L43=m
+CONFIG_PINCTRL_CY8C95X0=m
+# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IPQ6018 is not set
+# CONFIG_PINCTRL_IPQ8074 is not set
+# CONFIG_PINCTRL_LPASS_LPI is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_MESON=y
+# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set
+# CONFIG_PINCTRL_MSM8226 is not set
+# CONFIG_PINCTRL_MSM8953 is not set
+# CONFIG_PINCTRL_MSM8976 is not set
+# CONFIG_PINCTRL_MSM is not set
+# CONFIG_PINCTRL_OCELOT is not set
+# CONFIG_PINCTRL_QCS404 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SC7180 is not set
+# CONFIG_PINCTRL_SC8180X is not set
+# CONFIG_PINCTRL_SDM660 is not set
+# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SM8150 is not set
+# CONFIG_PINCTRL_SM8250 is not set
+# CONFIG_PINCTRL_SM8350 is not set
+CONFIG_PINCTRL_SM8350_LPASS_LPI=m
+# CONFIG_PINCTRL_SM8450 is not set
+CONFIG_PINCTRL_STARFIVE_JH7100=y
+CONFIG_PINCTRL_STARFIVE_JH7110_AON=y
+CONFIG_PINCTRL_STARFIVE_JH7110_SYS=y
+CONFIG_PINCTRL_STARFIVE_JH7110=y
+CONFIG_PINCTRL_STARFIVE=y
+# CONFIG_PINCTRL_STMFX is not set
+CONFIG_PINCTRL_SUN20I_D1=y
+# CONFIG_PINCTRL_SX150X is not set
+CONFIG_PINCTRL_TPS6594=m
+CONFIG_PINCTRL=y
+# CONFIG_PING is not set
+CONFIG_PINMUX=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+CONFIG_PKCS8_PRIVATE_KEY_PARSER=m
+# CONFIG_PL320_MBOX is not set
+# CONFIG_PL330_DMA is not set
+# CONFIG_PLATFORM_MHU is not set
+# CONFIG_PLATFORM_SI4713 is not set
+CONFIG_PLAYSTATION_FF=y
+# CONFIG_PLFXLC is not set
+# CONFIG_PLIP is not set
+# CONFIG_PLX_DMA is not set
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_AUTOSLEEP is not set
+CONFIG_PMBUS=m
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_PMIC_OPREGION is not set
+CONFIG_PM_OPP=y
+CONFIG_PMS7003=m
+CONFIG_PM_STD_PARTITION=""
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_PM_TRACE_RTC=y
+CONFIG_PM_TRACE=y
+# CONFIG_PM_USERSPACE_AUTOSLEEP is not set
+# CONFIG_PMU_SYSFS is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM=y
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNP_DEBUG_MESSAGES=y
+# CONFIG_POLARFIRE_SOC_MAILBOX is not set
+CONFIG_PORTABLE=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_POWERCAP=y
+# CONFIG_POWER_RESET_BRCMKONA is not set
+CONFIG_POWER_RESET_GPIO_RESTART=y
+CONFIG_POWER_RESET_GPIO=y
+# CONFIG_POWER_RESET_LINKSTATION is not set
+# CONFIG_POWER_RESET_LTC2952 is not set
+# CONFIG_POWER_RESET_REGULATOR is not set
+CONFIG_POWER_RESET_RESTART=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_TPS65086=y
+# CONFIG_POWER_RESET_VEXPRESS is not set
+CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_POWER_SUPPLY=y
+# CONFIG_PPC_PROT_SAO_LPAR is not set
+CONFIG_PPC_QUEUED_SPINLOCKS=y
+CONFIG_PPC_RTAS_FILTER=y
+CONFIG_PPDEV=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+# CONFIG_PPPOE_HASH_BITS_1 is not set
+# CONFIG_PPPOE_HASH_BITS_2 is not set
+CONFIG_PPPOE_HASH_BITS_4=y
+# CONFIG_PPPOE_HASH_BITS_8 is not set
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPS_CLIENT_GPIO=m
+# CONFIG_PPS_CLIENT_KTIMER is not set
+CONFIG_PPS_CLIENT_LDISC=m
+# CONFIG_PPS_DEBUG is not set
+CONFIG_PPS=y
+CONFIG_PPTP=m
+CONFIG_PREEMPT_DYNAMIC=y
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_TRACER is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_PRESTERA=m
+CONFIG_PRESTERA_PCI=m
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_PRIME_NUMBERS=m
+CONFIG_PRINTER=m
+# CONFIG_PRINTK_CALLER is not set
+CONFIG_PRINTK_INDEX=y
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=12
+CONFIG_PRINTK_TIME=y
+CONFIG_PRINTK=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+# CONFIG_PRISM2_USB is not set
+CONFIG_PROBE_EVENTS_BTF_ARGS=y
+CONFIG_PROC_CHILDREN=y
+# CONFIG_PROCESSOR_SELECT is not set
+CONFIG_PROC_EVENTS=y
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_VMCORE_DEVICE_DUMP=y
+CONFIG_PROC_VMCORE=y
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+CONFIG_PROFILING=y
+CONFIG_PROVE_CXL_LOCKING=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_PROVE_NVDIMM_LOCKING is not set
+# CONFIG_PROVE_RAW_LOCK_NESTING is not set
+CONFIG_PSAMPLE=m
+# CONFIG_PSE_CONTROLLER is not set
+# CONFIG_PSI_DEFAULT_DISABLED is not set
+CONFIG_PSI=y
+# CONFIG_PSTORE_842_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_842_COMPRESS=y
+# CONFIG_PSTORE_BLK is not set
+CONFIG_PSTORE_COMPRESS=y
+# CONFIG_PSTORE_CONSOLE is not set
+CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240
+CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
+CONFIG_PSTORE_DEFLATE_COMPRESS=y
+# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_PSTORE_LZ4_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_LZ4_COMPRESS=m
+# CONFIG_PSTORE_LZ4HC_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_LZ4HC_COMPRESS=m
+# CONFIG_PSTORE_LZO_COMPRESS_DEFAULT is not set
+CONFIG_PSTORE_LZO_COMPRESS=m
+# CONFIG_PSTORE_PMSG is not set
+CONFIG_PSTORE_RAM=m
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_ZSTD_COMPRESS is not set
+# CONFIG_PTDUMP_DEBUGFS is not set
+CONFIG_PTE_MARKER_UFFD_WP=y
+CONFIG_PTP_1588_CLOCK_FC3W=m
+CONFIG_PTP_1588_CLOCK_IDT82P33=m
+CONFIG_PTP_1588_CLOCK_IDTCM=m
+# CONFIG_PTP_1588_CLOCK_INES is not set
+CONFIG_PTP_1588_CLOCK_KVM=m
+CONFIG_PTP_1588_CLOCK_MOCK=m
+# CONFIG_PTP_1588_CLOCK_OCP is not set
+CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_DFL_TOD=m
+# CONFIG_PVPANIC_MMIO is not set
+# CONFIG_PVPANIC_PCI is not set
+CONFIG_PVPANIC=y
+# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
+# CONFIG_PWM_CLK is not set
+# CONFIG_PWM_DEBUG is not set
+CONFIG_PWM_DWC=m
+# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
+CONFIG_PWM_HIBVT=m
+# CONFIG_PWM_MICROCHIP_CORE is not set
+CONFIG_PWM_OMAP_DMTIMER=m
+# CONFIG_PWM_PCA9685 is not set
+CONFIG_PWM_SIFIVE=y
+CONFIG_PWM_SYSFS=y
+# CONFIG_PWM_XILINX is not set
+CONFIG_PWM=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SD8787=m
+CONFIG_PWRSEQ_SIMPLE=m
+CONFIG_QAT_VFIO_PCI=m
+# CONFIG_QCA7000_SPI is not set
+# CONFIG_QCA7000_UART is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
+# CONFIG_QCOM_A7PLL is not set
+# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GPI_DMA is not set
+# CONFIG_QCOM_HIDMA is not set
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_IPCC is not set
+# CONFIG_QCOM_LMH is not set
+# CONFIG_QCOM_OCMEM is not set
+CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
+# CONFIG_QCOM_PMIC_GLINK is not set
+# CONFIG_QCOM_PMIC_PDCHARGER_ULOG is not set
+# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
+# CONFIG_QCOM_SCM is not set
+# CONFIG_QCOM_SPM is not set
+# CONFIG_QCS_TURING_404 is not set
+CONFIG_QEDE=m
+CONFIG_QEDF=m
+CONFIG_QEDI=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC_DCB=y
+CONFIG_QLCNIC_HWMON=y
+CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLGE=m
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+CONFIG_QRTR=m
+CONFIG_QRTR_MHI=m
+# CONFIG_QRTR_SMD is not set
+# CONFIG_QRTR_TUN is not set
+CONFIG_QSEMI_PHY=m
+CONFIG_QTNFMAC_PCIE=m
+# CONFIG_QUICC_ENGINE is not set
+CONFIG_QUOTACTL=y
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+CONFIG_QUOTA=y
+CONFIG_R6040=m
+CONFIG_R8169=m
+CONFIG_R8712U=m
+CONFIG_RADIO_ADAPTERS=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_SAA7706H=m
+CONFIG_RADIO_SHARK2=m
+CONFIG_RADIO_SHARK=m
+CONFIG_RADIO_SI470X=m
+CONFIG_RADIO_SI4713=m
+CONFIG_RADIO_TEA5764=m
+# CONFIG_RADIO_TEF6862 is not set
+CONFIG_RADIO_WL1273=m
+# CONFIG_RAID6_PQ_BENCHMARK is not set
+CONFIG_RAID_ATTRS=m
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_RANDOMIZE_BASE=y
+CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
+CONFIG_RANDOMIZE_KSTACK_OFFSET=y
+CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
+CONFIG_RANDOM_KMALLOC_CACHES=y
+CONFIG_RANDOM_TRUST_BOOTLOADER=y
+CONFIG_RANDOM_TRUST_CPU=y
+# CONFIG_RANDSTRUCT_FULL is not set
+CONFIG_RANDSTRUCT_NONE=y
+# CONFIG_RANDSTRUCT_PERFORMANCE is not set
+CONFIG_RAPIDIO_CHMAN=m
+CONFIG_RAPIDIO_CPS_GEN2=m
+CONFIG_RAPIDIO_CPS_XX=m
+# CONFIG_RAPIDIO_DEBUG is not set
+CONFIG_RAPIDIO_DISC_TIMEOUT=30
+CONFIG_RAPIDIO_DMA_ENGINE=y
+# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set
+CONFIG_RAPIDIO_ENUM_BASIC=m
+CONFIG_RAPIDIO=m
+CONFIG_RAPIDIO_MPORT_CDEV=m
+CONFIG_RAPIDIO_RXS_GEN3=m
+CONFIG_RAPIDIO_TSI568=m
+CONFIG_RAPIDIO_TSI57X=m
+CONFIG_RAPIDIO_TSI721=m
+CONFIG_RAS_FMPM=m
+CONFIG_RATIONAL_KUNIT_TEST=m
+# CONFIG_RAVE_SP_CORE is not set
+# CONFIG_RBTREE_TEST is not set
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_RC_CORE=y
+CONFIG_RC_DECODERS=y
+CONFIG_RC_DEVICES=y
+CONFIG_RC_LOOPBACK=m
+CONFIG_RC_MAP=m
+# CONFIG_RCU_CPU_STALL_CPUTIME is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_EQS_DEBUG is not set
+CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
+# CONFIG_RCU_EXPERT is not set
+# CONFIG_RCU_LAZY is not set
+# CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set
+CONFIG_RCU_NOCB_CPU=y
+# CONFIG_RCU_REF_SCALE_TEST is not set
+# CONFIG_RCU_SCALE_TEST is not set
+CONFIG_RCU_TORTURE_TEST=m
+# CONFIG_RCU_TRACE is not set
+CONFIG_RC_XBOX_DVD=m
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RD_LZ4=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_LZO=y
+CONFIG_RDMA_RXE=m
+CONFIG_RDMA_SIW=m
+# CONFIG_RDS_DEBUG is not set
+CONFIG_RDS=m
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
+CONFIG_RD_XZ=y
+CONFIG_RD_ZSTD=y
+# CONFIG_READABLE_ASM is not set
+CONFIG_READ_ONLY_THP_FOR_FS=y
+CONFIG_REALTEK_AUTOPM=y
+CONFIG_REALTEK_PHY=m
+# CONFIG_REED_SOLOMON_TEST is not set
+# CONFIG_REGMAP_BUILD is not set
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_KUNIT=m
+CONFIG_REGMAP_SPI=m
+CONFIG_REGMAP=y
+# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
+# CONFIG_REGULATOR_ACT8865 is not set
+# CONFIG_REGULATOR_AD5398 is not set
+CONFIG_REGULATOR_ANATOP=m
+CONFIG_REGULATOR_AW37503=m
+CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
+CONFIG_REGULATOR_DA9063=m
+# CONFIG_REGULATOR_DA9121 is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_DA9211 is not set
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_FAN53880 is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_ISL9305 is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_LTC3589 is not set
+# CONFIG_REGULATOR_LTC3676 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX20086 is not set
+CONFIG_REGULATOR_MAX20411=m
+CONFIG_REGULATOR_MAX5970=m
+CONFIG_REGULATOR_MAX597X=m
+CONFIG_REGULATOR_MAX77503=m
+CONFIG_REGULATOR_MAX77650=m
+# CONFIG_REGULATOR_MAX77826 is not set
+CONFIG_REGULATOR_MAX77857=m
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+CONFIG_REGULATOR_MAX8893=m
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MCP16502 is not set
+CONFIG_REGULATOR_MP5416=m
+# CONFIG_REGULATOR_MP8859 is not set
+CONFIG_REGULATOR_MP886X=m
+# CONFIG_REGULATOR_MPQ7920 is not set
+# CONFIG_REGULATOR_MT6311 is not set
+CONFIG_REGULATOR_MT6370=m
+# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
+# CONFIG_REGULATOR_PF8X00 is not set
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88080 is not set
+# CONFIG_REGULATOR_PV88090 is not set
+CONFIG_REGULATOR_PWM=y
+CONFIG_REGULATOR_RAA215300=m
+# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
+CONFIG_REGULATOR_RT4801=m
+CONFIG_REGULATOR_RT4803=m
+CONFIG_REGULATOR_RT4831=m
+CONFIG_REGULATOR_RT5120=m
+CONFIG_REGULATOR_RT5190A=m
+CONFIG_REGULATOR_RT5739=m
+CONFIG_REGULATOR_RT5759=m
+CONFIG_REGULATOR_RT6160=m
+CONFIG_REGULATOR_RT6190=m
+CONFIG_REGULATOR_RT6245=m
+CONFIG_REGULATOR_RTMV20=m
+CONFIG_REGULATOR_RTQ2134=m
+CONFIG_REGULATOR_RTQ2208=m
+CONFIG_REGULATOR_RTQ6752=m
+# CONFIG_REGULATOR_SLG51000 is not set
+# CONFIG_REGULATOR_SUN20I is not set
+CONFIG_REGULATOR_SY7636A=m
+# CONFIG_REGULATOR_SY8106A is not set
+# CONFIG_REGULATOR_SY8824X is not set
+# CONFIG_REGULATOR_SY8827N is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+CONFIG_REGULATOR_TPS6286X=m
+# CONFIG_REGULATOR_TPS6287X is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_TPS65132 is not set
+# CONFIG_REGULATOR_TPS6524X is not set
+CONFIG_REGULATOR_TPS6594=m
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+CONFIG_REGULATOR_VCTRL=m
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
+CONFIG_REGULATOR_WM8994=m
+CONFIG_REGULATOR=y
+# CONFIG_REISERFS_CHECK is not set
+CONFIG_REISERFS_FS=m
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_PROC_INFO=y
+CONFIG_RELAY=y
+# CONFIG_RELOCATABLE_TEST is not set
+CONFIG_RELOCATABLE=y
+# CONFIG_REMOTEPROC_CDEV is not set
+CONFIG_REMOTEPROC=y
+CONFIG_REMOTE_TARGET=m
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_RESET_ATTACK_MITIGATION is not set
+CONFIG_RESET_GPIO=m
+# CONFIG_RESET_INTEL_GW is not set
+CONFIG_RESET_POLARFIRE_SOC=y
+CONFIG_RESET_SIMPLE=y
+CONFIG_RESET_STARFIVE_JH7100=y
+CONFIG_RESET_STARFIVE_JH7110=y
+CONFIG_RESET_STARFIVE_JH71X0=y
+# CONFIG_RESET_TI_SYSCON is not set
+CONFIG_RESET_TI_TPS380X=m
+CONFIG_RESOURCE_KUNIT_TEST=m
+# CONFIG_RFD77402 is not set
+# CONFIG_RFD_FTL is not set
+CONFIG_RFKILL_GPIO=m
+CONFIG_RFKILL_INPUT=y
+CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
+# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
+CONFIG_RICHTEK_RTQ6056=m
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
+CONFIG_RIONET=m
+CONFIG_RIONET_RX_SIZE=128
+CONFIG_RIONET_TX_SIZE=128
+CONFIG_RISCV_ALTERNATIVE_EARLY=y
+CONFIG_RISCV_ALTERNATIVE=y
+CONFIG_RISCV_BASE_PMU=y
+# CONFIG_RISCV_BOOT_SPINWAIT is not set
+# CONFIG_RISCV_EFFICIENT_UNALIGNED_ACCESS is not set
+# CONFIG_RISCV_EMULATED_UNALIGNED_ACCESS is not set
+CONFIG_RISCV_INTC=y
+CONFIG_RISCV_ISA_C=y
+CONFIG_RISCV_ISA_FALLBACK=y
+CONFIG_RISCV_ISA_SVNAPOT=y
+CONFIG_RISCV_ISA_SVPBMT=y
+CONFIG_RISCV_ISA_V_DEFAULT_ENABLE=y
+CONFIG_RISCV_ISA_VENDOR_EXT_ANDES=y
+CONFIG_RISCV_ISA_V_PREEMPTIVE=y
+CONFIG_RISCV_ISA_V_UCOPY_THRESHOLD=768
+CONFIG_RISCV_ISA_V=y
+CONFIG_RISCV_ISA_ZAWRS=y
+CONFIG_RISCV_ISA_ZBA=y
+CONFIG_RISCV_ISA_ZBB=y
+CONFIG_RISCV_ISA_ZBC=y
+CONFIG_RISCV_ISA_ZICBOM=y
+CONFIG_RISCV_ISA_ZICBOZ=y
+CONFIG_RISCV_MISALIGNED=y
+# CONFIG_RISCV_MODULE_LINKING_KUNIT is not set
+CONFIG_RISCV_PLIC=y
+CONFIG_RISCV_PMU_LEGACY=y
+CONFIG_RISCV_PMU_SBI=y
+CONFIG_RISCV_PMU=y
+CONFIG_RISCV_PROBE_UNALIGNED_ACCESS=y
+CONFIG_RISCV_SBI_CPUIDLE=y
+# CONFIG_RISCV_SBI_V01 is not set
+CONFIG_RISCV_SBI=y
+CONFIG_RISCV_TIMER=y
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_F03=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
+CONFIG_RMI4_F34=y
+CONFIG_RMI4_F3A=y
+# CONFIG_RMI4_F54 is not set
+CONFIG_RMI4_F55=y
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SMB=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMNET=m
+# CONFIG_ROCKCHIP_PHY is not set
+CONFIG_ROCKER=m
+# CONFIG_ROHM_BM1390 is not set
+# CONFIG_ROHM_BU27008 is not set
+CONFIG_ROHM_BU27034=m
+CONFIG_ROMFS_BACKED_BY_BLOCK=y
+# CONFIG_ROMFS_BACKED_BY_BOTH is not set
+# CONFIG_ROMFS_BACKED_BY_MTD is not set
+CONFIG_ROMFS_FS=m
+CONFIG_ROSE=m
+CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y
+CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y
+CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA=y
+# CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_DES is not set
+CONFIG_RPCSEC_GSS_KRB5_KUNIT_TEST=m
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPMSG_CHAR=m
+CONFIG_RPMSG_CTRL=m
+CONFIG_RPMSG=m
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+CONFIG_RPMSG_TTY=m
+CONFIG_RPMSG_VIRTIO=m
+CONFIG_RPMSG_WWAN_CTRL=m
+CONFIG_RPR0521=m
+CONFIG_RPS=y
+CONFIG_RSEQ=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_COEX=y
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT2500USB=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT3290=y
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RT2X00_LIB_DEBUGFS=y
+CONFIG_RT2X00=m
+CONFIG_RT61PCI=m
+CONFIG_RT73USB=m
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_DEBUG is not set
+# CONFIG_RTC_DRV_ABB5ZES3 is not set
+CONFIG_RTC_DRV_ABEOZ9=m
+CONFIG_RTC_DRV_ABX80X=m
+CONFIG_RTC_DRV_BQ32K=m
+# CONFIG_RTC_DRV_CADENCE is not set
+CONFIG_RTC_DRV_CMOS=y
+CONFIG_RTC_DRV_DA9063=m
+CONFIG_RTC_DRV_DS1286=m
+# CONFIG_RTC_DRV_DS1302 is not set
+CONFIG_RTC_DRV_DS1305=m
+# CONFIG_RTC_DRV_DS1307_CENTURY is not set
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1343=m
+CONFIG_RTC_DRV_DS1347=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
+CONFIG_RTC_DRV_DS1390=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_DS1685_FAMILY=m
+CONFIG_RTC_DRV_DS1685=y
+# CONFIG_RTC_DRV_DS1689 is not set
+# CONFIG_RTC_DRV_DS17285 is not set
+CONFIG_RTC_DRV_DS1742=m
+# CONFIG_RTC_DRV_DS17485 is not set
+# CONFIG_RTC_DRV_DS17885 is not set
+CONFIG_RTC_DRV_DS2404=m
+# CONFIG_RTC_DRV_DS3232_HWMON is not set
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_EFI=m
+CONFIG_RTC_DRV_EM3027=m
+CONFIG_RTC_DRV_FM3130=m
+# CONFIG_RTC_DRV_FTRTC010 is not set
+CONFIG_RTC_DRV_GOLDFISH=y
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
+# CONFIG_RTC_DRV_HYM8563 is not set
+CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_ISL12026=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_M41T93=m
+CONFIG_RTC_DRV_M41T94=m
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_MAX31335=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_MAX6902=m
+CONFIG_RTC_DRV_MAX6916=m
+CONFIG_RTC_DRV_MAX77686=m
+CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_NCT3018Y=m
+CONFIG_RTC_DRV_PCF2123=m
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8523=m
+# CONFIG_RTC_DRV_PCF85363 is not set
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+# CONFIG_RTC_DRV_PL030 is not set
+# CONFIG_RTC_DRV_PL031 is not set
+# CONFIG_RTC_DRV_PM8XXX is not set
+# CONFIG_RTC_DRV_POLARFIRE_SOC is not set
+CONFIG_RTC_DRV_R7301=m
+CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_RS5C348=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_RV3028=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
+CONFIG_RTC_DRV_RV3032=m
+# CONFIG_RTC_DRV_RV8803 is not set
+CONFIG_RTC_DRV_RX4581=m
+# CONFIG_RTC_DRV_RX6110 is not set
+CONFIG_RTC_DRV_RX8010=m
+CONFIG_RTC_DRV_RX8025=m
+# CONFIG_RTC_DRV_RX8111 is not set
+CONFIG_RTC_DRV_RX8581=m
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_SA1100 is not set
+CONFIG_RTC_DRV_SD3078=m
+# CONFIG_RTC_DRV_SNVS is not set
+CONFIG_RTC_DRV_STK17TA8=m
+# CONFIG_RTC_DRV_TEST is not set
+CONFIG_RTC_DRV_TPS6594=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_X1205=m
+# CONFIG_RTC_DRV_ZYNQMP is not set
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_HCTOSYS=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_LIB_KUNIT_TEST=m
+CONFIG_RTC_NVMEM=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192CE=m
+# CONFIG_RTL8192CU is not set
+CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8192E=m
+CONFIG_RTL8192SE=m
+# CONFIG_RTL8192U is not set
+CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
+CONFIG_RTL8723BS=m
+CONFIG_RTL8821AE=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_RTL_CARDS=m
+CONFIG_RTLLIB_CRYPTO_CCMP=m
+CONFIG_RTLLIB_CRYPTO_TKIP=m
+CONFIG_RTLLIB_CRYPTO_WEP=m
+CONFIG_RTLLIB=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTS5208 is not set
+CONFIG_RTW88_8723CS=m
+CONFIG_RTW88_8723DE=m
+CONFIG_RTW88_8723DS=m
+CONFIG_RTW88_8723DU=m
+CONFIG_RTW88_8821CE=m
+CONFIG_RTW88_8821CS=m
+CONFIG_RTW88_8821CU=m
+CONFIG_RTW88_8822BE=m
+CONFIG_RTW88_8822BS=m
+CONFIG_RTW88_8822BU=m
+CONFIG_RTW88_8822CE=m
+CONFIG_RTW88_8822CS=m
+CONFIG_RTW88_8822CU=m
+# CONFIG_RTW88_DEBUGFS is not set
+# CONFIG_RTW88_DEBUG is not set
+CONFIG_RTW88=m
+CONFIG_RTW89_8851BE=m
+CONFIG_RTW89_8852AE=m
+CONFIG_RTW89_8852BE=m
+CONFIG_RTW89_8852CE=m
+CONFIG_RTW89_8922AE=m
+# CONFIG_RTW89_DEBUGFS is not set
+# CONFIG_RTW89_DEBUGMSG is not set
+CONFIG_RTW89=m
+# CONFIG_RUNTIME_KERNEL_TESTING_MENU is not set
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+# CONFIG_RUST is not set
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RV_MON_WWNR=y
+CONFIG_RV_REACTORS=y
+CONFIG_RV_REACT_PANIC=y
+CONFIG_RV_REACT_PRINTK=y
+CONFIG_RV=y
+CONFIG_RXKAD=y
+# CONFIG_RXPERF is not set
+CONFIG_S2IO=m
+# CONFIG_S390_KPROBES_SANITY_TEST is not set
+# CONFIG_S390_MODULES_SANITY_TEST is not set
+# CONFIG_SAMPLE_FPROBE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_SATA_ACARD_AHCI=m
+CONFIG_SATA_AHCI_PLATFORM=m
+CONFIG_SATA_AHCI=y
+# CONFIG_SATA_DWC is not set
+# CONFIG_SATA_HIGHBANK is not set
+CONFIG_SATA_INIC162X=m
+CONFIG_SATA_MOBILE_LPM_POLICY=3
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_SATA_PMP=y
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_SIL24=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_SVW=m
+CONFIG_SATA_SX4=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+# CONFIG_SATA_ZPODD is not set
+# CONFIG_SBC7240_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+CONFIG_SBP_TARGET=m
+# CONFIG_SC1200_WDT is not set
+CONFIG_SC92031=m
+# CONFIG_SCA3000 is not set
+CONFIG_SCA3300=m
+CONFIG_SCD30_CORE=m
+CONFIG_SCD30_I2C=m
+CONFIG_SCD30_SERIAL=m
+# CONFIG_SCD4X is not set
+# CONFIG_SCF_TORTURE_TEST is not set
+CONFIG_SCHED_AUTOGROUP=y
+CONFIG_SCHED_CLUSTER=y
+CONFIG_SCHED_CORE=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHED_MC_PRIO is not set
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_SCHED_STACK_END_CHECK=y
+CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_THERMAL_PRESSURE=y
+CONFIG_SCHED_TRACER=y
+CONFIG_SC_LPASS_CORECC_7180=m
+# CONFIG_SCR24X is not set
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_ACARD=m
+# CONFIG_SCSI_ADVANSYS is not set
+CONFIG_SCSI_AIC79XX=m
+CONFIG_SCSI_AIC7XXX=m
+# CONFIG_SCSI_AIC94XX is not set
+CONFIG_SCSI_AM53C974=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_SCSI_BNX2X_FCOE=m
+CONFIG_SCSI_BUSLOGIC=m
+CONFIG_SCSI_CHELSIO_FCOE=m
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_DH_ALUA=m
+CONFIG_SCSI_DH_EMC=m
+CONFIG_SCSI_DH_HP_SW=m
+CONFIG_SCSI_DH_RDAC=m
+CONFIG_SCSI_DH=y
+CONFIG_SCSI_DMX3191D=m
+# CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_EFCT=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_ESAS2R=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FDOMAIN_PCI=m
+CONFIG_SCSI_FLASHPOINT=y
+# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set
+# CONFIG_SCSI_HISI_SAS is not set
+CONFIG_SCSI_HPSA=m
+CONFIG_SCSI_HPTIOP=m
+# CONFIG_SCSI_IMM is not set
+CONFIG_SCSI_INIA100=m
+CONFIG_SCSI_INITIO=m
+CONFIG_SCSI_IPR_DUMP=y
+CONFIG_SCSI_IPR=m
+CONFIG_SCSI_IPR_TRACE=y
+CONFIG_SCSI_IPS=m
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_LIB_KUNIT_TEST=m
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_MPI3MR=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS=m
+CONFIG_SCSI_MVSAS_TASKLET=y
+CONFIG_SCSI_MVUMI=m
+CONFIG_SCSI_MYRB=m
+CONFIG_SCSI_MYRS=m
+# CONFIG_SCSI_NSP32 is not set
+CONFIG_SCSI_PM8001=m
+CONFIG_SCSI_PMCRAID=m
+# CONFIG_SCSI_PPA is not set
+CONFIG_SCSI_PROC_FS=y
+CONFIG_SCSI_PROTO_TEST=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_SMARTPQI=m
+# CONFIG_SCSI_SNIC_DEBUG_FS is not set
+CONFIG_SCSI_SNIC=m
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_STEX=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+CONFIG_SCSI_SYM53C8XX_MMIO=y
+CONFIG_SCSI_UFS_BSG=y
+CONFIG_SCSI_UFS_CDNS_PLATFORM=m
+# CONFIG_SCSI_UFS_DWC_TC_PCI is not set
+# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
+# CONFIG_SCSI_UFS_FAULT_INJECTION is not set
+# CONFIG_SCSI_UFSHCD is not set
+CONFIG_SCSI_UFS_HPB=y
+CONFIG_SCSI_UFS_HWMON=y
+CONFIG_SCSI_VIRTIO=m
+CONFIG_SCSI_WD719X=m
+CONFIG_SCSI=y
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SD_ADC_MODULATOR is not set
+CONFIG_SDIO_UART=m
+# CONFIG_SDX_GCC_55 is not set
+# CONFIG_SECCOMP_CACHE_DEBUG is not set
+CONFIG_SECCOMP=y
+# CONFIG_SECONDARY_TRUSTED_KEYRING_SIGNED_BY_BUILTIN is not set
+CONFIG_SECONDARY_TRUSTED_KEYRING=y
+CONFIG_SECRETMEM=y
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+# CONFIG_SECURITY_APPARMOR is not set
+CONFIG_SECURITY_DMESG_RESTRICT=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_INFINIBAND=y
+CONFIG_SECURITY_LANDLOCK=y
+# CONFIG_SECURITY_LOADPIN is not set
+# CONFIG_SECURITY_LOCKDOWN_LSM_EARLY is not set
+CONFIG_SECURITY_LOCKDOWN_LSM=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_PATH=y
+# CONFIG_SECURITY_SAFESETID is not set
+CONFIG_SECURITY_SELINUX_AVC_STATS=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
+# CONFIG_SECURITY_SELINUX_DEBUG is not set
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+# CONFIG_SECURITY_SELINUX_DISABLE is not set
+CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256
+CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9
+CONFIG_SECURITY_SELINUX=y
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITY_YAMA=y
+# CONFIG_SEG_LED_GPIO is not set
+# CONFIG_SENSEAIR_SUNRISE_CO2 is not set
+# CONFIG_SENSIRION_SGP30 is not set
+# CONFIG_SENSIRION_SGP40 is not set
+# CONFIG_SENSORS_ACBEL_FSG032 is not set
+CONFIG_SENSORS_ACPI_POWER=m
+CONFIG_SENSORS_AD7314=m
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+CONFIG_SENSORS_ADC128D818=m
+CONFIG_SENSORS_ADCXX=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+# CONFIG_SENSORS_ADM1177 is not set
+CONFIG_SENSORS_ADM1266=m
+CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADP1050=m
+CONFIG_SENSORS_ADS7828=m
+CONFIG_SENSORS_ADS7871=m
+CONFIG_SENSORS_ADT7310=m
+CONFIG_SENSORS_ADT7410=m
+CONFIG_SENSORS_ADT7411=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7475=m
+# CONFIG_SENSORS_AHT10 is not set
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_APDS990X=m
+CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m
+# CONFIG_SENSORS_AS370 is not set
+CONFIG_SENSORS_ASC7621=m
+CONFIG_SENSORS_ASUS_ROG_RYUJIN=m
+# CONFIG_SENSORS_ASUS_WMI_EC is not set
+# CONFIG_SENSORS_ASUS_WMI is not set
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_AXI_FAN_CONTROL=m
+CONFIG_SENSORS_BEL_PFE=m
+CONFIG_SENSORS_BH1770=m
+CONFIG_SENSORS_BPA_RS600=m
+CONFIG_SENSORS_CHIPCAP2=m
+CONFIG_SENSORS_CORSAIR_CPRO=m
+CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
+CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_DPS920AB=m
+CONFIG_SENSORS_DRIVETEMP=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_DS620=m
+CONFIG_SENSORS_EMC1403=m
+# CONFIG_SENSORS_EMC2103 is not set
+CONFIG_SENSORS_EMC2305=m
+CONFIG_SENSORS_EMC6W201=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSP_3Y=m
+CONFIG_SENSORS_FTSTEUTATES=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
+CONFIG_SENSORS_GIGABYTE_WATERFORCE=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
+# CONFIG_SENSORS_HMC5843_SPI is not set
+CONFIG_SENSORS_HP_WMI=m
+CONFIG_SENSORS_HS3001=m
+# CONFIG_SENSORS_I5K_AMB is not set
+CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
+CONFIG_SENSORS_IBMPEX=m
+# CONFIG_SENSORS_IIO_HWMON is not set
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA238=m
+CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+# CONFIG_SENSORS_INSPUR_IPSPS is not set
+CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m
+# 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_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_SENSORS_ISL68137 is not set
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_JC42=m
+CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LIS3_I2C=m
+CONFIG_SENSORS_LIS3LV02D=m
+# CONFIG_SENSORS_LIS3_SPI is not set
+CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LM25066_REGULATOR=y
+CONFIG_SENSORS_LM63=m
+CONFIG_SENSORS_LM70=m
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LM95234=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
+CONFIG_SENSORS_LT7182S=m
+CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2947_I2C=m
+CONFIG_SENSORS_LTC2947_SPI=m
+CONFIG_SENSORS_LTC2978=m
+# CONFIG_SENSORS_LTC2978_REGULATOR is not set
+CONFIG_SENSORS_LTC2990=m
+CONFIG_SENSORS_LTC2991=m
+# CONFIG_SENSORS_LTC2992 is not set
+CONFIG_SENSORS_LTC3815=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4222=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4260=m
+CONFIG_SENSORS_LTC4261=m
+# CONFIG_SENSORS_LTC4282 is not set
+# CONFIG_SENSORS_LTC4286 is not set
+CONFIG_SENSORS_MAX1111=m
+# CONFIG_SENSORS_MAX127 is not set
+# CONFIG_SENSORS_MAX15301 is not set
+CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+# CONFIG_SENSORS_MAX16601 is not set
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+# CONFIG_SENSORS_MAX20730 is not set
+CONFIG_SENSORS_MAX20751=m
+CONFIG_SENSORS_MAX31722=m
+# CONFIG_SENSORS_MAX31730 is not set
+CONFIG_SENSORS_MAX31760=m
+# CONFIG_SENSORS_MAX31785 is not set
+CONFIG_SENSORS_MAX31790=m
+CONFIG_SENSORS_MAX34440=m
+CONFIG_SENSORS_MAX6620=m
+# CONFIG_SENSORS_MAX6621 is not set
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_MC34VR500=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_MLXREG_FAN=m
+# CONFIG_SENSORS_MP2856 is not set
+CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
+CONFIG_SENSORS_MP2975=m
+CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
+CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
+# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
+CONFIG_SENSORS_MPQ7932=m
+CONFIG_SENSORS_MPQ7932_REGULATOR=y
+CONFIG_SENSORS_MPQ8785=m
+CONFIG_SENSORS_MR75203=m
+CONFIG_SENSORS_NCT6683=m
+CONFIG_SENSORS_NCT6775_I2C=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
+CONFIG_SENSORS_NCT7904=m
+CONFIG_SENSORS_NPCM7XX=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_NZXT_KRAKEN2=m
+CONFIG_SENSORS_NZXT_KRAKEN3=m
+CONFIG_SENSORS_NZXT_SMART2=m
+# CONFIG_SENSORS_OCC_P8_I2C is not set
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_PIM4328=m
+CONFIG_SENSORS_PLI1209BC=m
+CONFIG_SENSORS_PLI1209BC_REGULATOR=y
+CONFIG_SENSORS_PM6764TR=m
+CONFIG_SENSORS_PMBUS=m
+CONFIG_SENSORS_POWERZ=m
+CONFIG_SENSORS_POWR1220=m
+CONFIG_SENSORS_PT5161L=m
+CONFIG_SENSORS_PWM_FAN=m
+# CONFIG_SENSORS_PXE1610 is not set
+CONFIG_SENSORS_Q54SJ108A2=m
+CONFIG_SENSORS_RM3100_I2C=m
+CONFIG_SENSORS_RM3100_SPI=m
+# CONFIG_SENSORS_SBRMI is not set
+CONFIG_SENSORS_SBTSI=m
+CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
+CONFIG_SENSORS_SFCTEMP=y
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHT3x=m
+# CONFIG_SENSORS_SHT4x is not set
+CONFIG_SENSORS_SHTC1=m
+CONFIG_SENSORS_SIS5595=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
+# CONFIG_SENSORS_STPDDC60 is not set
+# CONFIG_SENSORS_STTS751 is not set
+CONFIG_SENSORS_SURFACE_FAN=m
+CONFIG_SENSORS_SY7636A=m
+CONFIG_SENSORS_TC654=m
+CONFIG_SENSORS_TC74=m
+CONFIG_SENSORS_TDA38640=m
+CONFIG_SENSORS_TDA38640_REGULATOR=y
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
+CONFIG_SENSORS_TMP108=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_TMP464=m
+CONFIG_SENSORS_TMP513=m
+# CONFIG_SENSORS_TPS23861 is not set
+CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
+CONFIG_SENSORS_TPS546D24=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_SENSORS_TSL2563 is not set
+CONFIG_SENSORS_UCD9000=m
+CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83773G=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+# CONFIG_SENSORS_W83795_FANCTRL is not set
+CONFIG_SENSORS_W83795=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_XDP710=m
+# CONFIG_SENSORS_XDPE122 is not set
+CONFIG_SENSORS_XDPE152=m
+# CONFIG_SENSORS_XGENE is not set
+CONFIG_SENSORS_ZL6100=m
+# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_DFL=m
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_8250_EXAR=m
+CONFIG_SERIAL_8250_EXTENDED=y
+# CONFIG_SERIAL_8250_FINTEK is not set
+CONFIG_SERIAL_8250_MANY_PORTS=y
+# CONFIG_SERIAL_8250_MID is not set
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_PCI1XXXX=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PERICOM=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_RT288X=y
+CONFIG_SERIAL_8250_RUNTIME_UARTS=32
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_AMBA_PL010 is not set
+# CONFIG_SERIAL_AMBA_PL011 is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+# CONFIG_SERIAL_BCM63XX is not set
+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+# CONFIG_SERIAL_EARLYCON_RISCV_SBI is not set
+# CONFIG_SERIAL_EARLYCON_SEMIHOST is not set
+# CONFIG_SERIAL_FSL_LINFLEXUART is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_IMX_EARLYCON is not set
+CONFIG_SERIAL_JSM=m
+# CONFIG_SERIAL_KGDB_NMI is not set
+# CONFIG_SERIAL_LANTIQ is not set
+CONFIG_SERIAL_LITEUART_CONSOLE=y
+CONFIG_SERIAL_LITEUART_MAX_PORTS=1
+CONFIG_SERIAL_LITEUART=y
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_SERIAL_PCH_UART is not set
+# CONFIG_SERIAL_RP2 is not set
+CONFIG_SERIAL_SC16IS7XX_I2C=m
+CONFIG_SERIAL_SC16IS7XX=m
+CONFIG_SERIAL_SC16IS7XX_SPI=m
+# CONFIG_SERIAL_SCCNXP is not set
+CONFIG_SERIAL_SH_SCI=y
+CONFIG_SERIAL_SIFIVE_CONSOLE=y
+CONFIG_SERIAL_SIFIVE=y
+# CONFIG_SERIAL_SPRD is not set
+# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_UARTLITE is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+CONFIG_SERIO_ALTERA_PS2=m
+# CONFIG_SERIO_AMBAKMI is not set
+# CONFIG_SERIO_APBPS2 is not set
+CONFIG_SERIO_ARC_PS2=m
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
+# CONFIG_SERIO_I8042 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_OLPC_APSP is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO=y
+CONFIG_SFC_FALCON=m
+CONFIG_SFC_FALCON_MTD=y
+# CONFIG_SFC is not set
+CONFIG_SF_PDMA=y
+CONFIG_SFP=m
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_SHADOW_CALL_STACK is not set
+CONFIG_SHMEM=y
+# CONFIG_SHRINKER_DEBUG is not set
+CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
+# CONFIG_SI1133 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
+# CONFIG_SIEMENS_SIMATIC_IPC is not set
+CONFIG_SIFIVE_CCACHE=y
+CONFIG_SIFIVE_PLIC=y
+CONFIG_SIGNALFD=y
+CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+# CONFIG_SIOX is not set
+CONFIG_SIPHASH_KUNIT_TEST=m
+CONFIG_SIS190=m
+CONFIG_SIS900=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
+CONFIG_SKGE=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
+CONFIG_SLAB_FREELIST_HARDENED=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_MERGE_DEFAULT is not set
+# CONFIG_SLIMBUS is not set
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP=m
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_SLIP_SMART=y
+CONFIG_SLUB_CPU_PARTIAL=y
+# CONFIG_SLUB_DEBUG_ON is not set
+CONFIG_SLUB_DEBUG=y
+CONFIG_SLUB_KUNIT_TEST=m
+# CONFIG_SLUB_STATS is not set
+# CONFIG_SLUB_TINY is not set
+CONFIG_SLUB=y
+CONFIG_SMARTJOYPLUS_FF=y
+# CONFIG_SMB_SERVER is not set
+CONFIG_SMC_DIAG=m
+# CONFIG_SMC_LO is not set
+CONFIG_SMC=m
+# CONFIG_SM_FTL is not set
+CONFIG_SMP=y
+CONFIG_SMSC911X=m
+CONFIG_SMSC9420=m
+CONFIG_SMSC_PHY=m
+CONFIG_SMSC_SCH311X_WDT=m
+CONFIG_SMS_SDIO_DRV=m
+# CONFIG_SMS_SIANO_DEBUGFS is not set
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+CONFIG_SMS_USB_DRV=m
+# CONFIG_SM_VIDEOCC_8150 is not set
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
+CONFIG_SND_AC97_POWER_SAVE=y
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALI5451 is not set
+CONFIG_SND_ALOOP=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+# CONFIG_SND_AMD_ACP_CONFIG is not set
+# CONFIG_SND_ASIHPI is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_ATMEL_SOC is not set
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=m
+CONFIG_SND_AUDIO_GRAPH_CARD2=m
+CONFIG_SND_AUDIO_GRAPH_CARD=m
+# CONFIG_SND_AW2 is not set
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set
+CONFIG_SND_BEBOB=m
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_COMPRESS_OFFLOAD=m
+CONFIG_SND_CORE_TEST=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+# CONFIG_SND_CTL_DEBUG is not set
+CONFIG_SND_CTL_FAST_LOOKUP=y
+# CONFIG_SND_CTL_INPUT_VALIDATION is not set
+# CONFIG_SND_CTL_VALIDATION is not set
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_DARLA24=m
+# CONFIG_SND_DEBUG is not set
+# CONFIG_SND_DEBUG_VERBOSE is not set
+CONFIG_SND_DESIGNWARE_I2S=m
+# CONFIG_SND_DESIGNWARE_PCM is not set
+CONFIG_SND_DICE=m
+CONFIG_SND_DMAENGINE_PCM=m
+CONFIG_SND_DRIVERS=y
+CONFIG_SND_DUMMY=m
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968_INPUT=y
+CONFIG_SND_ES1968=m
+CONFIG_SND_ES1968_RADIO=y
+CONFIG_SND_FIREFACE=m
+CONFIG_SND_FIREWORKS=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_GINA20=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132_DSP=y
+CONFIG_SND_HDA_CODEC_CA0132=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CS8409=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+# CONFIG_SND_HDA_CTL_DEV_ID is not set
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=0
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
+CONFIG_SND_HDA_PREALLOC_SIZE=2048
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m
+CONFIG_SND_HDA_SCODEC_CS35L41_SPI=m
+CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m
+CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m
+CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m
+# CONFIG_SND_HDA_TEGRA is not set
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_HRTIMER=m
+# CONFIG_SND_I2S_HI6210_I2S is not set
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+# CONFIG_SND_IMX_SOC is not set
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGO=m
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_INTEL_BYT_PREFER_SOF is not set
+CONFIG_SND_ISIGHT=m
+# CONFIG_SND_JACK_INJECTION_DEBUG is not set
+CONFIG_SND_JACK=y
+# CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB is not set
+# CONFIG_SND_KIRKWOOD_SOC is not set
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_LOLA=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND=m
+CONFIG_SND_MAESTRO3_INPUT=y
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MAX_CARDS=32
+# CONFIG_SND_MESON_AIU is not set
+# CONFIG_SND_MESON_G12A_TOACODEC is not set
+# CONFIG_SND_MESON_G12A_TOHDMITX is not set
+# CONFIG_SND_MESON_GX_SOUND_CARD is not set
+CONFIG_SND_MIA=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_MIXER_OSS=m
+# CONFIG_SND_MMP_SOC_SSPA is not set
+CONFIG_SND_MONA=m
+CONFIG_SND_MPU401=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_MTS64=m
+CONFIG_SND_NM256=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_OXFW=m
+CONFIG_SND_OXYGEN=m
+CONFIG_SND_PCI=y
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCMTEST=m
+CONFIG_SND_PCM_TIMER=y
+# CONFIG_SND_PCSP is not set
+CONFIG_SND_PCXHR=m
+CONFIG_SND_PORTMAN2X4=m
+# CONFIG_SND_PPC is not set
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_RME96=m
+# CONFIG_SND_SAMSUNG_PCM is not set
+# CONFIG_SND_SAMSUNG_SPDIF is not set
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQUENCER_OSS=m
+CONFIG_SND_SEQ_UMP=y
+CONFIG_SND_SERIAL_GENERIC=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_SIMPLE_CARD=m
+CONFIG_SND_SIMPLE_CARD_UTILS=m
+# CONFIG_SND_SIS7019 is not set
+CONFIG_SND_SOC_AC97_BUS=y
+CONFIG_SND_SOC_AC97_CODEC=m
+# CONFIG_SND_SOC_ADAU1372_I2C is not set
+# CONFIG_SND_SOC_ADAU1372_SPI is not set
+# CONFIG_SND_SOC_ADAU1701 is not set
+CONFIG_SND_SOC_ADAU1761_I2C=m
+CONFIG_SND_SOC_ADAU1761_SPI=m
+CONFIG_SND_SOC_ADAU7002=m
+CONFIG_SND_SOC_ADAU7118_HW=m
+CONFIG_SND_SOC_ADAU7118_I2C=m
+CONFIG_SND_SOC_ADI_AXI_I2S=m
+CONFIG_SND_SOC_ADI_AXI_SPDIF=m
+CONFIG_SND_SOC_ADI=m
+# CONFIG_SND_SOC_AK4104 is not set
+# CONFIG_SND_SOC_AK4118 is not set
+# CONFIG_SND_SOC_AK4375 is not set
+# CONFIG_SND_SOC_AK4458 is not set
+# CONFIG_SND_SOC_AK4554 is not set
+# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
+# CONFIG_SND_SOC_AK4642 is not set
+# CONFIG_SND_SOC_AK5386 is not set
+CONFIG_SND_SOC_AK5558=m
+# CONFIG_SND_SOC_ALC5623 is not set
+# CONFIG_SND_SOC_AMD_ACP3x is not set
+# CONFIG_SND_SOC_AMD_ACP5x is not set
+# CONFIG_SND_SOC_AMD_ACP6x is not set
+# CONFIG_SND_SOC_AMD_ACP_COMMON is not set
+# CONFIG_SND_SOC_AMD_ACP is not set
+# CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH is not set
+# CONFIG_SND_SOC_AMD_CZ_RT5645_MACH is not set
+# CONFIG_SND_SOC_AMD_PS is not set
+# CONFIG_SND_SOC_AMD_PS_MACH is not set
+# CONFIG_SND_SOC_AMD_RENOIR is not set
+# CONFIG_SND_SOC_AMD_RENOIR_MACH is not set
+# CONFIG_SND_SOC_AMD_RPL_ACP6x is not set
+# CONFIG_SND_SOC_AMD_RV_RT5682_MACH is not set
+# CONFIG_SND_SOC_AMD_VANGOGH_MACH is not set
+# CONFIG_SND_SOC_AMD_YC_MACH is not set
+# CONFIG_SND_SOC_APQ8016_SBC is not set
+# CONFIG_SND_SOC_ARNDALE is not set
+CONFIG_SND_SOC_AUDIO_IIO_AUX=m
+CONFIG_SND_SOC_AW8738=m
+CONFIG_SND_SOC_AW87390=m
+CONFIG_SND_SOC_AW88261=m
+CONFIG_SND_SOC_AW88395=m
+CONFIG_SND_SOC_AW88399=m
+CONFIG_SND_SOC_BD28623=m
+CONFIG_SND_SOC_BT_SCO=m
+CONFIG_SND_SOC_CARD_KUNIT_TEST=m
+CONFIG_SND_SOC_CHV3_CODEC=m
+CONFIG_SND_SOC_CHV3_I2S=m
+# CONFIG_SND_SOC_CROS_EC_CODEC is not set
+# CONFIG_SND_SOC_CS35L32 is not set
+# CONFIG_SND_SOC_CS35L33 is not set
+CONFIG_SND_SOC_CS35L34=m
+CONFIG_SND_SOC_CS35L35=m
+CONFIG_SND_SOC_CS35L36=m
+# CONFIG_SND_SOC_CS35L41_I2C is not set
+# CONFIG_SND_SOC_CS35L41_SPI is not set
+CONFIG_SND_SOC_CS35L45_I2C=m
+CONFIG_SND_SOC_CS35L45_SPI=m
+CONFIG_SND_SOC_CS35L56_I2C=m
+CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
+CONFIG_SND_SOC_CS4234=m
+# CONFIG_SND_SOC_CS4265 is not set
+# CONFIG_SND_SOC_CS4270 is not set
+# CONFIG_SND_SOC_CS4271_I2C is not set
+# CONFIG_SND_SOC_CS4271_SPI is not set
+CONFIG_SND_SOC_CS42L42=m
+CONFIG_SND_SOC_CS42L42_SDW=m
+CONFIG_SND_SOC_CS42L43=m
+CONFIG_SND_SOC_CS42L43_SDW=m
+# CONFIG_SND_SOC_CS42L51_I2C is not set
+# CONFIG_SND_SOC_CS42L52 is not set
+# CONFIG_SND_SOC_CS42L56 is not set
+# CONFIG_SND_SOC_CS42L73 is not set
+CONFIG_SND_SOC_CS42L83=m
+# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
+# CONFIG_SND_SOC_CS4341 is not set
+# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
+# CONFIG_SND_SOC_CS53L30 is not set
+CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
+CONFIG_SND_SOC_CX2072X=m
+CONFIG_SND_SOC_DA7213=m
+# CONFIG_SND_SOC_DAVINCI_MCASP is not set
+CONFIG_SND_SOC_DMIC=m
+CONFIG_SND_SOC_ES7134=m
+# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
+# CONFIG_SND_SOC_ES8316 is not set
+CONFIG_SND_SOC_ES8326=m
+CONFIG_SND_SOC_ES8328_I2C=m
+CONFIG_SND_SOC_ES8328=m
+CONFIG_SND_SOC_ES8328_SPI=m
+# CONFIG_SND_SOC_FSL_ASOC_CARD is not set
+# CONFIG_SND_SOC_FSL_ASRC is not set
+# CONFIG_SND_SOC_FSL_AUD2HTX is not set
+# CONFIG_SND_SOC_FSL_AUDMIX is not set
+# CONFIG_SND_SOC_FSL_EASRC is not set
+# CONFIG_SND_SOC_FSL_ESAI is not set
+# CONFIG_SND_SOC_FSL_MICFIL is not set
+# CONFIG_SND_SOC_FSL_MQS is not set
+# CONFIG_SND_SOC_FSL_RPMSG is not set
+# CONFIG_SND_SOC_FSL_SAI is not set
+# CONFIG_SND_SOC_FSL_SPDIF is not set
+# CONFIG_SND_SOC_FSL_SSI is not set
+# CONFIG_SND_SOC_FSL_XCVR is not set
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+# CONFIG_SND_SOC_GTM601 is not set
+CONFIG_SND_SOC_HDAC_HDA=m
+CONFIG_SND_SOC_HDAC_HDMI=m
+CONFIG_SND_SOC_HDA=m
+CONFIG_SND_SOC_HDMI_CODEC=m
+# CONFIG_SND_SOC_ICS43432 is not set
+CONFIG_SND_SOC_IDT821034=m
+# CONFIG_SND_SOC_IMG is not set
+# CONFIG_SND_SOC_IMX_AUDIO_RPMSG is not set
+# CONFIG_SND_SOC_IMX_AUDMIX is not set
+# CONFIG_SND_SOC_IMX_AUDMUX is not set
+# CONFIG_SND_SOC_IMX_CARD is not set
+# CONFIG_SND_SOC_IMX_ES8328 is not set
+# CONFIG_SND_SOC_IMX_HDMI is not set
+# CONFIG_SND_SOC_IMX_PCM_RPMSG is not set
+# CONFIG_SND_SOC_IMX_RPMSG is not set
+# CONFIG_SND_SOC_IMX_SGTL5000 is not set
+# CONFIG_SND_SOC_IMX_SPDIF is not set
+# CONFIG_SND_SOC_INNO_RK3036 is not set
+# CONFIG_SND_SOC_INTEL_AVS is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_DA7219 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_DMIC is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_HDAUDIO is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_I2S_TEST is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98357A is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98373 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98927 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_NAU8825 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_PROBE is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT274 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT286 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT298 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_RT5682 is not set
+# CONFIG_SND_SOC_INTEL_AVS_MACH_SSM4567 is not set
+# CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH is not set
+# CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH is not set
+# CONFIG_SND_SOC_INTEL_BROADWELL_MACH is not set
+# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH is not set
+# CONFIG_SND_SOC_INTEL_BYTCR_WM5102_MACH is not set
+# CONFIG_SND_SOC_INTEL_CATPT is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH is not set
+# CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH is not set
+# CONFIG_SND_SOC_INTEL_CML_H is not set
+# CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_CML_LP is not set
+# CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH is not set
+# CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_HASWELL_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_RT286_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC is not set
+# CONFIG_SND_SOC_INTEL_SKYLAKE is not set
+# CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH is not set
+# CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH is not set
+# CONFIG_SND_SOC_INTEL_SST is not set
+# CONFIG_SND_SOC_INTEL_SST_TOPLEVEL is not set
+# CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES is not set
+CONFIG_SND_SOC_JH7110_PWMDAC=m
+CONFIG_SND_SOC_JH7110_TDM=m
+# CONFIG_SND_SOC_LPASS_RX_MACRO is not set
+# CONFIG_SND_SOC_LPASS_TX_MACRO is not set
+# CONFIG_SND_SOC_LPASS_VA_MACRO is not set
+# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set
+CONFIG_SND_SOC=m
+CONFIG_SND_SOC_MAX9759=m
+CONFIG_SND_SOC_MAX98088=m
+# CONFIG_SND_SOC_MAX98090 is not set
+# CONFIG_SND_SOC_MAX98357A is not set
+CONFIG_SND_SOC_MAX98363=m
+CONFIG_SND_SOC_MAX98373_I2C=m
+CONFIG_SND_SOC_MAX98373=m
+CONFIG_SND_SOC_MAX98373_SDW=m
+CONFIG_SND_SOC_MAX98388=m
+CONFIG_SND_SOC_MAX98390=m
+CONFIG_SND_SOC_MAX98396=m
+# CONFIG_SND_SOC_MAX98504 is not set
+CONFIG_SND_SOC_MAX98520=m
+# CONFIG_SND_SOC_MAX9860 is not set
+CONFIG_SND_SOC_MAX9867=m
+CONFIG_SND_SOC_MAX98927=m
+# CONFIG_SND_SOC_MESON_T9015 is not set
+# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set
+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
+# CONFIG_SND_SOC_MSM8996 is not set
+# CONFIG_SND_SOC_MT6351 is not set
+# CONFIG_SND_SOC_MT6358 is not set
+# CONFIG_SND_SOC_MT6660 is not set
+# CONFIG_SND_SOC_MTK_BTCVSD is not set
+# CONFIG_SND_SOC_NAU8315 is not set
+# CONFIG_SND_SOC_NAU8540 is not set
+# CONFIG_SND_SOC_NAU8810 is not set
+# CONFIG_SND_SOC_NAU8821 is not set
+# CONFIG_SND_SOC_NAU8822 is not set
+CONFIG_SND_SOC_NAU8824=m
+# CONFIG_SND_SOC_NAU8825 is not set
+# CONFIG_SND_SOC_ODROID is not set
+# CONFIG_SND_SOC_OMAP_ABE_TWL6040 is not set
+# CONFIG_SND_SOC_OMAP_DMIC is not set
+# CONFIG_SND_SOC_OMAP_HDMI is not set
+# CONFIG_SND_SOC_OMAP_MCBSP is not set
+# CONFIG_SND_SOC_OMAP_MCPDM is not set
+# CONFIG_SND_SOC_PCM1681 is not set
+CONFIG_SND_SOC_PCM1789_I2C=m
+# CONFIG_SND_SOC_PCM179X_I2C is not set
+# CONFIG_SND_SOC_PCM179X_SPI is not set
+CONFIG_SND_SOC_PCM186X_I2C=m
+CONFIG_SND_SOC_PCM186X_SPI=m
+CONFIG_SND_SOC_PCM3060_I2C=m
+CONFIG_SND_SOC_PCM3060_SPI=m
+# CONFIG_SND_SOC_PCM3168A_I2C is not set
+# CONFIG_SND_SOC_PCM3168A_SPI is not set
+# CONFIG_SND_SOC_PCM5102A is not set
+# CONFIG_SND_SOC_PCM512x_I2C is not set
+# CONFIG_SND_SOC_PCM512x is not set
+# CONFIG_SND_SOC_PCM512x_SPI is not set
+CONFIG_SND_SOC_PCM6240=m
+# CONFIG_SND_SOC_PEB2466 is not set
+# CONFIG_SND_SOC_QCOM is not set
+# CONFIG_SND_SOC_QDSP6 is not set
+# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set
+# CONFIG_SND_SOC_RK3328 is not set
+# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set
+# CONFIG_SND_SOC_RK817 is not set
+CONFIG_SND_SOC_RL6231=m
+CONFIG_SND_SOC_RT1017_SDCA_SDW=m
+# CONFIG_SND_SOC_RT1308 is not set
+# CONFIG_SND_SOC_RT1308_SDW is not set
+# CONFIG_SND_SOC_RT1316_SDW is not set
+CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
+# CONFIG_SND_SOC_RT5616 is not set
+# CONFIG_SND_SOC_RT5631 is not set
+CONFIG_SND_SOC_RT5640=m
+CONFIG_SND_SOC_RT5659=m
+CONFIG_SND_SOC_RT5660=m
+# CONFIG_SND_SOC_RT5663 is not set
+# CONFIG_SND_SOC_RT5677 is not set
+# CONFIG_SND_SOC_RT5677_SPI is not set
+CONFIG_SND_SOC_RT5682_SDW=m
+CONFIG_SND_SOC_RT700_SDW=m
+CONFIG_SND_SOC_RT711_SDCA_SDW=m
+CONFIG_SND_SOC_RT711_SDW=m
+CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m
+# CONFIG_SND_SOC_RT712_SDCA_SDW is not set
+CONFIG_SND_SOC_RT715_SDCA_SDW=m
+CONFIG_SND_SOC_RT715_SDW=m
+CONFIG_SND_SOC_RT722_SDCA_SDW=m
+# CONFIG_SND_SOC_RT9120 is not set
+CONFIG_SND_SOC_RTQ9128=m
+# CONFIG_SND_SOC_SAMSUNG_ARIES_WM8994 is not set
+# CONFIG_SND_SOC_SAMSUNG is not set
+# CONFIG_SND_SOC_SAMSUNG_MIDAS_WM1811 is not set
+# CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF is not set
+# CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994 is not set
+# CONFIG_SND_SOC_SC7180 is not set
+# CONFIG_SND_SOC_SDM845 is not set
+# CONFIG_SND_SOC_SDW_MOCKUP is not set
+# CONFIG_SND_SOC_SGTL5000 is not set
+CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m
+CONFIG_SND_SOC_SIMPLE_MUX=m
+# CONFIG_SND_SOC_SM8250 is not set
+CONFIG_SND_SOC_SMA1303=m
+# CONFIG_SND_SOC_SMDK_WM8994_PCM is not set
+# CONFIG_SND_SOC_SNOW is not set
+CONFIG_SND_SOC_SOF_ACPI=m
+# CONFIG_SND_SOC_SOF_ALDERLAKE is not set
+# CONFIG_SND_SOC_SOF_AMD_TOPLEVEL is not set
+# CONFIG_SND_SOC_SOF_APOLLOLAKE is not set
+# CONFIG_SND_SOC_SOF_BAYTRAIL is not set
+# CONFIG_SND_SOC_SOF_BROADWELL is not set
+# CONFIG_SND_SOC_SOF_CANNONLAKE is not set
+# CONFIG_SND_SOC_SOF_COFFEELAKE is not set
+# CONFIG_SND_SOC_SOF_COMETLAKE is not set
+# CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set
+# CONFIG_SND_SOC_SOF_ELKHARTLAKE is not set
+# CONFIG_SND_SOC_SOF_GEMINILAKE is not set
+# CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC is not set
+# CONFIG_SND_SOC_SOF_HDA_LINK is not set
+# CONFIG_SND_SOC_SOF_ICELAKE is not set
+# CONFIG_SND_SOC_SOF_IMX8M_SUPPORT is not set
+# CONFIG_SND_SOC_SOF_IMX8_SUPPORT is not set
+# CONFIG_SND_SOC_SOF_IMX_TOPLEVEL is not set
+# CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE is not set
+# CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL is not set
+# CONFIG_SND_SOC_SOF_JASPERLAKE is not set
+# CONFIG_SND_SOC_SOF_KABYLAKE is not set
+# CONFIG_SND_SOC_SOF_MERRIFIELD is not set
+# CONFIG_SND_SOC_SOF_METEORLAKE is not set
+# CONFIG_SND_SOC_SOF_MT8195 is not set
+# CONFIG_SND_SOC_SOF_OF is not set
+CONFIG_SND_SOC_SOF_PCI=m
+# CONFIG_SND_SOC_SOF_SKYLAKE is not set
+# CONFIG_SND_SOC_SOF_TIGERLAKE is not set
+CONFIG_SND_SOC_SOF_TOPLEVEL=y
+CONFIG_SND_SOC_SPDIF=m
+# CONFIG_SND_SOC_SRC4XXX_I2C is not set
+# CONFIG_SND_SOC_SSM2305 is not set
+# CONFIG_SND_SOC_SSM2518 is not set
+# CONFIG_SND_SOC_SSM2602_I2C is not set
+# CONFIG_SND_SOC_SSM2602_SPI is not set
+CONFIG_SND_SOC_SSM3515=m
+# CONFIG_SND_SOC_SSM4567 is not set
+# CONFIG_SND_SOC_STA32X is not set
+# CONFIG_SND_SOC_STA350 is not set
+CONFIG_SND_SOC_STARFIVE=m
+# CONFIG_SND_SOC_STI_SAS is not set
+# CONFIG_SND_SOC_STM32_DFSDM is not set
+# CONFIG_SND_SOC_STM32_I2S is not set
+# CONFIG_SND_SOC_STM32_SAI is not set
+# CONFIG_SND_SOC_STM32_SPDIFRX is not set
+# CONFIG_SND_SOC_STORM is not set
+# CONFIG_SND_SOC_TAS2552 is not set
+CONFIG_SND_SOC_TAS2562=m
+CONFIG_SND_SOC_TAS2764=m
+CONFIG_SND_SOC_TAS2770=m
+CONFIG_SND_SOC_TAS2780=m
+CONFIG_SND_SOC_TAS2781_I2C=m
+# CONFIG_SND_SOC_TAS5086 is not set
+# CONFIG_SND_SOC_TAS571X is not set
+# CONFIG_SND_SOC_TAS5720 is not set
+CONFIG_SND_SOC_TAS5805M=m
+CONFIG_SND_SOC_TAS6424=m
+CONFIG_SND_SOC_TDA7419=m
+# CONFIG_SND_SOC_TEGRA186_DSPK is not set
+# CONFIG_SND_SOC_TEGRA20_AC97 is not set
+# CONFIG_SND_SOC_TEGRA20_DAS is not set
+# CONFIG_SND_SOC_TEGRA20_I2S is not set
+# CONFIG_SND_SOC_TEGRA20_SPDIF is not set
+# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set
+# CONFIG_SND_SOC_TEGRA210_AHUB is not set
+# CONFIG_SND_SOC_TEGRA210_DMIC is not set
+# CONFIG_SND_SOC_TEGRA210_I2S is not set
+# CONFIG_SND_SOC_TEGRA30_AHUB is not set
+# CONFIG_SND_SOC_TEGRA30_I2S is not set
+# CONFIG_SND_SOC_TEGRA_ALC5632 is not set
+# CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD is not set
+# CONFIG_SND_SOC_TEGRA is not set
+# CONFIG_SND_SOC_TEGRA_MACHINE_DRV is not set
+# CONFIG_SND_SOC_TEGRA_MAX98090 is not set
+# CONFIG_SND_SOC_TEGRA_RT5640 is not set
+# CONFIG_SND_SOC_TEGRA_RT5677 is not set
+# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set
+# CONFIG_SND_SOC_TEGRA_TRIMSLICE is not set
+# CONFIG_SND_SOC_TEGRA_WM8753 is not set
+# CONFIG_SND_SOC_TEGRA_WM8903 is not set
+# CONFIG_SND_SOC_TEGRA_WM9712 is not set
+# CONFIG_SND_SOC_TFA9879 is not set
+# CONFIG_SND_SOC_TFA989X is not set
+CONFIG_SND_SOC_TLV320ADC3XXX=m
+CONFIG_SND_SOC_TLV320ADCX140=m
+# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC23 is not set
+# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
+# CONFIG_SND_SOC_TLV320AIC31XX is not set
+CONFIG_SND_SOC_TLV320AIC32X4_I2C=m
+CONFIG_SND_SOC_TLV320AIC32X4_SPI=m
+# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC3X is not set
+# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set
+# CONFIG_SND_SOC_TOPOLOGY_BUILD is not set
+CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
+# CONFIG_SND_SOC_TPA6130A2 is not set
+# CONFIG_SND_SOC_TS3A227E is not set
+CONFIG_SND_SOC_TSCS42XX=m
+# CONFIG_SND_SOC_TSCS454 is not set
+# CONFIG_SND_SOC_UDA1334 is not set
+CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
+# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
+# CONFIG_SND_SOC_WCD938X_SDW is not set
+CONFIG_SND_SOC_WCD939X_SDW=m
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
+# CONFIG_SND_SOC_WM8580 is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8728 is not set
+CONFIG_SND_SOC_WM8731_I2C=m
+CONFIG_SND_SOC_WM8731=m
+CONFIG_SND_SOC_WM8731_SPI=m
+# CONFIG_SND_SOC_WM8737 is not set
+# CONFIG_SND_SOC_WM8741 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8770 is not set
+# CONFIG_SND_SOC_WM8776 is not set
+# CONFIG_SND_SOC_WM8782 is not set
+CONFIG_SND_SOC_WM8804_I2C=m
+CONFIG_SND_SOC_WM8804=m
+# CONFIG_SND_SOC_WM8804_SPI is not set
+# CONFIG_SND_SOC_WM8903 is not set
+# CONFIG_SND_SOC_WM8904 is not set
+CONFIG_SND_SOC_WM8940=m
+# CONFIG_SND_SOC_WM8960 is not set
+CONFIG_SND_SOC_WM8961=m
+# CONFIG_SND_SOC_WM8962 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8978 is not set
+# CONFIG_SND_SOC_WM8985 is not set
+# CONFIG_SND_SOC_WSA881X is not set
+CONFIG_SND_SOC_WSA883X=m
+CONFIG_SND_SOC_WSA884X=m
+# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set
+# CONFIG_SND_SOC_XILINX_I2S is not set
+# CONFIG_SND_SOC_XILINX_SPDIF is not set
+# CONFIG_SND_SOC_XTFPGA_I2S is not set
+CONFIG_SND_SOC_ZL38060=m
+CONFIG_SND_SONICVIBES=m
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM is not set
+# CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI is not set
+# CONFIG_SND_SUN4I_CODEC is not set
+# CONFIG_SND_SUN4I_I2S is not set
+# CONFIG_SND_SUN4I_SPDIF is not set
+# CONFIG_SND_SUN50I_CODEC_ANALOG is not set
+# CONFIG_SND_SUN8I_CODEC_ANALOG is not set
+# CONFIG_SND_SUN8I_CODEC is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_TEST_COMPONENT is not set
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_UMP_LEGACY_RAWMIDI=y
+CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_AUDIO_MIDI_V2=y
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_USB_PODHD=m
+CONFIG_SND_USB_POD=m
+CONFIG_SND_USB_TONEPORT=m
+CONFIG_SND_USB_UA101=m
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_VARIAX=m
+CONFIG_SND_USB=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_VIRTIO=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+# CONFIG_SND_X86 is not set
+# CONFIG_SND_XEN_FRONTEND is not set
+CONFIG_SND_YMFPCI=m
+CONFIG_SNET_VDPA=m
+CONFIG_SOC_STARFIVE=y
+# CONFIG_SOC_TI is not set
+CONFIG_SOFTLOCKUP_DETECTOR_INTR_STORM=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_SONY_FF=y
+# CONFIG_SONYPI is not set
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+# CONFIG_SOUNDWIRE_AMD is not set
+# CONFIG_SOUNDWIRE_CADENCE is not set
+CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m
+# CONFIG_SOUNDWIRE_INTEL is not set
+# CONFIG_SOUNDWIRE is not set
+# CONFIG_SOUNDWIRE_QCOM is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_SPARSEMEM=y
+CONFIG_SPEAKUP=m
+CONFIG_SPEAKUP_SYNTH_ACNTSA=m
+CONFIG_SPEAKUP_SYNTH_APOLLO=m
+CONFIG_SPEAKUP_SYNTH_AUDPTR=m
+CONFIG_SPEAKUP_SYNTH_BNS=m
+# CONFIG_SPEAKUP_SYNTH_DECEXT is not set
+CONFIG_SPEAKUP_SYNTH_DECTLK=m
+# CONFIG_SPEAKUP_SYNTH_DUMMY is not set
+CONFIG_SPEAKUP_SYNTH_LTLK=m
+CONFIG_SPEAKUP_SYNTH_SOFT=m
+CONFIG_SPEAKUP_SYNTH_SPKOUT=m
+CONFIG_SPEAKUP_SYNTH_TXPRT=m
+CONFIG_SPI_ALTERA_CORE=m
+CONFIG_SPI_ALTERA_DFL=m
+# CONFIG_SPI_ALTERA is not set
+CONFIG_SPI_AMD=y
+CONFIG_SPI_AX88796C_COMPRESSION=y
+CONFIG_SPI_AX88796C=m
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_CADENCE is not set
+CONFIG_SPI_CADENCE_QUADSPI=m
+# CONFIG_SPI_CADENCE_XSPI is not set
+CONFIG_SPI_CH341=m
+# CONFIG_SPI_CS42L43 is not set
+# CONFIG_SPI_DEBUG is not set
+# CONFIG_SPI_DESIGNWARE is not set
+CONFIG_SPI_DLN2=m
+CONFIG_SPI_FSL_LPSPI=m
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_HISI_KUNPENG is not set
+# CONFIG_SPI_HISI_SFC_V3XX is not set
+# CONFIG_SPI_LANTIQ_SSC is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_MICROCHIP_CORE=m
+CONFIG_SPI_MICROCHIP_CORE_QSPI=m
+CONFIG_SPI_MUX=m
+# CONFIG_SPI_MXIC is not set
+# CONFIG_SPI_OC_TINY is not set
+CONFIG_SPI_PCI1XXXX=m
+# CONFIG_SPI_PL022 is not set
+# CONFIG_SPI_PXA2XX is not set
+# CONFIG_SPI_ROCKCHIP is not set
+# CONFIG_SPI_SC18IS602 is not set
+CONFIG_SPI_SIFIVE=y
+# CONFIG_SPI_SLAVE is not set
+CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m
+CONFIG_SPI_SLAVE_TIME=m
+CONFIG_SPI_SN_F_OSPI=m
+CONFIG_SPI_SPIDEV=m
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_TOPCLIFF_PCH is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+CONFIG_SPI=y
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
+# CONFIG_SPMI_HISI3670 is not set
+# CONFIG_SPMI is not set
+# CONFIG_SPS30_I2C is not set
+# CONFIG_SPS30_SERIAL is not set
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
+# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set
+# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set
+CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU=y
+# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set
+# CONFIG_SQUASHFS_DECOMP_MULTI is not set
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+# CONFIG_SQUASHFS_DECOMP_SINGLE is not set
+# CONFIG_SQUASHFS_EMBEDDED is not set
+# CONFIG_SQUASHFS_FILE_CACHE is not set
+CONFIG_SQUASHFS_FILE_DIRECT=y
+CONFIG_SQUASHFS_LZ4=y
+CONFIG_SQUASHFS_LZO=y
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_XZ=y
+CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
+# CONFIG_SRAM is not set
+# CONFIG_SRF04 is not set
+# CONFIG_SRF08 is not set
+CONFIG_SSB_DRIVER_GPIO=y
+CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB=m
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSFDC is not set
+CONFIG_SSIF_IPMI_BMC=m
+CONFIG_STACKDEPOT_MAX_FRAMES=64
+CONFIG_STACK_HASH_ORDER=20
+CONFIG_STACKINIT_KUNIT_TEST=m
+CONFIG_STACKPROTECTOR_PER_TASK=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_STACKPROTECTOR=y
+# CONFIG_STACKTRACE_BUILD_ID is not set
+CONFIG_STACK_TRACER=y
+CONFIG_STACK_VALIDATION=y
+# CONFIG_STAGING_MEDIA_DEPRECATED is not set
+CONFIG_STAGING_MEDIA=y
+CONFIG_STAGING=y
+CONFIG_STANDALONE=y
+CONFIG_STARFIVE_JH8100_INTC=y
+# CONFIG_STARFIVE_STARLINK_CACHE is not set
+# CONFIG_STARFIVE_STARLINK_PMU is not set
+CONFIG_STARFIVE_WATCHDOG=y
+# CONFIG_STATIC_CALL_SELFTEST is not set
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_STE10XP=m
+CONFIG_STEAM_FF=y
+CONFIG_STK3310=m
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
+# CONFIG_STM_DUMMY is not set
+CONFIG_STM=m
+CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_PCI is not set
+CONFIG_STMMAC_PLATFORM=m
+# CONFIG_STMMAC_SELFTESTS is not set
+# CONFIG_STM_PROTO_BASIC is not set
+# CONFIG_STM_PROTO_SYS_T is not set
+# CONFIG_STM_SOURCE_CONSOLE is not set
+# CONFIG_STM_SOURCE_FTRACE is not set
+# CONFIG_STM_SOURCE_HEARTBEAT is not set
+CONFIG_STRCAT_KUNIT_TEST=m
+CONFIG_STRICT_DEVMEM=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_STRING_HELPERS_KUNIT_TEST=m
+CONFIG_STRING_KUNIT_TEST=m
+# CONFIG_STRING_SELFTEST is not set
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_STRSCPY_KUNIT_TEST=m
+CONFIG_ST_UVIS25_I2C=m
+CONFIG_ST_UVIS25=m
+CONFIG_ST_UVIS25_SPI=m
+CONFIG_SUN20I_D1_CCU=y
+CONFIG_SUN20I_D1_R_CCU=y
+# CONFIG_SUN50I_DE2_BUS is not set
+# CONFIG_SUN50I_IOMMU is not set
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_SUNGEM=m
+CONFIG_SUN_PARTITION=y
+CONFIG_SUNRPC_DEBUG=y
+CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES=y
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_XPRT_RDMA=m
+# CONFIG_SURFACE_3_POWER_OPREGION is not set
+CONFIG_SURFACE_ACPI_NOTIFY=m
+CONFIG_SURFACE_AGGREGATOR_BUS=y
+CONFIG_SURFACE_AGGREGATOR_CDEV=m
+# CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set
+CONFIG_SURFACE_AGGREGATOR_HUB=m
+CONFIG_SURFACE_AGGREGATOR=m
+CONFIG_SURFACE_AGGREGATOR_REGISTRY=m
+CONFIG_SURFACE_AGGREGATOR_TABLET_SWITCH=m
+CONFIG_SURFACE_DTX=m
+CONFIG_SURFACE_GPE=m
+CONFIG_SURFACE_HID=m
+CONFIG_SURFACE_HOTPLUG=m
+CONFIG_SURFACE_KBD=m
+CONFIG_SURFACE_PLATFORM_PROFILE=m
+CONFIG_SURFACE_PLATFORMS=y
+CONFIG_SURFACE_PRO3_BUTTON=m
+# CONFIG_SUSPEND_SKIP_SYNC is not set
+CONFIG_SUSPEND=y
+CONFIG_SWAP=y
+# CONFIG_SWIOTLB_DYNAMIC is not set
+# CONFIG_SW_SYNC is not set
+CONFIG_SX9310=m
+CONFIG_SX9324=m
+CONFIG_SX9360=m
+# CONFIG_SX9500 is not set
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_SYNC_FILE=y
+CONFIG_SYNCLINK_GT=m
+CONFIG_SYN_COOKIES=y
+# CONFIG_SYNTH_EVENT_GEN_TEST is not set
+CONFIG_SYNTH_EVENTS=y
+CONFIG_SYSCON_REBOOT_MODE=y
+CONFIG_SYSCTL_KUNIT_TEST=m
+CONFIG_SYSCTL=y
+CONFIG_SYSFB_SIMPLEFB=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_SYSFS_SYSCALL=y
+# CONFIG_SYSTEM76_ACPI is not set
+CONFIG_SYSTEM_BLACKLIST_AUTH_UPDATE=y
+CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
+CONFIG_SYSTEM_BLACKLIST_KEYRING=y
+CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
+CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
+# CONFIG_SYSTEMPORT is not set
+# CONFIG_SYSTEM_REVOCATION_LIST is not set
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_SYSV_FS=m
+CONFIG_SYSVIPC=y
+# CONFIG_T5403 is not set
+CONFIG_TABLET_SERIAL_WACOM4=m
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_HANWANG=m
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_PEGASUS=m
+CONFIG_TARGET_CORE=m
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_TASKS_RCU=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_XACCT=y
+CONFIG_TCG_ATMEL=m
+CONFIG_TCG_CRB=y
+# CONFIG_TCG_INFINEON is not set
+CONFIG_TCG_NSC=m
+CONFIG_TCG_TIS_I2C_ATMEL=m
+CONFIG_TCG_TIS_I2C_CR50=m
+CONFIG_TCG_TIS_I2C_INFINEON=m
+CONFIG_TCG_TIS_I2C=m
+CONFIG_TCG_TIS_I2C_NUVOTON=m
+CONFIG_TCG_TIS_SPI_CR50=y
+CONFIG_TCG_TIS_SPI=m
+# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
+# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
+CONFIG_TCG_TIS=y
+CONFIG_TCG_TPM2_HMAC=y
+CONFIG_TCG_TPM=y
+CONFIG_TCG_VTPM_PROXY=m
+# CONFIG_TCG_XEN is not set
+CONFIG_TCM_FC=m
+CONFIG_TCM_FILEIO=m
+CONFIG_TCM_IBLOCK=m
+CONFIG_TCM_PSCSI=m
+# CONFIG_TCM_QLA2XXX_DEBUG is not set
+CONFIG_TCM_QLA2XXX=m
+CONFIG_TCM_USER2=m
+CONFIG_TCP_AO=y
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_BBR=m
+CONFIG_TCP_CONG_BIC=m
+CONFIG_TCP_CONG_CDG=m
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HTCP=m
+CONFIG_TCP_CONG_HYBLA=m
+CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_LP=m
+CONFIG_TCP_CONG_NV=m
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_VENO=m
+CONFIG_TCP_CONG_WESTWOOD=m
+CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_MD5SIG=y
+# CONFIG_TCS3414 is not set
+# CONFIG_TCS3472 is not set
+CONFIG_TDX_GUEST_DRIVER=m
+CONFIG_TEE=m
+CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
+CONFIG_TELCLOCK=m
+CONFIG_TERANETICS_PHY=m
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_BITOPS is not set
+# CONFIG_TEST_BLACKHOLE_DEV is not set
+CONFIG_TEST_BPF=m
+# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set
+CONFIG_TEST_CPUMASK=m
+# CONFIG_TEST_DHRY is not set
+# CONFIG_TEST_DIV64 is not set
+# CONFIG_TEST_DYNAMIC_DEBUG is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_FPU is not set
+# CONFIG_TEST_FREE_PAGES is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_HEXDUMP is not set
+CONFIG_TEST_HMM=m
+# CONFIG_TEST_IDA is not set
+CONFIG_TEST_IOV_ITER=m
+# CONFIG_TEST_KMOD is not set
+CONFIG_TEST_KSTRTOX=y
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_TEST_LKM is not set
+CONFIG_TEST_LOCKUP=m
+# CONFIG_TEST_MAPLE_TREE is not set
+# CONFIG_TEST_MEMCAT_P is not set
+# CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_MIN_HEAP is not set
+# CONFIG_TEST_OBJAGG is not set
+# CONFIG_TEST_OBJPOOL is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_PARMAN is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_REF_TRACKER is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_SCANF is not set
+# CONFIG_TEST_SIPHASH is not set
+CONFIG_TEST_SORT=m
+# CONFIG_TEST_STACKINIT is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_STRSCPY is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UBSAN is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_UUID is not set
+CONFIG_TEST_VMALLOC=m
+# CONFIG_TEST_XARRAY is not set
+# CONFIG_THERMAL_DEBUGFS is not set
+# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+# CONFIG_THERMAL_EMULATION is not set
+# CONFIG_THERMAL_GOV_BANG_BANG is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
+CONFIG_THERMAL_GOV_STEP_WISE=y
+# CONFIG_THERMAL_GOV_USER_SPACE is not set
+CONFIG_THERMAL_HWMON=y
+# CONFIG_THERMAL_MMIO is not set
+CONFIG_THERMAL_NETLINK=y
+# CONFIG_THERMAL_OF is not set
+CONFIG_THERMAL_STATISTICS=y
+# CONFIG_THERMAL_WRITABLE_TRIPS is not set
+CONFIG_THERMAL=y
+CONFIG_THREAD_SIZE_ORDER=2
+CONFIG_THRUSTMASTER_FF=y
+# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADC0832 is not set
+# CONFIG_TI_ADC084S021 is not set
+# CONFIG_TI_ADC108S102 is not set
+# CONFIG_TI_ADC12138 is not set
+CONFIG_TI_ADC128S052=m
+# CONFIG_TI_ADC161S626 is not set
+CONFIG_TI_ADS1015=m
+CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
+# CONFIG_TI_ADS124S08 is not set
+# CONFIG_TI_ADS1298 is not set
+CONFIG_TI_ADS131E08=m
+CONFIG_TI_ADS7924=m
+# CONFIG_TI_ADS7950 is not set
+CONFIG_TI_ADS8344=m
+# CONFIG_TI_ADS8688 is not set
+# CONFIG_TICK_CPU_ACCOUNTING is not set
+# CONFIG_TI_CPSW_PHY_SEL is not set
+# CONFIG_TI_DAC082S085 is not set
+# CONFIG_TI_DAC5571 is not set
+CONFIG_TI_DAC7311=m
+# CONFIG_TI_DAC7612 is not set
+CONFIG_TIFM_7XX1=m
+CONFIG_TIFM_CORE=m
+CONFIG_TIGON3_HWMON=y
+CONFIG_TIGON3=m
+CONFIG_TI_LMP92064=m
+CONFIG_TIME_KUNIT_TEST=m
+CONFIG_TIME_NS=y
+CONFIG_TIMERFD=y
+CONFIG_TIMERLAT_TRACER=y
+# CONFIG_TINYDRM_HX8357D is not set
+CONFIG_TINYDRM_ILI9163=m
+# CONFIG_TINYDRM_ILI9225 is not set
+# CONFIG_TINYDRM_ILI9341 is not set
+CONFIG_TINYDRM_ILI9486=m
+# CONFIG_TINYDRM_MI0283QT is not set
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
+# CONFIG_TINYDRM_ST7735R is not set
+CONFIG_TIPC_CRYPTO=y
+CONFIG_TIPC_DIAG=m
+CONFIG_TIPC=m
+# CONFIG_TIPC_MEDIA_IB is not set
+CONFIG_TIPC_MEDIA_UDP=y
+# CONFIG_TI_ST is not set
+# CONFIG_TI_TLC4541 is not set
+# CONFIG_TI_TMAG5273 is not set
+CONFIG_TI_TSC2046=m
+CONFIG_TLAN=m
+CONFIG_TLS_DEVICE=y
+CONFIG_TLS=m
+# CONFIG_TLS_TOE is not set
+# CONFIG_TMP006 is not set
+# CONFIG_TMP007 is not set
+CONFIG_TMP117=m
+CONFIG_TMPFS_INODE64=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_QUOTA=y
+CONFIG_TMPFS_XATTR=y
+CONFIG_TMPFS=y
+CONFIG_TORTURE_TEST=m
+# CONFIG_TOUCHSCREEN_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_AR1021_I2C is not set
+CONFIG_TOUCHSCREEN_ATMEL_MXT=m
+# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set
+CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_BU21029 is not set
+# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set
+# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set
+CONFIG_TOUCHSCREEN_COLIBRI_VF50=m
+CONFIG_TOUCHSCREEN_CY8CTMA140=m
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
+CONFIG_TOUCHSCREEN_CYTTSP5=m
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_DMI is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+CONFIG_TOUCHSCREEN_EDT_FT5X06=m
+CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_EGALAX=m
+# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
+# CONFIG_TOUCHSCREEN_EKTF2127 is not set
+CONFIG_TOUCHSCREEN_ELAN=m
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_EXC3000 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C is not set
+# CONFIG_TOUCHSCREEN_GOODIX_BERLIN_SPI is not set
+# CONFIG_TOUCHSCREEN_GOODIX is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_HIDEEP is not set
+CONFIG_TOUCHSCREEN_HIMAX_HX83112B=m
+CONFIG_TOUCHSCREEN_HYCON_HY46XX=m
+CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=m
+CONFIG_TOUCHSCREEN_ILI210X=m
+CONFIG_TOUCHSCREEN_ILITEK=m
+CONFIG_TOUCHSCREEN_IMAGIS=m
+# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+CONFIG_TOUCHSCREEN_IQS5XX=m
+CONFIG_TOUCHSCREEN_IQS7211=m
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+CONFIG_TOUCHSCREEN_MCS5000=m
+# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
+CONFIG_TOUCHSCREEN_MK712=m
+CONFIG_TOUCHSCREEN_MMS114=m
+CONFIG_TOUCHSCREEN_MSG2638=m
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS=m
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+CONFIG_TOUCHSCREEN_PIXCIR=m
+CONFIG_TOUCHSCREEN_RM_TS=m
+# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
+# CONFIG_TOUCHSCREEN_S6SY761 is not set
+CONFIG_TOUCHSCREEN_SILEAD=m
+CONFIG_TOUCHSCREEN_SIS_I2C=m
+CONFIG_TOUCHSCREEN_ST1232=m
+# CONFIG_TOUCHSCREEN_STMFTS is not set
+# CONFIG_TOUCHSCREEN_SUR40 is not set
+# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set
+# CONFIG_TOUCHSCREEN_SX8654 is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_TPS6507X is not set
+CONFIG_TOUCHSCREEN_TS4800=m
+# CONFIG_TOUCHSCREEN_TSC2004 is not set
+# CONFIG_TOUCHSCREEN_TSC2005 is not set
+CONFIG_TOUCHSCREEN_TSC2007_IIO=y
+CONFIG_TOUCHSCREEN_TSC2007=m
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_ELO=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_NEXIO=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_WACOM_I2C=m
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
+# CONFIG_TOUCHSCREEN_WM97XX is not set
+CONFIG_TOUCHSCREEN_ZET6223=m
+CONFIG_TOUCHSCREEN_ZFORCE=m
+CONFIG_TOUCHSCREEN_ZINITIX=m
+# CONFIG_TPL0102 is not set
+CONFIG_TPM_KEY_PARSER=m
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+CONFIG_TPS6594_ESM=m
+CONFIG_TPS6594_PFSM=m
+# CONFIG_TPS68470_PMIC_OPREGION is not set
+CONFIG_TRACE_EVAL_MAP_FILE=y
+# CONFIG_TRACE_EVENT_INJECT is not set
+# CONFIG_TRACE_MMIO_ACCESS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
+# CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set
+CONFIG_TRANSPARENT_HUGEPAGE=y
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_TRUSTED_KEYS_TEE=y
+CONFIG_TRUSTED_KEYS_TPM=y
+CONFIG_TRUSTED_KEYS=y
+# CONFIG_TS4800_IRQ is not set
+# CONFIG_TS4800_WATCHDOG is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2591 is not set
+CONFIG_TSL2772=m
+# CONFIG_TSL4531 is not set
+CONFIG_TSNEP=m
+# CONFIG_TSNEP_SELFTESTS is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
+# CONFIG_TTY_PRINTK is not set
+CONFIG_TTY=y
+CONFIG_TULIP=m
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_TUNE_GENERIC=y
+CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+CONFIG_TXGBE=m
+# CONFIG_TYPEC_ANX7411 is not set
+CONFIG_TYPEC_DP_ALTMODE=m
+CONFIG_TYPEC_FUSB302=m
+CONFIG_TYPEC_HD3SS3220=m
+CONFIG_TYPEC=m
+CONFIG_TYPEC_MUX_FSA4480=m
+CONFIG_TYPEC_MUX_GPIO_SBU=m
+CONFIG_TYPEC_MUX_IT5205=m
+CONFIG_TYPEC_MUX_NB7VPQ904M=m
+CONFIG_TYPEC_MUX_PI3USB30532=m
+CONFIG_TYPEC_MUX_PTN36502=m
+# CONFIG_TYPEC_MUX_WCD939X_USBSS is not set
+CONFIG_TYPEC_NVIDIA_ALTMODE=m
+# CONFIG_TYPEC_QCOM_PMIC is not set
+# CONFIG_TYPEC_RT1711H is not set
+CONFIG_TYPEC_RT1719=m
+CONFIG_TYPEC_STUSB160X=m
+CONFIG_TYPEC_TCPCI=m
+CONFIG_TYPEC_TCPCI_MAXIM=m
+CONFIG_TYPEC_TCPCI_MT6370=m
+CONFIG_TYPEC_TCPM=m
+CONFIG_TYPEC_TPS6598X=m
+CONFIG_TYPEC_UCSI=m
+CONFIG_TYPEC_WUSB3801=m
+CONFIG_TYPHOON=m
+CONFIG_UACCE=m
+CONFIG_UAPI_HEADER_TEST=y
+CONFIG_UBIFS_ATIME_SUPPORT=y
+# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
+CONFIG_UBIFS_FS_AUTHENTICATION=y
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_SECURITY=y
+CONFIG_UBIFS_FS_XATTR=y
+# CONFIG_UBSAN_ALIGNMENT is not set
+# CONFIG_UBSAN_BOOL is not set
+CONFIG_UBSAN_BOUNDS=y
+# CONFIG_UBSAN_DIV_ZERO is not set
+# CONFIG_UBSAN_ENUM is not set
+CONFIG_UBSAN_SANITIZE_ALL=y
+CONFIG_UBSAN_SHIFT=y
+# CONFIG_UBSAN_SIGNED_WRAP is not set
+# CONFIG_UBSAN_TRAP is not set
+# CONFIG_UBSAN_UNREACHABLE is not set
+CONFIG_UBSAN=y
+CONFIG_UCLAMP_BUCKETS_COUNT=5
+CONFIG_UCLAMP_TASK_GROUP=y
+CONFIG_UCLAMP_TASK=y
+CONFIG_UCSI_ACPI=m
+CONFIG_UCSI_CCG=m
+CONFIG_UCSI_STM32G0=m
+CONFIG_UDF_FS=m
+CONFIG_UDMABUF=y
+# CONFIG_UEVENT_HELPER is not set
+# CONFIG_UFS_DEBUG is not set
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+CONFIG_UHID=m
+CONFIG_UID16=y
+# CONFIG_UIO_AEC is not set
+# CONFIG_UIO_CIF is not set
+CONFIG_UIO_DFL=m
+# CONFIG_UIO_DMEM_GENIRQ is not set
+CONFIG_UIO_HV_GENERIC=m
+CONFIG_UIO=m
+# CONFIG_UIO_MF624 is not set
+# CONFIG_UIO_NETX is not set
+CONFIG_UIO_PCI_GENERIC=m
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_PRUSS is not set
+# CONFIG_UIO_SERCOS3 is not set
+CONFIG_ULI526X=m
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set
+CONFIG_UNICODE_UTF8_DATA=y
+CONFIG_UNICODE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX_DIAG=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_UNIX=y
+CONFIG_UNUSED_KSYMS_WHITELIST=""
+# CONFIG_UNWINDER_FRAME_POINTER is not set
+CONFIG_UPROBE_EVENTS=y
+# CONFIG_US5182D is not set
+# CONFIG_USB4_DEBUGFS_WRITE is not set
+# CONFIG_USB4_DMA_TEST is not set
+# CONFIG_USB4_KUNIT_TEST is not set
+CONFIG_USB4_NET=m
+CONFIG_USB4=y
+CONFIG_USB_ACM=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_ALI_M5632=y
+# CONFIG_USB_AMD5536UDC is not set
+CONFIG_USB_AN2720=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_ATM=m
+# CONFIG_USB_AUDIO is not set
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+# CONFIG_USB_BDC_UDC is not set
+CONFIG_USB_BELKIN=y
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_CATC=m
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_USB_CDNS2_UDC=m
+CONFIG_USB_CDNS3_GADGET=y
+CONFIG_USB_CDNS3_HOST=y
+CONFIG_USB_CDNS3=m
+CONFIG_USB_CDNS3_PCI_WRAP=m
+CONFIG_USB_CDNS3_STARFIVE=m
+# CONFIG_USB_CDNSP_GADGET is not set
+# CONFIG_USB_CDNSP_HOST is not set
+CONFIG_USB_CDNSP_PCI=m
+CONFIG_USB_CDNS_SUPPORT=m
+CONFIG_USB_CHAOSKEY=m
+CONFIG_USB_CHIPIDEA_GENERIC=m
+CONFIG_USB_CHIPIDEA_IMX=m
+# CONFIG_USB_CHIPIDEA is not set
+CONFIG_USB_CHIPIDEA_MSM=m
+CONFIG_USB_CHIPIDEA_NPCM=m
+CONFIG_USB_CHIPIDEA_PCI=m
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_EEM=y
+# CONFIG_USB_CONFIGFS_F_FS is not set
+CONFIG_USB_CONFIGFS_F_HID=y
+# CONFIG_USB_CONFIGFS_F_LB_SS is not set
+CONFIG_USB_CONFIGFS_F_MIDI2=y
+# CONFIG_USB_CONFIGFS_F_MIDI is not set
+# CONFIG_USB_CONFIGFS_F_PRINTER is not set
+CONFIG_USB_CONFIGFS_F_TCM=y
+# CONFIG_USB_CONFIGFS_F_UAC1 is not set
+# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set
+# CONFIG_USB_CONFIGFS_F_UAC2 is not set
+# CONFIG_USB_CONFIGFS_F_UVC is not set
+CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+# CONFIG_USB_CONFIGFS_RNDIS is not set
+CONFIG_USB_CONFIGFS_SERIAL=y
+# CONFIG_USB_CONN_GPIO is not set
+CONFIG_USB_CXACRU=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_DEFAULT_AUTHORIZATION_MODE=1
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_DSBR=m
+# CONFIG_USB_DUMMY_HCD is not set
+# CONFIG_USB_DWC2_DEBUG is not set
+CONFIG_USB_DWC2_DUAL_ROLE=y
+# CONFIG_USB_DWC2_HOST is not set
+CONFIG_USB_DWC2=m
+CONFIG_USB_DWC2_PCI=m
+# CONFIG_USB_DWC2_PERIPHERAL is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
+CONFIG_USB_DWC3_DUAL_ROLE=y
+# CONFIG_USB_DWC3_GADGET is not set
+# CONFIG_USB_DWC3_HAPS is not set
+# CONFIG_USB_DWC3_HOST is not set
+CONFIG_USB_DWC3=m
+CONFIG_USB_DWC3_OF_SIMPLE=m
+CONFIG_USB_DWC3_PCI=m
+CONFIG_USB_DWC3_ULPI=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_EG20T is not set
+# CONFIG_USB_EHCI_FSL is not set
+CONFIG_USB_EHCI_HCD_PLATFORM=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+CONFIG_USB_EMI26=m
+CONFIG_USB_EMI62=m
+CONFIG_USB_EPSON2888=y
+# CONFIG_USB_ETH is not set
+CONFIG_USB_EZUSB_FX2=m
+# CONFIG_USB_FEW_INIT_RETRIES is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_FUNCTIONFS is not set
+# CONFIG_USB_G_ACM_MS is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_GADGET=m
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+# CONFIG_USB_GADGET_TARGET is not set
+CONFIG_USB_GADGET_VBUS_DRAW=100
+# CONFIG_USB_GADGET_XILINX is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_G_HID is not set
+CONFIG_USB_GL860=m
+# CONFIG_USB_G_MULTI is not set
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GOKU is not set
+CONFIG_USB_GPIO_VBUS=m
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_GR_UDC is not set
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_DTCS033=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TOUPTEK=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+# CONFIG_USB_G_WEBCAM is not set
+# CONFIG_USB_HCD_BCMA is not set
+# CONFIG_USB_HCD_SSB is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_HID=y
+CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_HSIC_USB4604=m
+CONFIG_USB_HSO=m
+CONFIG_USB_HUB_USB251XB=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_IOWARRIOR=m
+CONFIG_USBIP_CORE=m
+# CONFIG_USBIP_DEBUG is not set
+CONFIG_USB_IPHETH=m
+CONFIG_USBIP_HOST=m
+CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USBIP_VUDC=m
+CONFIG_USB_ISIGHTFW=m
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1301 is not set
+CONFIG_USB_ISP1760_DUAL_ROLE=y
+# CONFIG_USB_ISP1760_GADGET_ROLE is not set
+# CONFIG_USB_ISP1760_HOST_ROLE is not set
+# CONFIG_USB_ISP1760 is not set
+CONFIG_USB_KAWETH=m
+CONFIG_USB_KC2190=y
+CONFIG_USB_KEENE=m
+CONFIG_USB_LAN78XX=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LD=m
+CONFIG_USB_LEDS_TRIGGER_USBPORT=m
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_LEGOTOWER=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_LJCA is not set
+CONFIG_USB_M5602=m
+# CONFIG_USB_M66592 is not set
+CONFIG_USB_MA901=m
+# CONFIG_USB_MASS_STORAGE is not set
+CONFIG_USB_MAX3420_UDC=m
+# CONFIG_USB_MAX3421_HCD is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_USB_MON=y
+CONFIG_USB_MR800=m
+# CONFIG_USB_MUSB_GADGET is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_NET2280 is not set
+CONFIG_USB_NET_AQC111=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_NET_CH9200=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_QMI_WWAN=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_SR9700=m
+# CONFIG_USB_NET_SR9800 is not set
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_HCD_PLATFORM=m
+# CONFIG_USB_OHCI_HCD_SSB is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_ONBOARD_DEV=m
+CONFIG_USB_ONBOARD_HUB=m
+# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set
+CONFIG_USB_OTG_FSM=m
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+CONFIG_USB_OTG=y
+# CONFIG_USB_OXU210HP_HCD is not set
+CONFIG_USB_PCI_AMD=y
+CONFIG_USB_PCI=y
+CONFIG_USBPCWATCHDOG=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_PHY=y
+CONFIG_USB_PRINTER=m
+CONFIG_USB_PULSE8_CEC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_PWC=m
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_R8A66597 is not set
+CONFIG_USB_RAINSHADOW_CEC=m
+# CONFIG_USB_RAREMONO is not set
+CONFIG_USB_RAW_GADGET=m
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_RTL8153_ECM=m
+CONFIG_USB_S2255=m
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_CONSOLE=y
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_DEBUG=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_F81232=m
+CONFIG_USB_SERIAL_F8153X=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+# CONFIG_USB_SERIAL_MXUPORT is not set
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_QCAUX=m
+CONFIG_USB_SERIAL_QT2=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SIMPLE=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_UPD78F0730=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_XR=m
+CONFIG_USB_SERIAL_XSENS_MT=m
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SEVSEG=m
+CONFIG_USB_SI470X=m
+# CONFIG_USB_SI4713 is not set
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SL811_CS is not set
+CONFIG_USB_SL811_HCD_ISO=y
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SNP_UDC_PLAT=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+CONFIG_USB_STORAGE_DATAFAB=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_ENE_UB6250=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_SUPPORT=y
+# CONFIG_USB_TEST is not set
+CONFIG_USB_TMC=m
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_UAS=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_ULPI_BUS=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VL600=m
+CONFIG_USB_WDM=m
+CONFIG_USB_XEN_HCD=m
+CONFIG_USB_XHCI_DBGCAP=y
+CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_HISTB is not set
+CONFIG_USB_XHCI_PCI_RENESAS=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_XHCI_PLATFORM=m
+CONFIG_USB_XUSBATM=m
+CONFIG_USB=y
+CONFIG_USB_YUREX=m
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
+# CONFIG_USER_DECRYPTED_DATA is not set
+# CONFIG_USER_EVENTS is not set
+CONFIG_USERFAULTFD=y
+CONFIG_U_SERIAL_CONSOLE=y
+# CONFIG_USERIO is not set
+CONFIG_USER_NS=y
+CONFIG_UTS_NS=y
+# CONFIG_UV_SYSFS is not set
+# CONFIG_V4L2_FLASH_LED_CLASS is not set
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+# CONFIG_V4L_PLATFORM_DRIVERS is not set
+CONFIG_V4L_TEST_DRIVERS=y
+CONFIG_VALIDATE_FS_PARSER=y
+CONFIG_VCAP=y
+CONFIG_VCHIQ_CDEV=y
+CONFIG_VCNL3020=m
+# CONFIG_VCNL4000 is not set
+CONFIG_VCNL4035=m
+CONFIG_VCPU_STALL_DETECTOR=m
+CONFIG_VDPA=m
+CONFIG_VDPA_SIM_BLOCK=m
+CONFIG_VDPA_SIM=m
+CONFIG_VDPA_SIM_NET=m
+CONFIG_VDPA_USER=m
+CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
+# CONFIG_VEML6070 is not set
+# CONFIG_VEML6075 is not set
+CONFIG_VETH=m
+# CONFIG_VF610_ADC is not set
+# CONFIG_VF610_DAC is not set
+CONFIG_VFAT_FS=m
+CONFIG_VFIO_CONTAINER=y
+# CONFIG_VFIO_DEBUGFS is not set
+# CONFIG_VFIO_DEVICE_CDEV is not set
+CONFIG_VFIO_GROUP=y
+CONFIG_VFIO_IOMMU_TYPE1=m
+CONFIG_VFIO=m
+CONFIG_VFIO_MDEV=m
+# CONFIG_VFIO_NOIOMMU is not set
+CONFIG_VFIO_PCI=m
+CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_VGA_ARB=y
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
+CONFIG_VHOST_MENU=y
+CONFIG_VHOST_NET=m
+CONFIG_VHOST_SCSI=m
+CONFIG_VHOST_VDPA=m
+CONFIG_VHOST_VSOCK=m
+CONFIG_VIA_RHINE=m
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_VELOCITY=m
+CONFIG_VIDEO_AD5820=m
+# CONFIG_VIDEO_AD9389B is not set
+CONFIG_VIDEO_ADP1653=m
+# CONFIG_VIDEO_ADV7170 is not set
+# CONFIG_VIDEO_ADV7175 is not set
+# CONFIG_VIDEO_ADV7180 is not set
+# CONFIG_VIDEO_ADV7183 is not set
+# CONFIG_VIDEO_ADV7343 is not set
+# CONFIG_VIDEO_ADV7393 is not set
+# CONFIG_VIDEO_ADV748X is not set
+# CONFIG_VIDEO_ADV7511 is not set
+# CONFIG_VIDEO_ADV7604_CEC is not set
+# CONFIG_VIDEO_ADV7604 is not set
+# CONFIG_VIDEO_ADV7842_CEC is not set
+# CONFIG_VIDEO_ADV7842 is not set
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_AK7375=m
+# CONFIG_VIDEO_AK881X is not set
+# CONFIG_VIDEO_ALVIUM_CSI2 is not set
+CONFIG_VIDEO_AR0521=m
+CONFIG_VIDEO_AU0828=m
+# CONFIG_VIDEO_AU0828_RC is not set
+CONFIG_VIDEO_AU0828_V4L2=y
+# CONFIG_VIDEO_BT819 is not set
+CONFIG_VIDEO_BT848=m
+# CONFIG_VIDEO_BT856 is not set
+# CONFIG_VIDEO_BT866 is not set
+# CONFIG_VIDEO_CADENCE_CSI2RX is not set
+CONFIG_VIDEO_CADENCE_CSI2TX=m
+# CONFIG_VIDEO_CADENCE is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_VIDEO_CAMERA_SENSOR=y
+CONFIG_VIDEO_CCS=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX23885=m
+# CONFIG_VIDEO_CX25821 is not set
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_ENABLE_VP3054=y
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_DS90UB913=m
+CONFIG_VIDEO_DS90UB953=m
+CONFIG_VIDEO_DS90UB960=m
+# CONFIG_VIDEO_DT3155 is not set
+CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_DW9719=m
+CONFIG_VIDEO_DW9768=m
+CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_VIDEO_EM28XX_V4L2=m
+CONFIG_VIDEO_ET8EK8=m
+CONFIG_VIDEO_FB_IVTV=m
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
+CONFIG_VIDEO_GC2145=m
+CONFIG_VIDEO_GO7007_LOADER=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
+CONFIG_VIDEO_GS1662=m
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HI556=m
+CONFIG_VIDEO_HI846=m
+CONFIG_VIDEO_HI847=m
+# CONFIG_VIDEO_I2C is not set
+CONFIG_VIDEO_IMX208=m
+CONFIG_VIDEO_IMX214=m
+CONFIG_VIDEO_IMX219=m
+CONFIG_VIDEO_IMX258=m
+CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
+CONFIG_VIDEO_IMX290=m
+CONFIG_VIDEO_IMX296=m
+CONFIG_VIDEO_IMX319=m
+CONFIG_VIDEO_IMX334=m
+CONFIG_VIDEO_IMX335=m
+CONFIG_VIDEO_IMX355=m
+CONFIG_VIDEO_IMX412=m
+CONFIG_VIDEO_IMX415=m
+# CONFIG_VIDEO_IPU3_CIO2 is not set
+CONFIG_VIDEO_IR_I2C=m
+# CONFIG_VIDEO_ISL7998X is not set
+# CONFIG_VIDEO_IVTV_ALSA is not set
+CONFIG_VIDEO_IVTV=m
+# CONFIG_VIDEO_KS0127 is not set
+CONFIG_VIDEO_LM3560=m
+CONFIG_VIDEO_LM3646=m
+CONFIG_VIDEO_M52790=m
+# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
+# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+# CONFIG_VIDEO_MGB4 is not set
+# CONFIG_VIDEO_ML86V7667 is not set
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_MT9M001=m
+# CONFIG_VIDEO_MT9M111 is not set
+CONFIG_VIDEO_MT9M114=m
+CONFIG_VIDEO_MT9P031=m
+CONFIG_VIDEO_MT9T112=m
+CONFIG_VIDEO_MT9V011=m
+CONFIG_VIDEO_MT9V032=m
+CONFIG_VIDEO_MT9V111=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_OG01A1B=m
+CONFIG_VIDEO_OV01A10=m
+CONFIG_VIDEO_OV02A10=m
+CONFIG_VIDEO_OV08D10=m
+CONFIG_VIDEO_OV08X40=m
+CONFIG_VIDEO_OV13858=m
+CONFIG_VIDEO_OV13B10=m
+CONFIG_VIDEO_OV2640=m
+CONFIG_VIDEO_OV2659=m
+CONFIG_VIDEO_OV2680=m
+CONFIG_VIDEO_OV2685=m
+CONFIG_VIDEO_OV2740=m
+CONFIG_VIDEO_OV4689=m
+CONFIG_VIDEO_OV5640=m
+CONFIG_VIDEO_OV5645=m
+CONFIG_VIDEO_OV5647=m
+CONFIG_VIDEO_OV5648=m
+CONFIG_VIDEO_OV5670=m
+CONFIG_VIDEO_OV5675=m
+CONFIG_VIDEO_OV5693=m
+CONFIG_VIDEO_OV5695=m
+CONFIG_VIDEO_OV64A40=m
+CONFIG_VIDEO_OV6650=m
+CONFIG_VIDEO_OV7251=m
+CONFIG_VIDEO_OV7640=m
+# CONFIG_VIDEO_OV7670 is not set
+CONFIG_VIDEO_OV772X=m
+CONFIG_VIDEO_OV7740=m
+CONFIG_VIDEO_OV8856=m
+CONFIG_VIDEO_OV8858=m
+CONFIG_VIDEO_OV8865=m
+CONFIG_VIDEO_OV9282=m
+CONFIG_VIDEO_OV9640=m
+CONFIG_VIDEO_OV9650=m
+CONFIG_VIDEO_OV9734=m
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_PVRUSB2_DVB=y
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
+CONFIG_VIDEO_RDACM20=m
+# CONFIG_VIDEO_RDACM21 is not set
+CONFIG_VIDEO_RJ54N1=m
+CONFIG_VIDEO_ROCKCHIP_VDEC=m
+CONFIG_VIDEO_S5C73M3=m
+CONFIG_VIDEO_S5K4ECGX=m
+CONFIG_VIDEO_S5K5BAF=m
+CONFIG_VIDEO_S5K6A3=m
+CONFIG_VIDEO_SAA6588=m
+# CONFIG_VIDEO_SAA7110 is not set
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_SAA7127=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_SAA7164=m
+CONFIG_VIDEO_SAA717X=m
+# CONFIG_VIDEO_SAA7185 is not set
+CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
+CONFIG_VIDEO_STK1160_COMMON=m
+CONFIG_VIDEO_STK1160=m
+# CONFIG_VIDEO_STKWEBCAM is not set
+CONFIG_VIDEO_STM32_DMA2D=m
+# CONFIG_VIDEO_ST_MIPID02 is not set
+CONFIG_VIDEO_ST_VGXY61=m
+CONFIG_VIDEO_TC358743_CEC=y
+# CONFIG_VIDEO_TC358743 is not set
+# CONFIG_VIDEO_TC358746 is not set
+# CONFIG_VIDEO_TDA1997X is not set
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+# CONFIG_VIDEO_TEGRA_TPG is not set
+# CONFIG_VIDEO_THP7312 is not set
+# CONFIG_VIDEO_THS7303 is not set
+# CONFIG_VIDEO_THS8200 is not set
+# CONFIG_VIDEO_TLV320AIC23B is not set
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_TVAUDIO=m
+# CONFIG_VIDEO_TVP514X is not set
+CONFIG_VIDEO_TVP5150=m
+# CONFIG_VIDEO_TVP7002 is not set
+CONFIG_VIDEO_TW2804=m
+# CONFIG_VIDEO_TW5864 is not set
+CONFIG_VIDEO_TW686X=m
+# CONFIG_VIDEO_TW68 is not set
+# CONFIG_VIDEO_TW9900 is not set
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
+# CONFIG_VIDEO_TW9910 is not set
+CONFIG_VIDEO_UDA1342=m
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+CONFIG_VIDEO_USBTV=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
+CONFIG_VIDEO_VICODEC=m
+CONFIG_VIDEO_VIM2M=m
+CONFIG_VIDEO_VIMC=m
+CONFIG_VIDEO_VISL=m
+CONFIG_VIDEO_VIVID_CEC=y
+CONFIG_VIDEO_VIVID=m
+CONFIG_VIDEO_VIVID_MAX_DEVS=64
+CONFIG_VIDEO_VP27SMPX=m
+# CONFIG_VIDEO_VPX3220 is not set
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_WM8775=m
+# CONFIG_VIDEO_XILINX is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIPERBOARD_ADC is not set
+CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
+# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_BLK=m
+CONFIG_VIRTIO_CONSOLE=m
+# CONFIG_VIRTIO_DEBUG is not set
+CONFIG_VIRTIO_FS=m
+# CONFIG_VIRTIO_HARDEN_NOTIFICATION is not set
+CONFIG_VIRTIO_INPUT=m
+# CONFIG_VIRTIO_IOMMU is not set
+CONFIG_VIRTIO_MEM=m
+CONFIG_VIRTIO_MENU=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_VIRTIO_MMIO=m
+CONFIG_VIRTIO_NET=m
+CONFIG_VIRTIO_PCI_LEGACY=y
+CONFIG_VIRTIO_PCI=y
+# CONFIG_VIRTIO_PMEM is not set
+CONFIG_VIRTIO_VDPA=m
+CONFIG_VIRTIO_VFIO_PCI=m
+CONFIG_VIRTIO_VSOCKETS=m
+CONFIG_VIRTIO=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_VIRT_WIFI=m
+# CONFIG_VISL_DEBUGFS is not set
+CONFIG_VITESSE_PHY=m
+CONFIG_VL53L0X_I2C=m
+CONFIG_VL6180=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_MVRP=y
+CONFIG_VMAP_STACK=y
+# CONFIG_VME_BUS is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_VMGENID=y
+# CONFIG_VMLINUX_MAP is not set
+# CONFIG_VMSPLIT_1G is not set
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_3G_OPT is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMXNET3 is not set
+CONFIG_VORTEX=m
+CONFIG_VP_VDPA=m
+CONFIG_VSOCKETS_DIAG=m
+CONFIG_VSOCKETS_LOOPBACK=m
+CONFIG_VSOCKETS=m
+CONFIG_VSOCKMON=m
+# CONFIG_VT6655 is not set
+# CONFIG_VT6656 is not set
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_VT=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_VXGE=m
+CONFIG_VXLAN=m
+# CONFIG_VZ89X is not set
+CONFIG_W1_CON=y
+CONFIG_W1=m
+# CONFIG_W1_MASTER_AMD_AXI is not set
+# CONFIG_W1_MASTER_DS1WM is not set
+CONFIG_W1_MASTER_DS2482=m
+CONFIG_W1_MASTER_DS2490=m
+# CONFIG_W1_MASTER_GPIO is not set
+# CONFIG_W1_MASTER_MATROX is not set
+# CONFIG_W1_MASTER_SGI is not set
+CONFIG_W1_MASTER_UART=m
+CONFIG_W1_SLAVE_DS2405=m
+CONFIG_W1_SLAVE_DS2406=m
+CONFIG_W1_SLAVE_DS2408=m
+# CONFIG_W1_SLAVE_DS2408_READBACK is not set
+CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2423=m
+CONFIG_W1_SLAVE_DS2430=m
+CONFIG_W1_SLAVE_DS2431=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2438=m
+# CONFIG_W1_SLAVE_DS250X is not set
+CONFIG_W1_SLAVE_DS2780=m
+CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
+CONFIG_W1_SLAVE_DS28E04=m
+# CONFIG_W1_SLAVE_DS28E17 is not set
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+# CONFIG_WAFER_WDT is not set
+# CONFIG_WAN is not set
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+CONFIG_WATCHDOG_SYSFS=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCH_QUEUE=y
+# CONFIG_WCN36XX_DEBUGFS is not set
+CONFIG_WCN36XX=m
+CONFIG_WDAT_WDT=m
+CONFIG_WDTPCI=m
+# CONFIG_WERROR is not set
+# CONFIG_WFX is not set
+CONFIG_WIL6210_DEBUGFS=y
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_WIL6210=m
+# CONFIG_WIL6210_TRACING is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_WINBOND_840=m
+# CONFIG_WIREGUARD_DEBUG is not set
+CONFIG_WIREGUARD=m
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_HOTKEY=m
+CONFIG_WIRELESS=y
+CONFIG_WIZNET_BUS_ANY=y
+# CONFIG_WIZNET_BUS_DIRECT is not set
+# CONFIG_WIZNET_BUS_INDIRECT is not set
+CONFIG_WIZNET_W5100=m
+CONFIG_WIZNET_W5100_SPI=m
+CONFIG_WIZNET_W5300=m
+CONFIG_WL1251=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL1251_SPI=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+CONFIG_WLAN_VENDOR_ATH=y
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+CONFIG_WLAN_VENDOR_BROADCOM=y
+# CONFIG_WLAN_VENDOR_CISCO is not set
+CONFIG_WLAN_VENDOR_INTEL=y
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+# CONFIG_WLAN_VENDOR_PURELIFI is not set
+CONFIG_WLAN_VENDOR_QUANTENNA=y
+CONFIG_WLAN_VENDOR_RALINK=y
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_WLAN_VENDOR_RSI=y
+# CONFIG_WLAN_VENDOR_SILABS is not set
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_WLAN_VENDOR_TI=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_WLAN=y
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WLCORE_SPI=m
+CONFIG_WPCM450_SOC=m
+# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+# CONFIG_WQ_WATCHDOG is not set
+CONFIG_WWAN_DEBUGFS=y
+CONFIG_WWAN_HWSIM=m
+CONFIG_WWAN=y
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# CONFIG_X25 is not set
+CONFIG_X9250=m
+CONFIG_XDP_SOCKETS_DIAG=m
+CONFIG_XDP_SOCKETS=y
+# CONFIG_XEN_GRANT_DMA_ALLOC is not set
+CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
+CONFIG_XEN_PRIVCMD_EVENTFD=y
+CONFIG_XEN_PRIVCMD_IRQFD=y
+CONFIG_XEN_PRIVCMD=m
+# CONFIG_XEN_PVCALLS_FRONTEND is not set
+CONFIG_XEN_PVHVM_GUEST=y
+CONFIG_XEN_UNPOPULATED_ALLOC=y
+# CONFIG_XEN_VIRTIO_FORCE_GRANT is not set
+CONFIG_XEN_VIRTIO=y
+CONFIG_XFRM_INTERFACE=m
+CONFIG_XFRM_MIGRATE=y
+CONFIG_XFRM_OFFLOAD=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_XFRM_SUB_POLICY=y
+# CONFIG_XFRM_USER_COMPAT is not set
+CONFIG_XFRM_USER=y
+CONFIG_XFRM=y
+# CONFIG_XFS_DEBUG is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_ONLINE_REPAIR is not set
+# CONFIG_XFS_ONLINE_SCRUB_STATS is not set
+CONFIG_XFS_ONLINE_SCRUB=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_RT=y
+CONFIG_XFS_SUPPORT_ASCII_CI=y
+CONFIG_XFS_SUPPORT_V4=y
+# CONFIG_XFS_WARN is not set
+# CONFIG_XIL_AXIS_FIFO is not set
+# CONFIG_XILINX_AXI_EMAC is not set
+# CONFIG_XILINX_DMA is not set
+CONFIG_XILINX_EMACLITE=m
+CONFIG_XILINX_GMII2RGMII=m
+# CONFIG_XILINX_INTC is not set
+CONFIG_XILINX_LL_TEMAC=m
+CONFIG_XILINX_PR_DECOUPLER=m
+# CONFIG_XILINX_SDFEC is not set
+CONFIG_XILINX_VCU=m
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_XILINX_XADC is not set
+CONFIG_XILINX_XDMA=m
+# CONFIG_XILINX_ZYNQMP_DPDMA is not set
+CONFIG_XILLYBUS=m
+# CONFIG_XILLYBUS_OF is not set
+CONFIG_XILLYBUS_PCIE=m
+CONFIG_XILLYUSB=m
+# CONFIG_XIP_KERNEL is not set
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_MICROLZMA=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_SPARC=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC=y
+# CONFIG_YAMAHA_YAS530 is not set
+CONFIG_YAM=m
+CONFIG_YELLOWFIN=m
+# CONFIG_YENTA is not set
+# CONFIG_YOGABOOK_WMI is not set
+CONFIG_Z3FOLD=y
+CONFIG_ZBUD=y
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZERO_CALL_USED_REGS is not set
+CONFIG_ZEROPLUS_FF=y
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+CONFIG_ZISOFS=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_DFLTCC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZONE_DMA=y
+CONFIG_ZONEFS_FS=m
+CONFIG_ZOPT2201=m
+# CONFIG_ZPA2326 is not set
+# CONFIG_ZRAM_DEF_COMP_842 is not set
+# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set
+# CONFIG_ZRAM_DEF_COMP_LZ4 is not set
+# CONFIG_ZRAM_DEF_COMP_LZO is not set
+CONFIG_ZRAM_DEF_COMP_LZORLE=y
+# CONFIG_ZRAM_DEF_COMP_ZSTD is not set
+CONFIG_ZRAM=m
+# CONFIG_ZRAM_MEMORY_TRACKING is not set
+CONFIG_ZRAM_MULTI_COMP=y
+# CONFIG_ZRAM_TRACK_ENTRY_ACTIME is not set
+# CONFIG_ZRAM_WRITEBACK is not set
+CONFIG_ZSMALLOC_CHAIN_SIZE=8
+# CONFIG_ZSMALLOC_STAT is not set
+CONFIG_ZSMALLOC=y
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set
+CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y
+# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set
+# CONFIG_ZSWAP_DEFAULT_ON is not set
+CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON=y
+CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y
+CONFIG_ZSWAP=y
+# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set
+CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
+# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set
+CONFIG_I2C_NCT6775=m
+CONFIG_ZENIFY=y
+CONFIG_NTSYNC=y
+CONFIG_TCP_CONG_BBR2=m
+CONFIG_SND_SOC_AW87XXX=m
+CONFIG_SCHED_BORE=y
+CONFIG_MIN_BASE_SLICE_NS=1000000
+CONFIG_SCHED_CLASS_EXT=y
+CONFIG_HID_IPTS=m
+CONFIG_HID_ITHC=m
+CONFIG_SURFACE_BOOK1_DGPU_SWITCH=m
+CONFIG_IPC_CLASSES=y
+CONFIG_LEDS_TPS68470=m
+CONFIG_SENSORS_SURFACE_TEMP=m
+CONFIG_AMD_PRIVATE_COLOR=y
+CONFIG_DRM_APPLETBDRM=m
+CONFIG_HID_APPLETB_BL=m
+CONFIG_HID_APPLETB_KBD=m
+CONFIG_HID_APPLE_MAGIC_BACKLIGHT=m
+CONFIG_APPLE_BCE=m
+CONFIG_HID_ASUS_ALLY=m
+CONFIG_ASUS_ARMOURY=m
diff --git a/SOURCES/kernel-s390x-debug-fedora.config b/SOURCES/kernel-s390x-debug-fedora.config
index 08be104..e05c638 100644
--- a/SOURCES/kernel-s390x-debug-fedora.config
+++ b/SOURCES/kernel-s390x-debug-fedora.config
@@ -117,6 +117,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -190,7 +191,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
CONFIG_AFFS_FS=m
@@ -306,7 +307,6 @@ CONFIG_ARM64_ERRATUM_2253138=y
CONFIG_ARM64_USE_LSE_ATOMICS=y
CONFIG_ARM_CMN=m
# CONFIG_ARM_MHU_V2 is not set
-CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
CONFIG_ARM_PTDUMP_DEBUGFS=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set
@@ -418,6 +418,7 @@ CONFIG_AUTOFS_FS=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_BCMA=y
CONFIG_B43_BUSES_BCMA_AND_SSB=y
@@ -455,6 +456,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -489,6 +491,7 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RT5033=m
CONFIG_BATTERY_SAMSUNG_SDI=y
@@ -530,6 +533,7 @@ CONFIG_BCMGENET=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
# CONFIG_BE2ISCSI is not set
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -583,6 +587,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SX8 is not set
@@ -875,6 +880,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
# CONFIG_CHARGER_CROS_USBPD is not set
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1245,6 +1251,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1445,6 +1452,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1478,6 +1486,7 @@ CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -1557,11 +1566,13 @@ CONFIG_DRM_PANEL_DSI_CM=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -1577,6 +1588,7 @@ CONFIG_DRM_PANEL_JDI_R63452=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -1863,6 +1875,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2024,7 +2037,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2068,7 +2083,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2208,7 +2222,7 @@ CONFIG_GPIO_MLXBF2=m
CONFIG_GPIO_MXC=m
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCA9570=m
+# CONFIG_GPIO_PCA9570 is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -2219,6 +2233,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
@@ -2226,6 +2241,7 @@ CONFIG_GPIO_TPS65219=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
CONFIG_GPIO_WM8994=m
@@ -2572,6 +2588,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -2720,6 +2737,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -2730,6 +2748,7 @@ CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3127,6 +3146,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3228,6 +3248,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -3267,9 +3288,9 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
-CONFIG_LEDS_GPIO=m
CONFIG_LEDS_GROUP_MULTICOLOR=m
# CONFIG_LEDS_IS31FL319X is not set
CONFIG_LEDS_IS31FL32XX=m
@@ -3297,8 +3318,6 @@ CONFIG_LEDS_MLXREG=m
CONFIG_LEDS_NCP5623=m
CONFIG_LEDS_NIC78BX=m
# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_PCA9532=m
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_PCA995X=m
@@ -3309,10 +3328,10 @@ CONFIG_LEDS_REGULATOR=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
-# CONFIG_LEDS_TLC591XX is not set
CONFIG_LEDS_TRIGGER_ACTIVITY=m
CONFIG_LEDS_TRIGGER_AUDIO=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
@@ -3322,6 +3341,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3556,7 +3576,7 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_CEC_RC=y
CONFIG_MEDIA_CEC_SUPPORT=y
CONFIG_MEDIA_CONTROLLER_DVB=y
-CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER is not set
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_PCI_SUPPORT=y
CONFIG_MEDIA_PLATFORM_DRIVERS=y
@@ -3582,6 +3602,7 @@ CONFIG_MEGARAID_MM=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3606,6 +3627,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3621,6 +3643,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BD9571MWV is not set
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -3684,6 +3708,7 @@ CONFIG_MFD_MAX77714=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4154,6 +4179,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -4258,8 +4284,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4366,6 +4394,7 @@ CONFIG_NET_VENDOR_GOOGLE=y
CONFIG_NET_VENDOR_LITEX=y
# CONFIG_NET_VENDOR_MARVELL is not set
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
# CONFIG_NET_VENDOR_MICREL is not set
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -4670,6 +4699,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4693,6 +4723,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OF_FPGA_REGION=m
# CONFIG_OF is not set
@@ -4839,6 +4870,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4966,6 +4998,8 @@ CONFIG_POWERCAP=y
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_VEXPRESS is not set
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5068,10 +5102,12 @@ CONFIG_PTP_DFL_TOD=m
# CONFIG_PVPANIC_PCI is not set
CONFIG_PVPANIC=y
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
# CONFIG_PWM_CLK is not set
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM is not set
CONFIG_PWM_OMAP_DMTIMER=m
@@ -5096,6 +5132,7 @@ CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_LMH is not set
# CONFIG_QCOM_OCMEM is not set
CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_QCOM_SPM is not set
@@ -5218,10 +5255,12 @@ CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_KUNIT=m
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -5329,7 +5368,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
# CONFIG_RFKILL is not set
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -5373,6 +5414,7 @@ CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_TTY=m
# CONFIG_RPMSG_VIRTIO is not set
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -5504,8 +5546,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -5549,6 +5592,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5810,6 +5860,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -5925,10 +5976,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -5974,6 +6029,8 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -6113,6 +6170,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6222,6 +6280,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6333,6 +6392,7 @@ CONFIG_SND_SOC_ADI=m
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -6377,6 +6437,7 @@ CONFIG_SND_SOC_CS35L45_I2C=m
CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
@@ -6395,6 +6456,7 @@ CONFIG_SND_SOC_CS42L83=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6403,6 +6465,7 @@ CONFIG_SND_SOC_CX2072X=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
# CONFIG_SND_SOC_ES8316 is not set
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6572,6 +6635,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5659=m
@@ -6709,6 +6773,7 @@ CONFIG_SND_SOC_TSCS42XX=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
# CONFIG_SND_SOC_WCD938X_SDW is not set
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -6827,6 +6892,7 @@ CONFIG_SPI_AX88796C=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
@@ -7054,6 +7120,7 @@ CONFIG_TCP_MD5SIG=y
CONFIG_TDX_GUEST_DRIVER=m
CONFIG_TEE=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -7134,6 +7201,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -7767,6 +7835,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7791,6 +7860,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7880,6 +7950,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -7889,6 +7960,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -7907,6 +7980,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -7926,6 +8000,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MGB4 is not set
CONFIG_VIDEO_ML86V7667=m
@@ -7978,6 +8054,7 @@ CONFIG_VIDEO_OV9734=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
CONFIG_VIDEO_RDACM20=m
# CONFIG_VIDEO_RDACM21 is not set
CONFIG_VIDEO_RJ54N1=m
@@ -8043,6 +8120,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -8337,7 +8415,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-s390x-debug-rhel.config b/SOURCES/kernel-s390x-debug-rhel.config
index dba2e6e..79a0f2c 100644
--- a/SOURCES/kernel-s390x-debug-rhel.config
+++ b/SOURCES/kernel-s390x-debug-rhel.config
@@ -98,6 +98,7 @@ CONFIG_ACPI_VIDEO=m
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -374,6 +375,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -387,6 +389,7 @@ CONFIG_AX88796B_PHY=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -411,6 +414,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -480,6 +484,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -858,6 +863,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
CONFIG_COMPAT=y
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -990,7 +996,6 @@ CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1096,6 +1101,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1220,6 +1226,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1235,11 +1242,10 @@ CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
CONFIG_DIAG288_WATCHDOG=m
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
CONFIG_DMA_API_DEBUG_SG=y
CONFIG_DMA_API_DEBUG=y
@@ -1297,6 +1303,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1312,7 +1319,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1328,6 +1335,7 @@ CONFIG_DRM_AMD_DC=y
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1367,6 +1375,7 @@ CONFIG_DRM_HYPERV=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1414,11 +1423,13 @@ CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1433,6 +1444,7 @@ CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1658,6 +1670,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_DEBUG=y
CONFIG_EDAC_DMC520=m
@@ -1695,10 +1708,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1706,10 +1722,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
# CONFIG_ETHOC is not set
CONFIG_ETHTOOL_NETLINK=y
@@ -1806,6 +1826,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1865,17 +1886,17 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -1945,8 +1966,7 @@ CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2014,6 +2034,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2021,6 +2042,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2353,7 +2375,7 @@ CONFIG_I40EVF=m
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_IBM_PARTITION=y
@@ -2367,6 +2389,7 @@ CONFIG_ICE_SWITCHDEV=y
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2577,6 +2600,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -2866,6 +2890,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -2947,16 +2972,11 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM=m
CONFIG_KVM_MAX_NR_VCPUS=4096
CONFIG_KVM_PROVE_MMU=y
# CONFIG_KVM_S390_UCONTROL is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
# CONFIG_KXCJK1013 is not set
@@ -2966,6 +2986,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3034,10 +3057,10 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
-# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
CONFIG_LEDS_TRIGGER_AUDIO=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
@@ -3047,6 +3070,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3185,6 +3209,7 @@ CONFIG_MARCH_Z14=y
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
# CONFIG_MARVELL_PHY is not set
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3273,9 +3298,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
# CONFIG_MEDIA_SUPPORT is not set
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3285,6 +3307,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3310,6 +3333,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3323,6 +3347,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3384,6 +3410,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -3865,8 +3892,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -3877,8 +3906,7 @@ CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
# CONFIG_NETIUCV is not set
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -3962,8 +3990,9 @@ CONFIG_NET_VENDOR_GOOGLE=y
# CONFIG_NET_VENDOR_LITEX is not set
# CONFIG_NET_VENDOR_MARVELL is not set
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
# CONFIG_NET_VENDOR_MYRI is not set
@@ -4241,6 +4270,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4259,6 +4289,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4402,6 +4433,7 @@ CONFIG_PCI_P2PDMA=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
# CONFIG_PCI_STUB is not set
@@ -4435,6 +4467,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4443,7 +4476,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_HISI_INNO_USB2 is not set
# CONFIG_PHY_HISTB_COMBPHY is not set
# CONFIG_PHY_LAN966X_SERDES is not set
-# CONFIG_PHYLIB is not set
+CONFIG_PHYLIB=y
# CONFIG_PHY_MAPPHONE_MDM6600 is not set
# CONFIG_PHY_OCELOT_SERDES is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
@@ -4471,6 +4504,8 @@ CONFIG_PID_NS=y
# CONFIG_PINCTRL_CS42L43 is not set
# CONFIG_PINCTRL_CY8C95X0 is not set
# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
@@ -4537,6 +4572,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4638,6 +4675,7 @@ CONFIG_PTP_1588_CLOCK=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM is not set
# CONFIG_PWM_PCA9685 is not set
@@ -4647,13 +4685,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4666,6 +4705,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -4809,6 +4849,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -4841,6 +4882,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -4852,7 +4894,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -4890,6 +4932,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5013,6 +5056,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5052,6 +5096,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5450,9 +5501,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5497,6 +5552,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5627,6 +5683,7 @@ CONFIG_SIGNATURE=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -5730,6 +5787,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -5834,6 +5892,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -5896,6 +5955,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -5904,6 +5964,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6076,6 +6137,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6212,6 +6274,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6329,6 +6392,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6598,6 +6662,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6645,7 +6710,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
CONFIG_TN3215_CONSOLE=y
@@ -7129,6 +7194,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7139,6 +7205,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7149,6 +7216,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7245,6 +7313,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7260,6 +7330,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7279,6 +7350,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7395,6 +7468,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7568,7 +7642,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -7628,7 +7702,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-s390x-fedora.config b/SOURCES/kernel-s390x-fedora.config
index 2ab7209..54b9857 100644
--- a/SOURCES/kernel-s390x-fedora.config
+++ b/SOURCES/kernel-s390x-fedora.config
@@ -117,6 +117,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -190,7 +191,7 @@ CONFIG_ADXL372_I2C=m
CONFIG_ADXL372_SPI=m
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
CONFIG_AFFS_FS=m
@@ -306,7 +307,6 @@ CONFIG_ARM64_ERRATUM_2253138=y
CONFIG_ARM64_USE_LSE_ATOMICS=y
CONFIG_ARM_CMN=m
# CONFIG_ARM_MHU_V2 is not set
-CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set
# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
@@ -416,6 +416,7 @@ CONFIG_AUTOFS_FS=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
CONFIG_B43_BCMA_PIO=y
CONFIG_B43_BCMA=y
CONFIG_B43_BUSES_BCMA_AND_SSB=y
@@ -453,6 +454,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -487,6 +489,7 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RT5033=m
CONFIG_BATTERY_SAMSUNG_SDI=y
@@ -528,6 +531,7 @@ CONFIG_BCMGENET=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
# CONFIG_BE2ISCSI is not set
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -581,6 +585,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SX8 is not set
@@ -873,6 +878,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
# CONFIG_CHARGER_CROS_USBPD is not set
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1243,6 +1249,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
CONFIG_DA311=m
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1434,6 +1441,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1467,6 +1475,7 @@ CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -1546,11 +1555,13 @@ CONFIG_DRM_PANEL_DSI_CM=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -1566,6 +1577,7 @@ CONFIG_DRM_PANEL_JDI_R63452=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -1852,6 +1864,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2005,7 +2018,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -2049,7 +2064,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2189,7 +2203,7 @@ CONFIG_GPIO_MLXBF2=m
CONFIG_GPIO_MXC=m
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCA9570=m
+# CONFIG_GPIO_PCA9570 is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -2200,6 +2214,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
@@ -2207,6 +2222,7 @@ CONFIG_GPIO_TPS65219=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
CONFIG_GPIO_WM8994=m
@@ -2552,6 +2568,7 @@ CONFIG_ICPLUS_PHY=m
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
@@ -2700,6 +2717,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -2710,6 +2728,7 @@ CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3101,6 +3120,7 @@ CONFIG_KALLSYMS=y
# CONFIG_KCOV is not set
# CONFIG_KCSAN is not set
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3202,6 +3222,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -3241,9 +3262,9 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
-CONFIG_LEDS_GPIO=m
CONFIG_LEDS_GROUP_MULTICOLOR=m
# CONFIG_LEDS_IS31FL319X is not set
CONFIG_LEDS_IS31FL32XX=m
@@ -3271,8 +3292,6 @@ CONFIG_LEDS_MLXREG=m
CONFIG_LEDS_NCP5623=m
CONFIG_LEDS_NIC78BX=m
# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_PCA9532=m
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_PCA995X=m
@@ -3283,10 +3302,10 @@ CONFIG_LEDS_REGULATOR=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
-# CONFIG_LEDS_TLC591XX is not set
CONFIG_LEDS_TRIGGER_ACTIVITY=m
CONFIG_LEDS_TRIGGER_AUDIO=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
@@ -3296,6 +3315,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3529,7 +3549,7 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_CEC_RC=y
CONFIG_MEDIA_CEC_SUPPORT=y
CONFIG_MEDIA_CONTROLLER_DVB=y
-CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER is not set
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_PCI_SUPPORT=y
CONFIG_MEDIA_PLATFORM_DRIVERS=y
@@ -3555,6 +3575,7 @@ CONFIG_MEGARAID_MM=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3579,6 +3600,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3594,6 +3616,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BD9571MWV is not set
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS5535 is not set
@@ -3657,6 +3681,7 @@ CONFIG_MFD_MAX77714=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4126,6 +4151,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -4230,8 +4256,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4338,6 +4366,7 @@ CONFIG_NET_VENDOR_GOOGLE=y
CONFIG_NET_VENDOR_LITEX=y
# CONFIG_NET_VENDOR_MARVELL is not set
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
# CONFIG_NET_VENDOR_MICREL is not set
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -4642,6 +4671,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4665,6 +4695,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OF_FPGA_REGION=m
# CONFIG_OF is not set
@@ -4810,6 +4841,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4937,6 +4969,8 @@ CONFIG_POWERCAP=y
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_VEXPRESS is not set
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5039,10 +5073,12 @@ CONFIG_PTP_DFL_TOD=m
# CONFIG_PVPANIC_PCI is not set
CONFIG_PVPANIC=y
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
# CONFIG_PWM_CLK is not set
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM is not set
CONFIG_PWM_OMAP_DMTIMER=m
@@ -5067,6 +5103,7 @@ CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_LMH is not set
# CONFIG_QCOM_OCMEM is not set
CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_QCOM_SPM is not set
@@ -5189,10 +5226,12 @@ CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_KUNIT=m
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_AW37503=m
CONFIG_REGULATOR_BD9571MWV=m
+CONFIG_REGULATOR_BD96801=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -5300,7 +5339,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
# CONFIG_RFKILL is not set
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -5344,6 +5385,7 @@ CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_TTY=m
# CONFIG_RPMSG_VIRTIO is not set
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -5475,8 +5517,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -5520,6 +5563,13 @@ CONFIG_RTW89_8922AE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5781,6 +5831,7 @@ CONFIG_SENSORS_BPA_RS600=m
CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
CONFIG_SENSORS_DPS920AB=m
@@ -5896,10 +5947,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -5945,6 +6000,8 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -6084,6 +6141,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6193,6 +6251,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6303,6 +6362,7 @@ CONFIG_SND_SOC_ADI=m
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -6347,6 +6407,7 @@ CONFIG_SND_SOC_CS35L45_I2C=m
CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
@@ -6365,6 +6426,7 @@ CONFIG_SND_SOC_CS42L83=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6373,6 +6435,7 @@ CONFIG_SND_SOC_CX2072X=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
# CONFIG_SND_SOC_ES8316 is not set
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6542,6 +6605,7 @@ CONFIG_SND_SOC_RT1017_SDCA_SDW=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5659=m
@@ -6678,6 +6742,7 @@ CONFIG_SND_SOC_TSCS42XX=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
# CONFIG_SND_SOC_WCD938X_SDW is not set
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -6796,6 +6861,7 @@ CONFIG_SPI_AX88796C=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
+CONFIG_SPI_CH341=m
# CONFIG_SPI_CS42L43 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
@@ -7023,6 +7089,7 @@ CONFIG_TCP_MD5SIG=y
CONFIG_TDX_GUEST_DRIVER=m
CONFIG_TEE=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -7103,6 +7170,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -7736,6 +7804,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7760,6 +7829,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7849,6 +7919,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -7858,6 +7929,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -7876,6 +7949,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -7895,6 +7969,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MGB4 is not set
CONFIG_VIDEO_ML86V7667=m
@@ -7947,6 +8023,7 @@ CONFIG_VIDEO_OV9734=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
CONFIG_VIDEO_RDACM20=m
# CONFIG_VIDEO_RDACM21 is not set
CONFIG_VIDEO_RJ54N1=m
@@ -8012,6 +8089,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -8306,7 +8384,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-s390x-rhel.config b/SOURCES/kernel-s390x-rhel.config
index 893cdd0..3861a37 100644
--- a/SOURCES/kernel-s390x-rhel.config
+++ b/SOURCES/kernel-s390x-rhel.config
@@ -98,6 +98,7 @@ CONFIG_ACPI_VIDEO=m
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -374,6 +375,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -387,6 +389,7 @@ CONFIG_AX88796B_PHY=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -411,6 +414,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -480,6 +484,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -858,6 +863,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
CONFIG_COMPAT=y
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -990,7 +996,6 @@ CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1096,6 +1101,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1212,6 +1218,7 @@ CONFIG_DEFAULT_NET_SCH="fq_codel"
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEV_DAX_CXL=m
@@ -1227,11 +1234,10 @@ CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
CONFIG_DIAG288_WATCHDOG=m
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_DMA_API_DEBUG_SG is not set
@@ -1289,6 +1295,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1304,7 +1311,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1320,6 +1327,7 @@ CONFIG_DRM_AMD_DC=y
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1359,6 +1367,7 @@ CONFIG_DRM_HYPERV=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1406,11 +1415,13 @@ CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1425,6 +1436,7 @@ CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1650,6 +1662,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DMC520=m
@@ -1687,10 +1700,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1698,10 +1714,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
# CONFIG_ETHOC is not set
CONFIG_ETHTOOL_NETLINK=y
@@ -1790,6 +1810,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1849,17 +1870,17 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -1929,8 +1950,7 @@ CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -1998,6 +2018,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2005,6 +2026,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2337,7 +2359,7 @@ CONFIG_I40EVF=m
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_IBM_PARTITION=y
@@ -2351,6 +2373,7 @@ CONFIG_ICE_SWITCHDEV=y
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2561,6 +2584,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -2846,6 +2870,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -2927,16 +2952,11 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
CONFIG_KUNIT=m
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
CONFIG_KVM=m
CONFIG_KVM_MAX_NR_VCPUS=4096
# CONFIG_KVM_PROVE_MMU is not set
# CONFIG_KVM_S390_UCONTROL is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
# CONFIG_KXCJK1013 is not set
@@ -2946,6 +2966,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3014,10 +3037,10 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
-# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
CONFIG_LEDS_TRIGGER_AUDIO=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
@@ -3027,6 +3050,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3165,6 +3189,7 @@ CONFIG_MARCH_Z14=y
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
# CONFIG_MARVELL_PHY is not set
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3253,9 +3278,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
# CONFIG_MEDIA_SUPPORT is not set
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3265,6 +3287,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3290,6 +3313,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3303,6 +3327,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3364,6 +3390,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -3845,8 +3872,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -3857,8 +3886,7 @@ CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
# CONFIG_NETIUCV is not set
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -3942,8 +3970,9 @@ CONFIG_NET_VENDOR_GOOGLE=y
# CONFIG_NET_VENDOR_LITEX is not set
# CONFIG_NET_VENDOR_MARVELL is not set
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
# CONFIG_NET_VENDOR_MYRI is not set
@@ -4221,6 +4250,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4239,6 +4269,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4381,6 +4412,7 @@ CONFIG_PCI_P2PDMA=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
# CONFIG_PCI_STUB is not set
@@ -4414,6 +4446,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4422,7 +4455,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_HISI_INNO_USB2 is not set
# CONFIG_PHY_HISTB_COMBPHY is not set
# CONFIG_PHY_LAN966X_SERDES is not set
-# CONFIG_PHYLIB is not set
+CONFIG_PHYLIB=y
# CONFIG_PHY_MAPPHONE_MDM6600 is not set
# CONFIG_PHY_OCELOT_SERDES is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
@@ -4450,6 +4483,8 @@ CONFIG_PID_NS=y
# CONFIG_PINCTRL_CS42L43 is not set
# CONFIG_PINCTRL_CY8C95X0 is not set
# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
@@ -4516,6 +4551,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4617,6 +4654,7 @@ CONFIG_PTP_1588_CLOCK=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM is not set
# CONFIG_PWM_PCA9685 is not set
@@ -4626,13 +4664,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4645,6 +4684,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -4788,6 +4828,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -4820,6 +4861,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -4831,7 +4873,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -4869,6 +4911,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -4992,6 +5035,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5031,6 +5075,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5429,9 +5480,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5476,6 +5531,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5606,6 +5662,7 @@ CONFIG_SIGNATURE=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -5709,6 +5766,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -5812,6 +5870,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -5874,6 +5933,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -5882,6 +5942,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6054,6 +6115,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6189,6 +6251,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6306,6 +6369,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6575,6 +6639,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6622,7 +6687,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
CONFIG_TN3215_CONSOLE=y
@@ -7106,6 +7171,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7116,6 +7182,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7126,6 +7193,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7222,6 +7290,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7237,6 +7307,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7256,6 +7327,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7372,6 +7445,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7545,7 +7619,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -7605,7 +7679,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-s390x-zfcpdump-rhel.config b/SOURCES/kernel-s390x-zfcpdump-rhel.config
index 93c6e5f..50d4347 100644
--- a/SOURCES/kernel-s390x-zfcpdump-rhel.config
+++ b/SOURCES/kernel-s390x-zfcpdump-rhel.config
@@ -98,6 +98,7 @@ CONFIG_ACPI_VIDEO=m
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -375,6 +376,7 @@ CONFIG_AUDIT_ARCH=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -388,6 +390,7 @@ CONFIG_AX88796B_PHY=m
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -412,6 +415,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -481,6 +485,7 @@ CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=y
# CONFIG_BLK_DEV_SR is not set
# CONFIG_BLK_DEV_SX8 is not set
@@ -859,6 +864,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
# CONFIG_CONNECTOR is not set
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -991,7 +997,6 @@ CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1097,6 +1102,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1213,6 +1219,7 @@ CONFIG_DEFAULT_SECURITY_DAC=y
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
# CONFIG_DEFAULT_SFQ is not set
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+CONFIG_DELL_PC=m
CONFIG_DELL_WMI_DDV=m
# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_DEV_DAX_CXL=m
@@ -1228,11 +1235,10 @@ CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
CONFIG_DIAG288_WATCHDOG=m
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_DMA_API_DEBUG_SG is not set
@@ -1290,6 +1296,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1305,7 +1312,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1321,6 +1328,7 @@ CONFIG_DRM_AMD_DC=y
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1360,6 +1368,7 @@ CONFIG_DRM_HYPERV=m
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
# CONFIG_DRM_IMX8MP_DW_HDMI_BRIDGE is not set
# CONFIG_DRM_IMX8MP_HDMI_PVI is not set
# CONFIG_DRM_IMX8QM_LDB is not set
@@ -1407,11 +1416,13 @@ CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1426,6 +1437,7 @@ CONFIG_DRM_NOUVEAU_GSP_DEFAULT=y
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1651,6 +1663,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DMC520=m
@@ -1688,10 +1701,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
# CONFIG_ENA_ETHERNET is not set
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=y
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1699,10 +1715,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
# CONFIG_ETHOC is not set
CONFIG_ETHTOOL_NETLINK=y
@@ -1792,6 +1812,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_METRONOME is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1851,7 +1872,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
# CONFIG_FSCACHE is not set
CONFIG_FSCACHE_STATS=y
# CONFIG_FS_DAX is not set
@@ -1862,6 +1882,7 @@ CONFIG_FSCACHE_STATS=y
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -1935,7 +1956,6 @@ CONFIG_GENEVE=m
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
# CONFIG_GFS2_FS is not set
-CONFIG_GFS2_FS_LOCKING_DLM=y
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2003,6 +2023,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=y
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2010,6 +2031,7 @@ CONFIG_GPIO_SIM=y
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2343,7 +2365,7 @@ CONFIG_I40EVF=m
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
CONFIG_IBM_PARTITION=y
@@ -2357,6 +2379,7 @@ CONFIG_ICE_SWITCHDEV=y
# CONFIG_IDLE_INJECT is not set
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
# CONFIG_IEEE802154_AT86RF230 is not set
@@ -2568,6 +2591,7 @@ CONFIG_INTEL_MEI_GSC_PROXY=m
# CONFIG_INTEL_MEI_PXP is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_INTEL_MEI_VSC_HW is not set
+# CONFIG_INTEL_PLR_TPMI is not set
# CONFIG_INTEL_PMC_CORE is not set
# CONFIG_INTEL_PMT_CLASS is not set
# CONFIG_INTEL_PMT_CRASHLOG is not set
@@ -2854,6 +2878,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -2935,16 +2960,11 @@ CONFIG_KUNIT_EXAMPLE_TEST=m
# CONFIG_KUNIT is not set
CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
-CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
-CONFIG_KVM_HYPERV=y
# CONFIG_KVM is not set
CONFIG_KVM_MAX_NR_VCPUS=4096
# CONFIG_KVM_PROVE_MMU is not set
# CONFIG_KVM_S390_UCONTROL is not set
CONFIG_KVM_SMM=y
-CONFIG_KVM_SW_PROTECTED_VM=y
# CONFIG_KVM_WERROR is not set
# CONFIG_KVM_XEN is not set
# CONFIG_KXCJK1013 is not set
@@ -2954,6 +2974,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3022,10 +3045,10 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
-# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
CONFIG_LEDS_TRIGGER_AUDIO=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
@@ -3035,6 +3058,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3174,6 +3198,7 @@ CONFIG_MARCH_Z14=y
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
# CONFIG_MARVELL_PHY is not set
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3262,9 +3287,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
# CONFIG_MEDIA_SUPPORT is not set
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3274,6 +3296,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3299,6 +3322,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3312,6 +3336,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3373,6 +3399,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -3854,8 +3881,10 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
# CONFIG_NETFS_SUPPORT is not set
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -3867,7 +3896,6 @@ CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
# CONFIG_NETIUCV is not set
# CONFIG_NET_KEY is not set
-CONFIG_NET_KEY_MIGRATE=y
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -3952,8 +3980,9 @@ CONFIG_NET_VENDOR_GOOGLE=y
# CONFIG_NET_VENDOR_LITEX is not set
# CONFIG_NET_VENDOR_MARVELL is not set
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
# CONFIG_NET_VENDOR_MYRI is not set
@@ -4232,6 +4261,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
# CONFIG_NVME_TARGET is not set
@@ -4250,6 +4280,7 @@ CONFIG_NVME_TCP_TLS=y
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4393,6 +4424,7 @@ CONFIG_PCI_P2PDMA=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
# CONFIG_PCI_STUB is not set
@@ -4425,6 +4457,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4433,7 +4466,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_HISI_INNO_USB2 is not set
# CONFIG_PHY_HISTB_COMBPHY is not set
# CONFIG_PHY_LAN966X_SERDES is not set
-# CONFIG_PHYLIB is not set
+CONFIG_PHYLIB=y
# CONFIG_PHY_MAPPHONE_MDM6600 is not set
# CONFIG_PHY_OCELOT_SERDES is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
@@ -4461,6 +4494,8 @@ CONFIG_PID_NS=y
# CONFIG_PINCTRL_CS42L43 is not set
# CONFIG_PINCTRL_CY8C95X0 is not set
# CONFIG_PINCTRL_EQUILIBRIUM is not set
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
@@ -4527,6 +4562,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4629,6 +4666,7 @@ CONFIG_PTP_1588_CLOCK=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
# CONFIG_PWM is not set
# CONFIG_PWM_PCA9685 is not set
@@ -4638,13 +4676,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4657,6 +4696,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -4800,6 +4840,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -4832,6 +4873,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -4843,7 +4885,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
# CONFIG_RFKILL is not set
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -4881,6 +4923,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5004,6 +5047,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5044,6 +5088,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5053,7 +5104,7 @@ CONFIG_RXKAD=y
CONFIG_RXPERF=m
# CONFIG_S390_GUEST is not set
# CONFIG_S390_HYPFS_FS is not set
-CONFIG_S390_HYPFS=y
+# CONFIG_S390_HYPFS is not set
# CONFIG_S390_KPROBES_SANITY_TEST is not set
# CONFIG_S390_MODULES_SANITY_TEST is not set
CONFIG_S390_PRNG=y
@@ -5445,9 +5496,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5492,6 +5547,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5622,6 +5678,7 @@ CONFIG_SIGNALFD=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -5725,6 +5782,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -5828,6 +5886,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -5890,6 +5949,7 @@ CONFIG_SND_SOC_CARD_KUNIT_TEST=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -5898,6 +5958,7 @@ CONFIG_SND_SOC_CX2072X=m
# CONFIG_SND_SOC_DMIC is not set
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8326 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6070,6 +6131,7 @@ CONFIG_SND_SOC_MAX98927=m
# CONFIG_SND_SOC_RT1308_SDW is not set
# CONFIG_SND_SOC_RT1316_SDW is not set
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6205,6 +6267,7 @@ CONFIG_SND_SOC_TOPOLOGY_KUNIT_TEST=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6322,6 +6385,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6596,6 +6660,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6644,7 +6709,7 @@ CONFIG_TLS=m
CONFIG_TMPFS_INODE64=y
# CONFIG_TMPFS is not set
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TN3215_CONSOLE=y
CONFIG_TN3215=y
@@ -7128,6 +7193,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7138,6 +7204,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7148,6 +7215,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7244,6 +7312,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7259,6 +7329,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7278,6 +7349,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7394,6 +7467,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7567,7 +7641,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -7627,7 +7701,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-x86_64-debug-fedora.config b/SOURCES/kernel-x86_64-debug-fedora.config
index d67dfc7..9dbd8f8 100644
--- a/SOURCES/kernel-x86_64-debug-fedora.config
+++ b/SOURCES/kernel-x86_64-debug-fedora.config
@@ -135,6 +135,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -209,7 +210,7 @@ CONFIG_ADV_SWBUTTON=m
# CONFIG_ADXL372_SPI is not set
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
CONFIG_AFFS_FS=m
@@ -344,7 +345,6 @@ CONFIG_ARM64_ERRATUM_2253138=y
CONFIG_ARM64_USE_LSE_ATOMICS=y
CONFIG_ARM_CMN=m
# CONFIG_ARM_MHU_V2 is not set
-CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
CONFIG_ARM_PTDUMP_DEBUGFS=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE is not set
@@ -460,6 +460,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
# CONFIG_AXP20X_ADC is not set
# CONFIG_AXP20X_POWER is not set
CONFIG_AXP288_ADC=m
@@ -503,6 +504,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -540,6 +542,7 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RT5033=m
CONFIG_BATTERY_SAMSUNG_SDI=y
@@ -581,6 +584,7 @@ CONFIG_BCMGENET=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -634,6 +638,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SX8=m
@@ -928,6 +933,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
CONFIG_CHARGER_BQ25890=m
# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
CONFIG_CHARGER_CROS_USBPD=m
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1349,6 +1355,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1470,6 +1477,7 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_PC=m
CONFIG_DELL_RBTN=m
# CONFIG_DELL_RBU is not set
CONFIG_DELL_SMBIOS=m
@@ -1569,6 +1577,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1606,6 +1615,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -1667,6 +1677,7 @@ CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
CONFIG_DRM_I915_PXP=y
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
# CONFIG_DRM_I915_SELFTEST is not set
CONFIG_DRM_I915_STOP_TIMEOUT=100
@@ -1716,11 +1727,13 @@ CONFIG_DRM_PANEL_DSI_CM=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -1736,6 +1749,7 @@ CONFIG_DRM_PANEL_JDI_R63452=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -2057,6 +2071,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2182,6 +2197,7 @@ CONFIG_FB_EFI=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2222,7 +2238,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE_KUNIT_DEVICE_ATTRIBUTE_TEST is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
CONFIG_FIREWIRE_KUNIT_UAPI_TEST=m
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_NET=m
@@ -2272,7 +2290,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2427,7 +2444,7 @@ CONFIG_GPIO_MLXBF2=m
CONFIG_GPIO_MXC=m
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCA9570=m
+# CONFIG_GPIO_PCA9570 is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -2439,6 +2456,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
@@ -2447,6 +2465,7 @@ CONFIG_GPIO_TPS68470=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
CONFIG_GPIO_WHISKEY_COVE=m
@@ -2833,6 +2852,7 @@ CONFIG_IDEAPAD_LAPTOP=m
CONFIG_IDLE_INJECT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IE6XX_WDT=m
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
@@ -2989,6 +3009,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -3001,6 +3022,7 @@ CONFIG_INPUT_AXP20X_PEK=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3112,6 +3134,7 @@ CONFIG_INTEL_MRFLD_ADC=m
CONFIG_INTEL_MRFLD_PWRBTN=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_INTEL_PLR_TPMI=m
CONFIG_INTEL_PMC_CORE=m
CONFIG_INTEL_PMT_CLASS=m
CONFIG_INTEL_PMT_CRASHLOG=m
@@ -3480,6 +3503,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_LZ4 is not set
@@ -3592,6 +3616,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -3632,6 +3657,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
CONFIG_LEDS_GPIO=m
@@ -3663,8 +3689,7 @@ CONFIG_LEDS_MLXREG=m
CONFIG_LEDS_NCP5623=m
CONFIG_LEDS_NIC78BX=m
# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_PCA9532=m
+# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_PCA995X=m
@@ -3675,6 +3700,7 @@ CONFIG_LEDS_PWM_MULTICOLOR=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3688,6 +3714,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3946,6 +3973,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3970,6 +3998,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3986,6 +4015,8 @@ CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_DEV=m
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS47L24 is not set
@@ -4054,6 +4085,7 @@ CONFIG_MFD_MAX77714=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4559,6 +4591,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -4663,8 +4696,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4771,6 +4806,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -5091,6 +5127,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -5115,6 +5152,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OF_FPGA_REGION=m
# CONFIG_OF is not set
@@ -5280,6 +5318,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5453,6 +5492,8 @@ CONFIG_POWERCAP=y
CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5559,12 +5600,14 @@ CONFIG_PVPANIC_MMIO=m
# CONFIG_PVPANIC_PCI is not set
CONFIG_PVPANIC=y
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
# CONFIG_PWM_CLK is not set
CONFIG_PWM_CRC=y
CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM_INTEL_LGM is not set
CONFIG_PWM_LPSS_PCI=m
@@ -5592,6 +5635,7 @@ CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_LMH is not set
# CONFIG_QCOM_OCMEM is not set
CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_QCOM_SPM is not set
@@ -5711,6 +5755,7 @@ CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_KUNIT=m
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_ARIZONA_LDO1=m
@@ -5718,6 +5763,7 @@ CONFIG_REGULATOR_ARIZONA_MICSUPP=m
CONFIG_REGULATOR_AW37503=m
# CONFIG_REGULATOR_AXP20X is not set
# CONFIG_REGULATOR_BD9571MWV is not set
+CONFIG_REGULATOR_BD96801=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -5825,7 +5871,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -5869,6 +5917,7 @@ CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_TTY=m
# CONFIG_RPMSG_VIRTIO is not set
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -6001,8 +6050,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -6046,6 +6096,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -6306,6 +6363,7 @@ CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELL_SMM=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
@@ -6429,10 +6487,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -6479,6 +6541,8 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -6634,6 +6698,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6750,6 +6815,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6862,6 +6928,7 @@ CONFIG_SND_SOC_ADI=m
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -6914,6 +6981,7 @@ CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SDW=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
@@ -6932,6 +7000,7 @@ CONFIG_SND_SOC_CS42L83=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6940,6 +7009,7 @@ CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8328_I2C=m
@@ -7115,6 +7185,7 @@ CONFIG_SND_SOC_RT1308=m
CONFIG_SND_SOC_RT1308_SDW=m
CONFIG_SND_SOC_RT1316_SDW=m
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5659=m
@@ -7258,6 +7329,7 @@ CONFIG_SND_SOC_TSCS42XX=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
# CONFIG_SND_SOC_WCD938X_SDW is not set
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -7385,7 +7457,8 @@ CONFIG_SPI_AX88796C=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
-# CONFIG_SPI_CS42L43 is not set
+CONFIG_SPI_CH341=m
+CONFIG_SPI_CS42L43=m
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_DLN2=m
@@ -7627,6 +7700,7 @@ CONFIG_TCP_MD5SIG=y
CONFIG_TDX_GUEST_DRIVER=m
CONFIG_TEE=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -7714,6 +7788,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -8346,6 +8421,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -8373,6 +8449,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -8464,6 +8541,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -8474,6 +8552,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -8492,6 +8572,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -8513,6 +8594,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MGB4 is not set
CONFIG_VIDEO_ML86V7667=m
@@ -8565,6 +8648,7 @@ CONFIG_VIDEO_OV9734=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
CONFIG_VIDEO_RDACM20=m
# CONFIG_VIDEO_RDACM21 is not set
CONFIG_VIDEO_RJ54N1=m
@@ -8630,6 +8714,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -9034,7 +9119,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-x86_64-debug-rhel.config b/SOURCES/kernel-x86_64-debug-rhel.config
index 190f7fc..8990219 100644
--- a/SOURCES/kernel-x86_64-debug-rhel.config
+++ b/SOURCES/kernel-x86_64-debug-rhel.config
@@ -116,6 +116,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -402,6 +403,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -416,6 +418,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -440,6 +443,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -509,6 +513,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -888,6 +893,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1043,7 +1049,6 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1157,6 +1162,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1281,6 +1287,7 @@ CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_PC=m
CONFIG_DELL_RBTN=m
CONFIG_DELL_RBU=m
CONFIG_DELL_SMBIOS=m
@@ -1307,12 +1314,11 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
CONFIG_DL2K=m
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
CONFIG_DMA_API_DEBUG_SG=y
CONFIG_DMA_API_DEBUG=y
@@ -1370,6 +1376,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1385,7 +1392,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1403,6 +1410,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1461,6 +1469,7 @@ CONFIG_DRM_I915=m
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
# CONFIG_DRM_I915_SELFTEST is not set
CONFIG_DRM_I915_STOP_TIMEOUT=100
@@ -1516,11 +1525,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1535,6 +1546,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1761,6 +1773,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_AMD64=m
CONFIG_EDAC_DEBUG=y
@@ -1827,10 +1840,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1838,10 +1854,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -1933,6 +1953,7 @@ CONFIG_FB_EFI=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1994,17 +2015,17 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -2078,8 +2099,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
# CONFIG_GENWQE is not set
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2148,6 +2168,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2155,6 +2176,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2512,13 +2534,13 @@ CONFIG_I2C=y
CONFIG_I40E_DCB=y
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
CONFIG_IA32_EMULATION=y
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
# CONFIG_IBM_RTL is not set
@@ -2533,6 +2555,7 @@ CONFIG_IDEAPAD_LAPTOP=m
CONFIG_IDLE_INJECT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IE6XX_WDT is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
@@ -2769,6 +2792,7 @@ CONFIG_INTEL_MEI_ME=m
CONFIG_INTEL_MEI_WDT=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_PCH_THERMAL=m
+# CONFIG_INTEL_PLR_TPMI is not set
CONFIG_INTEL_PMC_CORE=m
CONFIG_INTEL_PMT_CLASS=m
CONFIG_INTEL_PMT_CRASHLOG=m
@@ -3078,6 +3102,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3161,8 +3186,6 @@ CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
CONFIG_KVM_GUEST=y
CONFIG_KVM_HYPERV=y
CONFIG_KVM_INTEL=m
@@ -3182,6 +3205,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3249,6 +3275,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3262,6 +3289,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3394,6 +3422,7 @@ CONFIG_MANTIS_CORE=m
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_PHY=m
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3483,9 +3512,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3495,6 +3521,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3520,6 +3547,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3533,6 +3561,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3597,6 +3627,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4103,8 +4134,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4114,8 +4147,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4199,8 +4231,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4481,6 +4514,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4500,6 +4534,7 @@ CONFIG_NVSW_SN2201=m
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4652,6 +4687,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4689,6 +4725,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4733,7 +4770,7 @@ CONFIG_PINCTRL_BROXTON=m
CONFIG_PINCTRL_CANNONLAKE=m
CONFIG_PINCTRL_CEDARFORK=m
# CONFIG_PINCTRL_CHERRYVIEW is not set
-# CONFIG_PINCTRL_CS42L43 is not set
+CONFIG_PINCTRL_CS42L43=m
# CONFIG_PINCTRL_CY8C95X0 is not set
CONFIG_PINCTRL_DENVERTON=m
CONFIG_PINCTRL_ELKHARTLAKE=m
@@ -4741,6 +4778,8 @@ CONFIG_PINCTRL_EMMITSBURG=m
# CONFIG_PINCTRL_EQUILIBRIUM is not set
CONFIG_PINCTRL_GEMINILAKE=m
CONFIG_PINCTRL_ICELAKE=m
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
CONFIG_PINCTRL_INTEL_PLATFORM=m
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
@@ -4820,6 +4859,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4924,6 +4965,7 @@ CONFIG_PVPANIC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
CONFIG_PWM_LPSS_PCI=m
CONFIG_PWM_LPSS_PLATFORM=m
@@ -4935,13 +4977,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4954,6 +4997,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -5008,6 +5052,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
CONFIG_RANDOM32_SELFTEST=y
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5091,6 +5136,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -5123,6 +5169,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -5134,7 +5181,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5172,6 +5219,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5296,6 +5344,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5335,6 +5384,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5719,9 +5775,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5766,6 +5826,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5907,6 +5968,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6008,6 +6070,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6117,6 +6180,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6180,6 +6244,7 @@ CONFIG_SND_SOC_CS42L42_SDW=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6188,6 +6253,7 @@ CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6362,6 +6428,7 @@ CONFIG_SND_SOC_RT1308=m
CONFIG_SND_SOC_RT1308_SDW=m
CONFIG_SND_SOC_RT1316_SDW=m
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6499,6 +6566,7 @@ CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6621,6 +6689,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BUTTERFLY is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6911,6 +6980,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6958,7 +7028,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7434,6 +7504,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7446,6 +7517,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
# CONFIG_VBOXGUEST is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7456,6 +7528,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7551,6 +7624,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7566,6 +7641,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7585,6 +7661,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7701,6 +7779,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7958,7 +8037,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8014,7 +8093,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-x86_64-fedora.config b/SOURCES/kernel-x86_64-fedora.config
index 45cb254..8a32200 100644
--- a/SOURCES/kernel-x86_64-fedora.config
+++ b/SOURCES/kernel-x86_64-fedora.config
@@ -135,6 +135,7 @@ CONFIG_AD7292=m
CONFIG_AD7293=m
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+CONFIG_AD7380=m
CONFIG_AD74115=m
CONFIG_AD74413R=m
# CONFIG_AD7476 is not set
@@ -209,7 +210,7 @@ CONFIG_ADV_SWBUTTON=m
# CONFIG_ADXL372_SPI is not set
CONFIG_ADXRS290=m
# CONFIG_ADXRS450 is not set
-# CONFIG_AF8133J is not set
+CONFIG_AF8133J=m
# CONFIG_AFE4403 is not set
# CONFIG_AFE4404 is not set
CONFIG_AFFS_FS=m
@@ -344,7 +345,6 @@ CONFIG_ARM64_ERRATUM_2253138=y
CONFIG_ARM64_USE_LSE_ATOMICS=y
CONFIG_ARM_CMN=m
# CONFIG_ARM_MHU_V2 is not set
-CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_SMC is not set
# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
@@ -458,6 +458,7 @@ CONFIG_AUXDISPLAY=y
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_AX25=m
CONFIG_AX88796B_PHY=m
+CONFIG_AX88796B_RUST_PHY=y
# CONFIG_AXP20X_ADC is not set
# CONFIG_AXP20X_POWER is not set
CONFIG_AXP288_ADC=m
@@ -501,6 +502,7 @@ CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
CONFIG_BACKLIGHT_LED=m
+CONFIG_BACKLIGHT_LM3509=m
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -538,6 +540,7 @@ CONFIG_BATTERY_CW2015=m
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_MAX1720X=m
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RT5033=m
CONFIG_BATTERY_SAMSUNG_SDI=y
@@ -579,6 +582,7 @@ CONFIG_BCMGENET=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_BCM_VK=m
CONFIG_BCM_VK_TTY=y
+CONFIG_BD96801_WATCHDOG=m
CONFIG_BE2ISCSI=m
CONFIG_BE2NET_BE2=y
CONFIG_BE2NET_BE3=y
@@ -632,6 +636,7 @@ CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RNBD_CLIENT=m
CONFIG_BLK_DEV_RNBD_SERVER=m
# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_RUST_NULL=m
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SX8=m
@@ -926,6 +931,7 @@ CONFIG_CHARGER_BQ2515X=m
CONFIG_CHARGER_BQ256XX=m
CONFIG_CHARGER_BQ25890=m
# CONFIG_CHARGER_BQ25980 is not set
+CONFIG_CHARGER_CROS_CONTROL=m
CONFIG_CHARGER_CROS_PCHG=m
CONFIG_CHARGER_CROS_USBPD=m
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
@@ -1347,6 +1353,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
CONFIG_DA280=m
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1460,6 +1467,7 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_PC=m
CONFIG_DELL_RBTN=m
# CONFIG_DELL_RBU is not set
CONFIG_DELL_SMBIOS=m
@@ -1558,6 +1566,7 @@ CONFIG_DM_UNSTRIPED=m
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1595,6 +1604,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+CONFIG_DRM_AMD_ISP=y
CONFIG_DRM_AMD_SECURE_DISPLAY=y
CONFIG_DRM_ANALOGIX_ANX6345=m
CONFIG_DRM_ANALOGIX_ANX7625=m
@@ -1656,6 +1666,7 @@ CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
CONFIG_DRM_I915_PXP=y
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
# CONFIG_DRM_I915_SELFTEST is not set
CONFIG_DRM_I915_STOP_TIMEOUT=100
@@ -1705,11 +1716,13 @@ CONFIG_DRM_PANEL_DSI_CM=m
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m
CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m
+CONFIG_DRM_PANEL_HIMAX_HX83102=m
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
CONFIG_DRM_PANEL_ILITEK_ILI9882T=m
CONFIG_DRM_PANEL_INNOLUX_EJ030NA=m
@@ -1725,6 +1738,7 @@ CONFIG_DRM_PANEL_JDI_R63452=m
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+CONFIG_DRM_PANEL_LINCOLNTECH_LCD197=m
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966=m
CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
@@ -2046,6 +2060,7 @@ CONFIG_ENCRYPTED_KEYS=y
# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
CONFIG_ENVELOPE_DETECTOR=m
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -2163,6 +2178,7 @@ CONFIG_FB_EFI=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2203,7 +2219,9 @@ CONFIG_FILE_LOCKING=y
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set
# CONFIG_FIREWIRE_KUNIT_DEVICE_ATTRIBUTE_TEST is not set
+CONFIG_FIREWIRE_KUNIT_OHCI_SERDES_TEST=m
CONFIG_FIREWIRE_KUNIT_PACKET_SERDES_TEST=m
+CONFIG_FIREWIRE_KUNIT_SELF_ID_SEQUENCE_HELPER_TEST=m
CONFIG_FIREWIRE_KUNIT_UAPI_TEST=m
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_NET=m
@@ -2253,7 +2271,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAME_POINTER=y
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
@@ -2408,7 +2425,7 @@ CONFIG_GPIO_MLXBF2=m
CONFIG_GPIO_MXC=m
# CONFIG_GPIO_PCA953X_IRQ is not set
CONFIG_GPIO_PCA953X=m
-CONFIG_GPIO_PCA9570=m
+# CONFIG_GPIO_PCA9570 is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCIE_IDIO_24 is not set
@@ -2420,6 +2437,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
@@ -2428,6 +2446,7 @@ CONFIG_GPIO_TPS68470=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_VIPERBOARD is not set
CONFIG_GPIO_VIRTIO=m
+CONFIG_GPIO_VIRTUSER=m
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
CONFIG_GPIO_WHISKEY_COVE=m
@@ -2813,6 +2832,7 @@ CONFIG_IDEAPAD_LAPTOP=m
CONFIG_IDLE_INJECT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+CONFIG_IDPF_SINGLEQ=y
CONFIG_IE6XX_WDT=m
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_IEEE802154_ADF7242=m
@@ -2969,6 +2989,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_INIT_STACK_ALL_ZERO=y
# CONFIG_INIT_STACK_NONE is not set
CONFIG_INOTIFY_USER=y
+CONFIG_INPUT_88PM886_ONKEY=m
# CONFIG_INPUT_AD714X is not set
# CONFIG_INPUT_ADXL34X is not set
CONFIG_INPUT_APANEL=m
@@ -2981,6 +3002,7 @@ CONFIG_INPUT_AXP20X_PEK=m
CONFIG_INPUT_CM109=m
CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_CMA3000=m
+CONFIG_INPUT_CS40L50_VIBRA=m
# CONFIG_INPUT_DA7280_HAPTICS is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
@@ -3092,6 +3114,7 @@ CONFIG_INTEL_MRFLD_ADC=m
CONFIG_INTEL_MRFLD_PWRBTN=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_INTEL_PLR_TPMI=m
CONFIG_INTEL_PMC_CORE=m
CONFIG_INTEL_PMT_CLASS=m
CONFIG_INTEL_PMT_CRASHLOG=m
@@ -3454,6 +3477,7 @@ CONFIG_KALLSYMS=y
# CONFIG_KCOV is not set
# CONFIG_KCSAN is not set
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_KEBA_CP500=m
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_LZ4 is not set
@@ -3566,6 +3590,7 @@ CONFIG_L2TP=m
CONFIG_L2TP_V3=y
CONFIG_LAN743X=m
CONFIG_LAN966X_DCB=y
+CONFIG_LAN966X_OIC=m
CONFIG_LAN966X_SWITCH=m
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
@@ -3606,6 +3631,7 @@ CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_CR0014114=m
+CONFIG_LEDS_CROS_EC=m
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_EL15203000 is not set
CONFIG_LEDS_GPIO=m
@@ -3637,8 +3663,7 @@ CONFIG_LEDS_MLXREG=m
CONFIG_LEDS_NCP5623=m
CONFIG_LEDS_NIC78BX=m
# CONFIG_LEDS_OT200 is not set
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_PCA9532=m
+# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
CONFIG_LEDS_PCA995X=m
@@ -3649,6 +3674,7 @@ CONFIG_LEDS_PWM_MULTICOLOR=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+CONFIG_LEDS_SY7802=m
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3662,6 +3688,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m
CONFIG_LEDS_TRIGGER_MTD=y
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3920,6 +3947,7 @@ CONFIG_MEGARAID_SAS=m
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3944,6 +3972,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+CONFIG_MFD_88PM886_PMIC=y
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3960,6 +3989,8 @@ CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_DEV=m
+CONFIG_MFD_CS40L50_I2C=m
+CONFIG_MFD_CS40L50_SPI=m
CONFIG_MFD_CS42L43_I2C=m
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_CS47L24 is not set
@@ -4028,6 +4059,7 @@ CONFIG_MFD_MAX77714=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+CONFIG_MFD_ROHM_BD96801=m
CONFIG_MFD_RSMU_I2C=m
CONFIG_MFD_RSMU_SPI=m
CONFIG_MFD_RT4831=m
@@ -4533,6 +4565,7 @@ CONFIG_NET_DSA_TAG_RTL8_4=m
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_SJA1105=m
CONFIG_NET_DSA_TAG_TRAILER=m
+# CONFIG_NET_DSA_TAG_VSC73XX_8021Q is not set
CONFIG_NET_DSA_TAG_XRS700X=m
# CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM is not set
# CONFIG_NET_DSA_VITESSE_VSC73XX_SPI is not set
@@ -4637,8 +4670,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_NET_FOU=m
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4745,6 +4780,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_LITEX=y
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_META=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
@@ -5065,6 +5101,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -5089,6 +5126,7 @@ CONFIG_OCFS2_FS_O2CB=m
# CONFIG_OCFS2_FS_STATS is not set
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCTEON_EP=m
+CONFIG_OCTEONEP_VDPA=m
CONFIG_OCTEON_EP_VF=m
CONFIG_OF_FPGA_REGION=m
# CONFIG_OF is not set
@@ -5253,6 +5291,7 @@ CONFIG_PCI_PASID=y
CONFIG_PCIPCWATCHDOG=m
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+CONFIG_PCI_PWRCTL_PWRSEQ=m
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -5425,6 +5464,8 @@ CONFIG_POWERCAP=y
CONFIG_POWER_RESET_TPS65086=y
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+CONFIG_POWER_SEQUENCING=m
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -5531,12 +5572,14 @@ CONFIG_PVPANIC_MMIO=m
# CONFIG_PVPANIC_PCI is not set
CONFIG_PVPANIC=y
# CONFIG_PWM_ATMEL_TCB is not set
+CONFIG_PWM_AXI_PWMGEN=m
# CONFIG_PWM_CLK is not set
CONFIG_PWM_CRC=y
CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DEBUG is not set
CONFIG_PWM_DWC=m
# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_GPIO=m
CONFIG_PWM_HIBVT=m
# CONFIG_PWM_INTEL_LGM is not set
CONFIG_PWM_LPSS_PCI=m
@@ -5564,6 +5607,7 @@ CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_LMH is not set
# CONFIG_QCOM_OCMEM is not set
CONFIG_QCOM_PBS=m
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set
# CONFIG_QCOM_SCM is not set
# CONFIG_QCOM_SPM is not set
@@ -5683,6 +5727,7 @@ CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_KUNIT=m
CONFIG_REGMAP=y
# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_88PM886=m
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
CONFIG_REGULATOR_ARIZONA_LDO1=m
@@ -5690,6 +5735,7 @@ CONFIG_REGULATOR_ARIZONA_MICSUPP=m
CONFIG_REGULATOR_AW37503=m
# CONFIG_REGULATOR_AXP20X is not set
# CONFIG_REGULATOR_BD9571MWV is not set
+CONFIG_REGULATOR_BD96801=m
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -5797,7 +5843,9 @@ CONFIG_RESOURCE_KUNIT_TEST=m
CONFIG_RFKILL_GPIO=m
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
+CONFIG_RFS_ACCEL=y
# CONFIG_RH_DISABLE_DEPRECATED is not set
+# CONFIG_RHEL_DIFFERENCES is not set
CONFIG_RICHTEK_RTQ6056=m
CONFIG_RING_BUFFER_BENCHMARK=m
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
@@ -5841,6 +5889,7 @@ CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_TTY=m
# CONFIG_RPMSG_VIRTIO is not set
CONFIG_RPR0521=m
+CONFIG_RPS=y
CONFIG_RSEQ=y
CONFIG_RSI_91X=m
CONFIG_RSI_COEX=y
@@ -5973,8 +6022,9 @@ CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
-CONFIG_RTL8192CU=m
+# CONFIG_RTL8192CU is not set
CONFIG_RTL8192DE=m
+CONFIG_RTL8192DU=m
CONFIG_RTL8192EE=m
CONFIG_RTL8192E=m
CONFIG_RTL8192SE=m
@@ -6018,6 +6068,13 @@ CONFIG_RTW89_8922AE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y
+CONFIG_RUST_OVERFLOW_CHECKS=y
+CONFIG_RUST_PHYLIB_ABSTRACTIONS=y
+CONFIG_RUST=y
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -6278,6 +6335,7 @@ CONFIG_SENSORS_CHIPCAP2=m
CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_CORSAIR_CPRO=m
CONFIG_SENSORS_CORSAIR_PSU=m
+CONFIG_SENSORS_CROS_EC=m
CONFIG_SENSORS_DELL_SMM=m
CONFIG_SENSORS_DELTA_AHE50DC_FAN=m
CONFIG_SENSORS_DME1737=m
@@ -6401,10 +6459,14 @@ CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MLXREG_FAN=m
# CONFIG_SENSORS_MP2856 is not set
CONFIG_SENSORS_MP2888=m
+CONFIG_SENSORS_MP2891=m
CONFIG_SENSORS_MP2975=m
CONFIG_SENSORS_MP2975_REGULATOR=y
+CONFIG_SENSORS_MP2993=m
CONFIG_SENSORS_MP5023=m
+CONFIG_SENSORS_MP5920=m
# CONFIG_SENSORS_MP5990 is not set
+CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MPQ7932=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ8785=m
@@ -6451,6 +6513,8 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SPD5118_DETECT=y
+CONFIG_SENSORS_SPD5118=m
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SURFACE_FAN=m
@@ -6606,6 +6670,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6722,6 +6787,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6833,6 +6899,7 @@ CONFIG_SND_SOC_ADI=m
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+CONFIG_SND_SOC_AK4619=m
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
CONFIG_SND_SOC_AK5558=m
@@ -6885,6 +6952,7 @@ CONFIG_SND_SOC_CS35L45_SPI=m
CONFIG_SND_SOC_CS35L56_I2C=m
CONFIG_SND_SOC_CS35L56_SDW=m
CONFIG_SND_SOC_CS35L56_SPI=m
+CONFIG_SND_SOC_CS40L50=m
CONFIG_SND_SOC_CS4234=m
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
@@ -6903,6 +6971,7 @@ CONFIG_SND_SOC_CS42L83=m
CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+CONFIG_SND_SOC_CS530X_I2C=m
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6911,6 +6980,7 @@ CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES7134=m
# CONFIG_SND_SOC_ES7241 is not set
+CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8328_I2C=m
@@ -7086,6 +7156,7 @@ CONFIG_SND_SOC_RT1308=m
CONFIG_SND_SOC_RT1308_SDW=m
CONFIG_SND_SOC_RT1316_SDW=m
CONFIG_SND_SOC_RT1318_SDW=m
+CONFIG_SND_SOC_RT1320_SDW=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5659=m
@@ -7228,6 +7299,7 @@ CONFIG_SND_SOC_TSCS42XX=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD937X_SDW=m
# CONFIG_SND_SOC_WCD938X_SDW is not set
CONFIG_SND_SOC_WCD939X_SDW=m
# CONFIG_SND_SOC_WM8510 is not set
@@ -7355,7 +7427,8 @@ CONFIG_SPI_AX88796C=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
# CONFIG_SPI_CADENCE_XSPI is not set
-# CONFIG_SPI_CS42L43 is not set
+CONFIG_SPI_CH341=m
+CONFIG_SPI_CS42L43=m
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_DLN2=m
@@ -7597,6 +7670,7 @@ CONFIG_TCP_MD5SIG=y
CONFIG_TDX_GUEST_DRIVER=m
CONFIG_TEE=m
CONFIG_TEHUTI=m
+CONFIG_TEHUTI_TN40=m
CONFIG_TELCLOCK=m
CONFIG_TERANETICS_PHY=m
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
@@ -7684,6 +7758,7 @@ CONFIG_TI_ADC128S052=m
# CONFIG_TI_ADC161S626 is not set
CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1100=m
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -8316,6 +8391,7 @@ CONFIG_USB_YUREX=m
# CONFIG_USB_ZERO is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -8343,6 +8419,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
CONFIG_VDPA_USER=m
CONFIG_VEML6030=m
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -8434,6 +8511,7 @@ CONFIG_VIDEO_DW9714=m
CONFIG_VIDEO_DW9719=m
CONFIG_VIDEO_DW9768=m
CONFIG_VIDEO_DW9807_VCM=m
+# CONFIG_VIDEO_E5010_JPEG_ENC is not set
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX=m
@@ -8444,6 +8522,8 @@ CONFIG_VIDEO_ET8EK8=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_GC0308=m
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
CONFIG_VIDEO_GC2145=m
CONFIG_VIDEO_GO7007_LOADER=m
CONFIG_VIDEO_GO7007=m
@@ -8462,6 +8542,7 @@ CONFIG_VIDEO_IMX214=m
CONFIG_VIDEO_IMX219=m
CONFIG_VIDEO_IMX258=m
CONFIG_VIDEO_IMX274=m
+CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX319=m
@@ -8483,6 +8564,8 @@ CONFIG_VIDEO_LM3646=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_MAX9286=m
# CONFIG_VIDEO_MAX96712 is not set
+CONFIG_VIDEO_MAX96714=m
+CONFIG_VIDEO_MAX96717=m
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MGB4 is not set
CONFIG_VIDEO_ML86V7667=m
@@ -8535,6 +8618,7 @@ CONFIG_VIDEO_OV9734=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_RASPBERRYPI_PISP_BE=m
CONFIG_VIDEO_RDACM20=m
# CONFIG_VIDEO_RDACM21 is not set
CONFIG_VIDEO_RJ54N1=m
@@ -8600,6 +8684,7 @@ CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_USBTV=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
CONFIG_VIDEO_VICODEC=m
CONFIG_VIDEO_VIM2M=m
CONFIG_VIDEO_VIMC=m
@@ -9004,7 +9089,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-x86_64-rhel.config b/SOURCES/kernel-x86_64-rhel.config
index 3e78e20..8a9c3e6 100644
--- a/SOURCES/kernel-x86_64-rhel.config
+++ b/SOURCES/kernel-x86_64-rhel.config
@@ -116,6 +116,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -402,6 +403,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -416,6 +418,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -440,6 +443,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -509,6 +513,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -888,6 +893,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1043,7 +1049,6 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1157,6 +1162,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1273,6 +1279,7 @@ CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_PC=m
CONFIG_DELL_RBTN=m
CONFIG_DELL_RBU=m
CONFIG_DELL_SMBIOS=m
@@ -1299,12 +1306,11 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
CONFIG_DL2K=m
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_DMA_API_DEBUG_SG is not set
@@ -1362,6 +1368,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1377,7 +1384,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1395,6 +1402,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1453,6 +1461,7 @@ CONFIG_DRM_I915=m
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
# CONFIG_DRM_I915_SELFTEST is not set
CONFIG_DRM_I915_STOP_TIMEOUT=100
@@ -1508,11 +1517,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1527,6 +1538,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1753,6 +1765,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_DEBUG is not set
@@ -1819,10 +1832,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1830,10 +1846,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -1917,6 +1937,7 @@ CONFIG_FB_EFI=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -1978,17 +1999,17 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -2062,8 +2083,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
# CONFIG_GENWQE is not set
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2132,6 +2152,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2139,6 +2160,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2496,13 +2518,13 @@ CONFIG_I2C=y
CONFIG_I40E_DCB=y
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
CONFIG_IA32_EMULATION=y
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
# CONFIG_IBM_RTL is not set
@@ -2517,6 +2539,7 @@ CONFIG_IDEAPAD_LAPTOP=m
CONFIG_IDLE_INJECT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IE6XX_WDT is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
@@ -2753,6 +2776,7 @@ CONFIG_INTEL_MEI_ME=m
CONFIG_INTEL_MEI_WDT=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_PCH_THERMAL=m
+# CONFIG_INTEL_PLR_TPMI is not set
CONFIG_INTEL_PMC_CORE=m
CONFIG_INTEL_PMT_CLASS=m
CONFIG_INTEL_PMT_CRASHLOG=m
@@ -3058,6 +3082,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3141,8 +3166,6 @@ CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
CONFIG_KVM_GUEST=y
CONFIG_KVM_HYPERV=y
CONFIG_KVM_INTEL=m
@@ -3162,6 +3185,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3229,6 +3255,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3242,6 +3269,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3374,6 +3402,7 @@ CONFIG_MANTIS_CORE=m
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_PHY=m
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3463,9 +3492,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3475,6 +3501,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3500,6 +3527,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3513,6 +3541,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3577,6 +3607,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4083,8 +4114,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4094,8 +4127,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4179,8 +4211,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4461,6 +4494,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4480,6 +4514,7 @@ CONFIG_NVSW_SN2201=m
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4631,6 +4666,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4668,6 +4704,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4712,7 +4749,7 @@ CONFIG_PINCTRL_BROXTON=m
CONFIG_PINCTRL_CANNONLAKE=m
CONFIG_PINCTRL_CEDARFORK=m
# CONFIG_PINCTRL_CHERRYVIEW is not set
-# CONFIG_PINCTRL_CS42L43 is not set
+CONFIG_PINCTRL_CS42L43=m
# CONFIG_PINCTRL_CY8C95X0 is not set
CONFIG_PINCTRL_DENVERTON=m
CONFIG_PINCTRL_ELKHARTLAKE=m
@@ -4720,6 +4757,8 @@ CONFIG_PINCTRL_EMMITSBURG=m
# CONFIG_PINCTRL_EQUILIBRIUM is not set
CONFIG_PINCTRL_GEMINILAKE=m
CONFIG_PINCTRL_ICELAKE=m
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
CONFIG_PINCTRL_INTEL_PLATFORM=m
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
@@ -4798,6 +4837,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4902,6 +4943,7 @@ CONFIG_PVPANIC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
CONFIG_PWM_LPSS_PCI=m
CONFIG_PWM_LPSS_PLATFORM=m
@@ -4913,13 +4955,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4932,6 +4975,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -4986,6 +5030,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5069,6 +5114,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -5101,6 +5147,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -5112,7 +5159,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5150,6 +5197,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5274,6 +5322,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5313,6 +5362,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5697,9 +5753,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5744,6 +5804,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5885,6 +5946,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -5986,6 +6048,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6094,6 +6157,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6157,6 +6221,7 @@ CONFIG_SND_SOC_CS42L42_SDW=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6165,6 +6230,7 @@ CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6339,6 +6405,7 @@ CONFIG_SND_SOC_RT1308=m
CONFIG_SND_SOC_RT1308_SDW=m
CONFIG_SND_SOC_RT1316_SDW=m
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6475,6 +6542,7 @@ CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6597,6 +6665,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BUTTERFLY is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6887,6 +6956,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6934,7 +7004,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7410,6 +7480,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7422,6 +7493,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
# CONFIG_VBOXGUEST is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7432,6 +7504,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7527,6 +7600,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7542,6 +7617,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7561,6 +7637,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7677,6 +7755,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7934,7 +8013,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -7990,7 +8069,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-x86_64-rt-debug-rhel.config b/SOURCES/kernel-x86_64-rt-debug-rhel.config
index 033c113..25273f8 100644
--- a/SOURCES/kernel-x86_64-rt-debug-rhel.config
+++ b/SOURCES/kernel-x86_64-rt-debug-rhel.config
@@ -116,6 +116,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -402,6 +403,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -416,6 +418,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -440,6 +443,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -509,6 +513,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -888,6 +893,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1044,7 +1050,6 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1158,6 +1163,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1283,6 +1289,7 @@ CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_PC=m
CONFIG_DELL_RBTN=m
CONFIG_DELL_RBU=m
CONFIG_DELL_SMBIOS=m
@@ -1309,12 +1316,11 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
CONFIG_DL2K=m
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
CONFIG_DMA_API_DEBUG_SG=y
CONFIG_DMA_API_DEBUG=y
@@ -1372,6 +1378,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1387,7 +1394,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1405,6 +1412,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1463,6 +1471,7 @@ CONFIG_DRM_I915=m
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
# CONFIG_DRM_I915_SELFTEST is not set
CONFIG_DRM_I915_STOP_TIMEOUT=100
@@ -1518,11 +1527,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1537,6 +1548,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1799,6 +1811,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_AMD64=m
CONFIG_EDAC_DEBUG=y
@@ -1865,10 +1878,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1876,10 +1892,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -1971,6 +1991,7 @@ CONFIG_FB_EFI=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2032,17 +2053,17 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -2117,8 +2138,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
# CONFIG_GENWQE is not set
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2187,6 +2207,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2194,6 +2215,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2552,13 +2574,13 @@ CONFIG_I2C=y
CONFIG_I40E_DCB=y
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
CONFIG_IA32_EMULATION=y
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
# CONFIG_IBM_RTL is not set
@@ -2573,6 +2595,7 @@ CONFIG_IDEAPAD_LAPTOP=m
CONFIG_IDLE_INJECT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IE6XX_WDT is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
@@ -2809,6 +2832,7 @@ CONFIG_INTEL_MEI_ME=m
CONFIG_INTEL_MEI_WDT=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_PCH_THERMAL=m
+# CONFIG_INTEL_PLR_TPMI is not set
CONFIG_INTEL_PMC_CORE=m
CONFIG_INTEL_PMT_CLASS=m
CONFIG_INTEL_PMT_CRASHLOG=m
@@ -3118,6 +3142,7 @@ CONFIG_KASAN=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3201,8 +3226,6 @@ CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
CONFIG_KVM_GUEST=y
CONFIG_KVM_HYPERV=y
CONFIG_KVM_INTEL=m
@@ -3222,6 +3245,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
CONFIG_LATENCYTOP=y
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3289,6 +3315,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3302,6 +3329,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3343,7 +3371,7 @@ CONFIG_LLC=m
CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_LOCKDEP_BITS=16
+CONFIG_LOCKDEP_BITS=17
CONFIG_LOCKDEP_CHAINS_BITS=18
CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12
CONFIG_LOCKDEP_STACK_TRACE_BITS=19
@@ -3434,6 +3462,7 @@ CONFIG_MANTIS_CORE=m
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_PHY=m
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3523,14 +3552,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-# CONFIG_MEDIA_TUNER_MAX2165 is not set
-# CONFIG_MEDIA_TUNER_MSI001 is not set
-# CONFIG_MEDIA_TUNER_MT2266 is not set
-# CONFIG_MEDIA_TUNER_MXL301RF is not set
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
-# CONFIG_MEDIA_TUNER_TDA18250 is not set
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3540,6 +3561,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3565,6 +3587,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3578,6 +3601,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3642,6 +3667,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4148,8 +4174,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4159,8 +4187,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4244,8 +4271,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4526,6 +4554,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4545,6 +4574,7 @@ CONFIG_NVSW_SN2201=m
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4697,6 +4727,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4734,6 +4765,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4778,7 +4810,7 @@ CONFIG_PINCTRL_BROXTON=m
CONFIG_PINCTRL_CANNONLAKE=m
CONFIG_PINCTRL_CEDARFORK=m
# CONFIG_PINCTRL_CHERRYVIEW is not set
-# CONFIG_PINCTRL_CS42L43 is not set
+CONFIG_PINCTRL_CS42L43=m
# CONFIG_PINCTRL_CY8C95X0 is not set
CONFIG_PINCTRL_DENVERTON=m
CONFIG_PINCTRL_ELKHARTLAKE=m
@@ -4786,6 +4818,8 @@ CONFIG_PINCTRL_EMMITSBURG=m
# CONFIG_PINCTRL_EQUILIBRIUM is not set
CONFIG_PINCTRL_GEMINILAKE=m
CONFIG_PINCTRL_ICELAKE=m
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
CONFIG_PINCTRL_INTEL_PLATFORM=m
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
@@ -4865,6 +4899,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4973,6 +5009,7 @@ CONFIG_PVPANIC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
CONFIG_PWM_LPSS_PCI=m
CONFIG_PWM_LPSS_PLATFORM=m
@@ -4984,13 +5021,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -5003,6 +5041,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -5057,6 +5096,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
CONFIG_RANDOM32_SELFTEST=y
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5143,6 +5183,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -5175,6 +5216,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -5186,7 +5228,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5224,6 +5266,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5348,6 +5391,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5387,6 +5431,13 @@ CONFIG_RTW89_DEBUGFS=y
CONFIG_RTW89_DEBUGMSG=y
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5771,9 +5822,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5818,6 +5873,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5959,6 +6015,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6061,6 +6118,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6170,6 +6228,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6233,6 +6292,7 @@ CONFIG_SND_SOC_CS42L42_SDW=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6241,6 +6301,7 @@ CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6415,6 +6476,7 @@ CONFIG_SND_SOC_RT1308=m
CONFIG_SND_SOC_RT1308_SDW=m
CONFIG_SND_SOC_RT1316_SDW=m
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6552,6 +6614,7 @@ CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6674,6 +6737,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BUTTERFLY is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6964,6 +7028,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -7011,7 +7076,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7488,6 +7553,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7500,6 +7566,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
# CONFIG_VBOXGUEST is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7510,6 +7577,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7605,6 +7673,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7620,6 +7690,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7639,6 +7710,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7755,6 +7828,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -8014,7 +8088,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8075,7 +8149,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel-x86_64-rt-rhel.config b/SOURCES/kernel-x86_64-rt-rhel.config
index fc53795..ea320b6 100644
--- a/SOURCES/kernel-x86_64-rt-rhel.config
+++ b/SOURCES/kernel-x86_64-rt-rhel.config
@@ -116,6 +116,7 @@ CONFIG_ACPI=y
# CONFIG_AD7293 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7303 is not set
+# CONFIG_AD7380 is not set
# CONFIG_AD74115 is not set
# CONFIG_AD74413R is not set
# CONFIG_AD7476 is not set
@@ -402,6 +403,7 @@ CONFIG_AUDIT=y
CONFIG_AUTOFS_FS=y
# CONFIG_AUXDISPLAY is not set
CONFIG_AX88796B_PHY=m
+# CONFIG_AX88796B_RUST_PHY is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_B44 is not set
@@ -416,6 +418,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LED=m
+# CONFIG_BACKLIGHT_LM3509 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=m
@@ -440,6 +443,7 @@ CONFIG_BASE_FULL=y
# CONFIG_BATTERY_GOLDFISH is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1720X is not set
# CONFIG_BATTERY_RT5033 is not set
# CONFIG_BATTERY_SAMSUNG_SDI is not set
# CONFIG_BATTERY_SBS is not set
@@ -509,6 +513,7 @@ CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
+# CONFIG_BLK_DEV_RUST_NULL is not set
CONFIG_BLK_DEV_SD=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SX8 is not set
@@ -888,6 +893,7 @@ CONFIG_COMPAT_32BIT_TIME=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_COMPAT_VDSO is not set
# CONFIG_COMPILE_TEST is not set
+# CONFIG_COMPRESSED_INSTALL is not set
CONFIG_CONFIGFS_FS=y
CONFIG_CONNECTOR=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
@@ -1044,7 +1050,6 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_SP_CCP=y
CONFIG_CRYPTO_DEV_SP_PSP=y
-# CONFIG_CRYPTO_DEV_TEGRA is not set
# CONFIG_CRYPTO_DEV_VIRTIO is not set
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_DH=y
@@ -1158,6 +1163,7 @@ CONFIG_CXL_PMEM=m
CONFIG_CXL_PMU=m
# CONFIG_CXL_REGION_INVALIDATION_TEST is not set
CONFIG_CXL_REGION=y
+# CONFIG_CZNIC_PLATFORMS is not set
# CONFIG_DA280 is not set
# CONFIG_DA311 is not set
# CONFIG_DAMON_DBGFS_DEPRECATED is not set
@@ -1275,6 +1281,7 @@ CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SFQ is not set
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_PC=m
CONFIG_DELL_RBTN=m
CONFIG_DELL_RBU=m
CONFIG_DELL_SMBIOS=m
@@ -1301,12 +1308,11 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEVTMPFS_SAFE=y
CONFIG_DEVTMPFS=y
# CONFIG_DHT11 is not set
-CONFIG_DIMLIB=m
+CONFIG_DIMLIB=y
CONFIG_DL2K=m
# CONFIG_DLHL60D is not set
-CONFIG_DLM_DEBUG=y
# CONFIG_DLM_DEPRECATED_API is not set
-CONFIG_DLM=m
+# CONFIG_DLM is not set
# CONFIG_DM9051 is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_DMA_API_DEBUG_SG is not set
@@ -1364,6 +1370,7 @@ CONFIG_DM_UEVENT=y
CONFIG_DM_VDO=m
CONFIG_DM_VERITY_FEC=y
CONFIG_DM_VERITY=m
+CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y
CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y
CONFIG_DM_WRITECACHE=m
@@ -1379,7 +1386,7 @@ CONFIG_DP83867_PHY=m
# CONFIG_DP83869_PHY is not set
CONFIG_DP83TC811_PHY=m
# CONFIG_DP83TD510_PHY is not set
-# CONFIG_DP83TG720_PHY is not set
+CONFIG_DP83TG720_PHY=m
# CONFIG_DPM_WATCHDOG is not set
# CONFIG_DPOT_DAC is not set
# CONFIG_DPS310 is not set
@@ -1397,6 +1404,7 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_SI is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_WERROR is not set
+# CONFIG_DRM_AMD_ISP is not set
# CONFIG_DRM_AMD_SECURE_DISPLAY is not set
# CONFIG_DRM_ANALOGIX_ANX6345 is not set
# CONFIG_DRM_ANALOGIX_ANX7625 is not set
@@ -1455,6 +1463,7 @@ CONFIG_DRM_I915=m
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
CONFIG_DRM_I915_PREEMPT_TIMEOUT_COMPUTE=7500
+# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set
CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
# CONFIG_DRM_I915_SELFTEST is not set
CONFIG_DRM_I915_STOP_TIMEOUT=100
@@ -1510,11 +1519,13 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
+# CONFIG_DRM_PANEL_HIMAX_HX83102 is not set
# CONFIG_DRM_PANEL_HIMAX_HX83112A is not set
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9806E is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9882T is not set
# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set
@@ -1529,6 +1540,7 @@ CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
# CONFIG_DRM_PANEL_LG_LB035Q02 is not set
# CONFIG_DRM_PANEL_LG_SW43408 is not set
+# CONFIG_DRM_PANEL_LINCOLNTECH_LCD197 is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966 is not set
# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set
@@ -1791,6 +1803,7 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EC_ACER_ASPIRE1 is not set
# CONFIG_ECHO is not set
+# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_DEBUG is not set
@@ -1857,10 +1870,13 @@ CONFIG_EFI_ZBOOT=y
CONFIG_ELF_CORE=y
# CONFIG_EMBEDDED is not set
CONFIG_ENA_ETHERNET=m
+# CONFIG_ENC28J60 is not set
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_ENCX24J600 is not set
CONFIG_ENERGY_MODEL=y
CONFIG_ENIC=m
+# CONFIG_ENS160 is not set
# CONFIG_ENVELOPE_DETECTOR is not set
CONFIG_EPIC100=m
CONFIG_EPOLL=y
@@ -1868,10 +1884,14 @@ CONFIG_EPOLL=y
# CONFIG_EROFS_FS_DEBUG is not set
CONFIG_EROFS_FS=m
# CONFIG_EROFS_FS_ONDEMAND is not set
+# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_XATTR=y
-# CONFIG_EROFS_FS_ZIP is not set
+# CONFIG_EROFS_FS_ZIP_DEFLATE is not set
+CONFIG_EROFS_FS_ZIP_LZMA=y
+CONFIG_EROFS_FS_ZIP=y
+# CONFIG_EROFS_FS_ZIP_ZSTD is not set
CONFIG_ETHERNET=y
CONFIG_ETHOC=m
CONFIG_ETHTOOL_NETLINK=y
@@ -1955,6 +1975,7 @@ CONFIG_FB_EFI=y
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FBNIC is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_OPENCORES is not set
@@ -2016,17 +2037,17 @@ CONFIG_FRAME_POINTER=y
# CONFIG_FRAMER is not set
CONFIG_FRAME_WARN=2048
CONFIG_FRONTSWAP=y
-# CONFIG_FSCACHE_DEBUG is not set
CONFIG_FSCACHE_STATS=y
CONFIG_FSCACHE=y
CONFIG_FS_DAX=y
-# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FS_ENCRYPTION=y
# CONFIG_FSI is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_FSL_ENETC_IERB is not set
# CONFIG_FSL_ENETC is not set
# CONFIG_FSL_ENETC_MDIO is not set
# CONFIG_FSL_ENETC_VF is not set
+# CONFIG_FSL_IFC is not set
# CONFIG_FSL_IMX9_DDR_PMU is not set
# CONFIG_FSL_PQ_MDIO is not set
# CONFIG_FSL_QDMA is not set
@@ -2101,8 +2122,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENEVE=m
# CONFIG_GEN_RTC is not set
# CONFIG_GENWQE is not set
-CONFIG_GFS2_FS_LOCKING_DLM=y
-CONFIG_GFS2_FS=m
+# CONFIG_GFS2_FS is not set
# CONFIG_GIGABYTE_WMI is not set
# CONFIG_GLOB_SELFTEST is not set
CONFIG_GLOB=y
@@ -2171,6 +2191,7 @@ CONFIG_GPIO_MXC=m
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_SIFIVE is not set
CONFIG_GPIO_SIM=m
+# CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER is not set
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_THUNDERX is not set
@@ -2178,6 +2199,7 @@ CONFIG_GPIO_SIM=m
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VIPERBOARD is not set
# CONFIG_GPIO_VIRTIO is not set
+# CONFIG_GPIO_VIRTUSER is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_WATCHDOG is not set
# CONFIG_GPIO_WINBOND is not set
@@ -2536,13 +2558,13 @@ CONFIG_I2C=y
CONFIG_I40E_DCB=y
CONFIG_I40E=m
CONFIG_I40EVF=m
-# CONFIG_I6300ESB_WDT is not set
+CONFIG_I6300ESB_WDT=m
# CONFIG_I8K is not set
# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set
CONFIG_IA32_EMULATION=y
# CONFIG_IAQCORE is not set
CONFIG_IAVF=m
-# CONFIG_IB700_WDT is not set
+CONFIG_IB700_WDT=m
# CONFIG_IBM_ASM is not set
CONFIG_IBMASR=m
# CONFIG_IBM_RTL is not set
@@ -2557,6 +2579,7 @@ CONFIG_IDEAPAD_LAPTOP=m
CONFIG_IDLE_INJECT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_IDPF=m
+# CONFIG_IDPF_SINGLEQ is not set
# CONFIG_IE6XX_WDT is not set
# CONFIG_IEEE802154_6LOWPAN is not set
# CONFIG_IEEE802154_ADF7242 is not set
@@ -2793,6 +2816,7 @@ CONFIG_INTEL_MEI_ME=m
CONFIG_INTEL_MEI_WDT=m
CONFIG_INTEL_OAKTRAIL=m
CONFIG_INTEL_PCH_THERMAL=m
+# CONFIG_INTEL_PLR_TPMI is not set
CONFIG_INTEL_PMC_CORE=m
CONFIG_INTEL_PMT_CLASS=m
CONFIG_INTEL_PMT_CRASHLOG=m
@@ -3098,6 +3122,7 @@ CONFIG_KALLSYMS=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
+# CONFIG_KEBA_CP500 is not set
# CONFIG_KERNEL_BZIP2 is not set
CONFIG_KERNEL_GZIP=y
CONFIG_KERNEL_IMAGE_BASE=0x3FFE0000000
@@ -3181,8 +3206,6 @@ CONFIG_KUNIT_TEST=m
# CONFIG_KUNPENG_HCCS is not set
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
-# CONFIG_KVM_BOOK3S_HV_P8_TIMING is not set
-# CONFIG_KVM_BOOK3S_HV_P9_TIMING is not set
CONFIG_KVM_GUEST=y
CONFIG_KVM_HYPERV=y
CONFIG_KVM_INTEL=m
@@ -3202,6 +3225,9 @@ CONFIG_L2TP_ETH=m
CONFIG_L2TP_IP=m
CONFIG_L2TP=m
CONFIG_L2TP_V3=y
+CONFIG_LAN743X=m
+# CONFIG_LAN966X_OIC is not set
+# CONFIG_LAN966X_SWITCH is not set
# CONFIG_LAPB is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -3269,6 +3295,7 @@ CONFIG_LEDS_MLXCPLD=m
# CONFIG_LEDS_RT8515 is not set
# CONFIG_LEDS_SGM3140 is not set
# CONFIG_LEDS_SPI_BYTE is not set
+# CONFIG_LEDS_SY7802 is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TI_LMU_COMMON is not set
@@ -3282,6 +3309,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_DISK=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_INPUT_EVENTS is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_NETDEV=m
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -3414,6 +3442,7 @@ CONFIG_MANTIS_CORE=m
CONFIG_MARVELL_10G_PHY=m
CONFIG_MARVELL_88Q2XXX_PHY=m
# CONFIG_MARVELL_88X2222_PHY is not set
+# CONFIG_MARVELL_CN10K_DPI is not set
CONFIG_MARVELL_PHY=m
# CONFIG_MATOM is not set
# CONFIG_MAX1027 is not set
@@ -3503,14 +3532,6 @@ CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUPPORT=m
# CONFIG_MEDIATEK_GE_PHY is not set
# CONFIG_MEDIA_TEST_SUPPORT is not set
-CONFIG_MEDIA_TUNER_M88RS6000T=m
-# CONFIG_MEDIA_TUNER_MAX2165 is not set
-# CONFIG_MEDIA_TUNER_MSI001 is not set
-# CONFIG_MEDIA_TUNER_MT2266 is not set
-# CONFIG_MEDIA_TUNER_MXL301RF is not set
-CONFIG_MEDIA_TUNER_QM1D1C0042=m
-CONFIG_MEDIA_TUNER_SI2157=m
-# CONFIG_MEDIA_TUNER_TDA18250 is not set
CONFIG_MEDIA_USB_SUPPORT=y
# CONFIG_MEEGOPAD_ANX7428 is not set
# CONFIG_MEGARAID_LEGACY is not set
@@ -3520,6 +3541,7 @@ CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_MEMBARRIER=y
CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_V1=y
CONFIG_MEMCG=y
CONFIG_MEMCPY_KUNIT_TEST=m
CONFIG_MEMCPY_SLOW_KUNIT_TEST=y
@@ -3545,6 +3567,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_88PM886_PMIC is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
@@ -3558,6 +3581,8 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_CS40L50_I2C is not set
+# CONFIG_MFD_CS40L50_SPI is not set
# CONFIG_MFD_CS42L43_I2C is not set
CONFIG_MFD_CS42L43_SDW=m
# CONFIG_MFD_DA9052_I2C is not set
@@ -3622,6 +3647,7 @@ CONFIG_MFD_INTEL_M10_BMC_SPI=m
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
+# CONFIG_MFD_ROHM_BD96801 is not set
# CONFIG_MFD_RSMU_I2C is not set
# CONFIG_MFD_RSMU_SPI is not set
# CONFIG_MFD_RT4831 is not set
@@ -4128,8 +4154,10 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER=y
+CONFIG_NET_FLOW_LIMIT=y
# CONFIG_NET_FOU_IP_TUNNELS is not set
# CONFIG_NET_FOU is not set
+# CONFIG_NETFS_DEBUG is not set
CONFIG_NETFS_STATS=y
CONFIG_NETFS_SUPPORT=m
CONFIG_NET_HANDSHAKE_KUNIT_TEST=m
@@ -4139,8 +4167,7 @@ CONFIG_NET_IPGRE_DEMUX=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPIP=m
CONFIG_NET_IPVTI=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_NET_KEY is not set
# CONFIG_NETKIT is not set
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_NETLABEL=y
@@ -4224,8 +4251,9 @@ CONFIG_NET_VENDOR_INTEL=y
# CONFIG_NET_VENDOR_LITEX is not set
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_NET_VENDOR_META is not set
# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
# CONFIG_NET_VENDOR_MICROSEMI is not set
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
@@ -4506,6 +4534,7 @@ CONFIG_NVME_MULTIPATH=y
CONFIG_NVMEM=y
CONFIG_NVME_RDMA=m
CONFIG_NVME_TARGET_AUTH=y
+# CONFIG_NVME_TARGET_DEBUGFS is not set
CONFIG_NVME_TARGET_FCLOOP=m
CONFIG_NVME_TARGET_FC=m
CONFIG_NVME_TARGET_LOOP=m
@@ -4525,6 +4554,7 @@ CONFIG_NVSW_SN2201=m
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_OCFS2_FS is not set
CONFIG_OCTEON_EP=m
+# CONFIG_OCTEONEP_VDPA is not set
CONFIG_OCTEON_EP_VF=m
CONFIG_OCXL=m
# CONFIG_OF is not set
@@ -4676,6 +4706,7 @@ CONFIG_PCI_PASID=y
# CONFIG_PCIPCWATCHDOG is not set
CONFIG_PCI_PF_STUB=m
CONFIG_PCI_PRI=y
+# CONFIG_PCI_PWRCTL_PWRSEQ is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
CONFIG_PCI_STUB=y
@@ -4713,6 +4744,7 @@ CONFIG_PHY_BCM_SR_USB=m
# CONFIG_PHY_CADENCE_TORRENT is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -4757,7 +4789,7 @@ CONFIG_PINCTRL_BROXTON=m
CONFIG_PINCTRL_CANNONLAKE=m
CONFIG_PINCTRL_CEDARFORK=m
# CONFIG_PINCTRL_CHERRYVIEW is not set
-# CONFIG_PINCTRL_CS42L43 is not set
+CONFIG_PINCTRL_CS42L43=m
# CONFIG_PINCTRL_CY8C95X0 is not set
CONFIG_PINCTRL_DENVERTON=m
CONFIG_PINCTRL_ELKHARTLAKE=m
@@ -4765,6 +4797,8 @@ CONFIG_PINCTRL_EMMITSBURG=m
# CONFIG_PINCTRL_EQUILIBRIUM is not set
CONFIG_PINCTRL_GEMINILAKE=m
CONFIG_PINCTRL_ICELAKE=m
+# CONFIG_PINCTRL_IMX91 is not set
+# CONFIG_PINCTRL_IMX_SCMI is not set
CONFIG_PINCTRL_INTEL_PLATFORM=m
# CONFIG_PINCTRL_IPQ6018 is not set
# CONFIG_PINCTRL_IPQ8074 is not set
@@ -4843,6 +4877,8 @@ CONFIG_POWERNV_OP_PANEL=m
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_RESET_VEXPRESS is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_SEQUENCING is not set
+CONFIG_POWER_SEQUENCING_QCOM_WCN=m
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
CONFIG_POWER_SUPPLY=y
@@ -4951,6 +4987,7 @@ CONFIG_PVPANIC=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_GPIO is not set
# CONFIG_PWM_HIBVT is not set
CONFIG_PWM_LPSS_PCI=m
CONFIG_PWM_LPSS_PLATFORM=m
@@ -4962,13 +4999,14 @@ CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QAT_VFIO_PCI is not set
# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA807X_PHY is not set
-# CONFIG_QCA808X_PHY is not set
-# CONFIG_QCA83XX_PHY is not set
+CONFIG_QCA807X_PHY=m
+CONFIG_QCA808X_PHY=m
+CONFIG_QCA83XX_PHY=m
# CONFIG_QCOM_AOSS_QMP is not set
# CONFIG_QCOM_APCS_IPC is not set
# CONFIG_QCOM_COMMAND_DB is not set
# CONFIG_QCOM_CPR is not set
+# CONFIG_QCOM_CPUCP_MBOX is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_GENI_SE is not set
# CONFIG_QCOM_GPI_DMA is not set
@@ -4981,6 +5019,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCOM_MPM is not set
# CONFIG_QCOM_OCMEM is not set
# CONFIG_QCOM_PDC is not set
+# CONFIG_QCOM_PD_MAPPER is not set
# CONFIG_QCOM_QFPROM is not set
# CONFIG_QCOM_RAMP_CTRL is not set
# CONFIG_QCOM_RMTFS_MEM is not set
@@ -5035,6 +5074,7 @@ CONFIG_RADIO_TEA575X=m
CONFIG_RAID_ATTRS=m
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_IDENTITY_BASE is not set
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
@@ -5121,6 +5161,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_MCP16502 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_NETLINK_EVENTS is not set
+# CONFIG_REGULATOR_PCA9450 is not set
# CONFIG_REGULATOR_PF8X00 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
@@ -5153,6 +5194,7 @@ CONFIG_RENESAS_PHY=m
# CONFIG_RESET_ATTACK_MITIGATION is not set
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_GPIO is not set
+CONFIG_RESET_IMX8MP_AUDIOMIX=y
# CONFIG_RESET_INTEL_GW is not set
# CONFIG_RESET_QCOM_PDC is not set
# CONFIG_RESET_SIMPLE is not set
@@ -5164,7 +5206,7 @@ CONFIG_RESOURCE_KUNIT_TEST=m
# CONFIG_RFKILL_GPIO is not set
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL=m
-CONFIG_RH_DISABLE_DEPRECATED=y
+CONFIG_RFS_ACCEL=y
CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RICHTEK_RTQ6056 is not set
CONFIG_RING_BUFFER_BENCHMARK=m
@@ -5202,6 +5244,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_RPR0521 is not set
+CONFIG_RPS=y
CONFIG_RSEQ=y
# CONFIG_RT2400PCI is not set
# CONFIG_RT2500PCI is not set
@@ -5326,6 +5369,7 @@ CONFIG_RTL8188EE=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192CU=m
CONFIG_RTL8192DE=m
+# CONFIG_RTL8192DU is not set
CONFIG_RTL8192EE=m
CONFIG_RTL8192SE=m
# CONFIG_RTL8192U is not set
@@ -5365,6 +5409,13 @@ CONFIG_RTW89_8852CE=m
# CONFIG_RTW89_DEBUGMSG is not set
CONFIG_RTW89=m
CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set
+# CONFIG_RUST_DEBUG_ASSERTIONS is not set
+# CONFIG_RUST_EXTRA_LOCKDEP is not set
+# CONFIG_RUST_FW_LOADER_ABSTRACTIONS is not set
+# CONFIG_RUST is not set
+# CONFIG_RUST_OVERFLOW_CHECKS is not set
+# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set
CONFIG_RV_MON_WWNR=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PANIC=y
@@ -5749,9 +5800,13 @@ CONFIG_SENSORS_MCP3021=m
# CONFIG_SENSORS_MLXREG_FAN is not set
# CONFIG_SENSORS_MP2856 is not set
# CONFIG_SENSORS_MP2888 is not set
+# CONFIG_SENSORS_MP2891 is not set
# CONFIG_SENSORS_MP2975 is not set
+# CONFIG_SENSORS_MP2993 is not set
# CONFIG_SENSORS_MP5023 is not set
+# CONFIG_SENSORS_MP5920 is not set
# CONFIG_SENSORS_MP5990 is not set
+# CONFIG_SENSORS_MP9941 is not set
# CONFIG_SENSORS_MPQ7932 is not set
# CONFIG_SENSORS_MPQ8785 is not set
# CONFIG_SENSORS_MR75203 is not set
@@ -5796,6 +5851,7 @@ CONFIG_SENSORS_SIS5595=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47M1=m
+# CONFIG_SENSORS_SPD5118 is not set
# CONFIG_SENSORS_STPDDC60 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SY7636A is not set
@@ -5937,6 +5993,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
CONFIG_SIPHASH_KUNIT_TEST=m
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
+CONFIG_SLAB_BUCKETS=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
# CONFIG_SLAB_MERGE_DEFAULT is not set
@@ -6039,6 +6096,7 @@ CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CS8409=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_SENARYTECH=m
CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
@@ -6147,6 +6205,7 @@ CONFIG_SND_SEQ_UMP=y
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4619 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
@@ -6210,6 +6269,7 @@ CONFIG_SND_SOC_CS42L42_SDW=m
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS530X_I2C is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_CS_AMP_LIB_TEST=m
CONFIG_SND_SOC_CX2072X=m
@@ -6218,6 +6278,7 @@ CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8311 is not set
CONFIG_SND_SOC_ES8316=m
CONFIG_SND_SOC_ES8326=m
# CONFIG_SND_SOC_ES8328_I2C is not set
@@ -6392,6 +6453,7 @@ CONFIG_SND_SOC_RT1308=m
CONFIG_SND_SOC_RT1308_SDW=m
CONFIG_SND_SOC_RT1316_SDW=m
CONFIG_SND_SOC_RT1318_SDW=m
+# CONFIG_SND_SOC_RT1320_SDW is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_RT5659 is not set
@@ -6528,6 +6590,7 @@ CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_UDA1334 is not set
CONFIG_SND_SOC_UTILS_KUNIT_TEST=m
# CONFIG_SND_SOC_WCD9335 is not set
+# CONFIG_SND_SOC_WCD937X_SDW is not set
# CONFIG_SND_SOC_WCD938X_SDW is not set
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
@@ -6650,6 +6713,7 @@ CONFIG_SPI_AMD=y
# CONFIG_SPI_BUTTERFLY is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_CADENCE_QUADSPI is not set
+# CONFIG_SPI_CH341 is not set
# CONFIG_SPI_DEBUG is not set
# CONFIG_SPI_DESIGNWARE is not set
CONFIG_SPI_FSL_LPSPI=m
@@ -6940,6 +7004,7 @@ CONFIG_THUNDERX2_PMU=m
# CONFIG_TI_ADC161S626 is not set
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS1100 is not set
+# CONFIG_TI_ADS1119 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
# CONFIG_TI_ADS131E08 is not set
@@ -6987,7 +7052,7 @@ CONFIG_TLS=m
# CONFIG_TMP117 is not set
CONFIG_TMPFS_INODE64=y
CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_TMPFS_QUOTA is not set
+CONFIG_TMPFS_QUOTA=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS=y
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
@@ -7464,6 +7529,7 @@ CONFIG_USB=y
# CONFIG_USB_YUREX is not set
CONFIG_USB_ZR364XX=m
# CONFIG_USELIB is not set
+CONFIG_USERCOPY_KUNIT_TEST=m
# CONFIG_USER_DECRYPTED_DATA is not set
# CONFIG_USER_EVENTS is not set
CONFIG_USERFAULTFD=y
@@ -7476,6 +7542,7 @@ CONFIG_UV_SYSFS=m
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_VALIDATE_FS_PARSER is not set
# CONFIG_VBOXGUEST is not set
+# CONFIG_VCAP is not set
# CONFIG_VCNL3020 is not set
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
@@ -7486,6 +7553,7 @@ CONFIG_VDPA_SIM=m
CONFIG_VDPA_SIM_NET=m
# CONFIG_VDPA_USER is not set
# CONFIG_VEML6030 is not set
+# CONFIG_VEML6040 is not set
# CONFIG_VEML6070 is not set
# CONFIG_VEML6075 is not set
CONFIG_VETH=m
@@ -7581,6 +7649,8 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_VIDEO_FB_IVTV=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_GC0308 is not set
+# CONFIG_VIDEO_GC05A2 is not set
+# CONFIG_VIDEO_GC08A3 is not set
# CONFIG_VIDEO_GC2145 is not set
# CONFIG_VIDEO_GO7007 is not set
# CONFIG_VIDEO_GS1662 is not set
@@ -7596,6 +7666,7 @@ CONFIG_VIDEO_HDPVR=m
# CONFIG_VIDEO_IMX219 is not set
# CONFIG_VIDEO_IMX258 is not set
# CONFIG_VIDEO_IMX274 is not set
+# CONFIG_VIDEO_IMX283 is not set
# CONFIG_VIDEO_IMX290 is not set
# CONFIG_VIDEO_IMX296 is not set
# CONFIG_VIDEO_IMX319 is not set
@@ -7615,6 +7686,8 @@ CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M52790 is not set
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MAX9286 is not set
+# CONFIG_VIDEO_MAX96714 is not set
+# CONFIG_VIDEO_MAX96717 is not set
# CONFIG_VIDEO_MEYE is not set
# CONFIG_VIDEO_MGB4 is not set
# CONFIG_VIDEO_ML86V7667 is not set
@@ -7731,6 +7804,7 @@ CONFIG_VIDEO_TUNER=m
# CONFIG_VIDEO_USBTV is not set
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
+# CONFIG_VIDEO_VGXY61 is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_VS6624 is not set
@@ -7990,7 +8064,7 @@ CONFIG_XMON_DEFAULT_RO_MODE=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_IA64=y
-# CONFIG_XZ_DEC_MICROLZMA is not set
+CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_SPARC=y
# CONFIG_XZ_DEC_TEST is not set
@@ -8051,7 +8125,6 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
CONFIG_I2C_NCT6775=m
CONFIG_ZENIFY=y
CONFIG_NTSYNC=y
-CONFIG_USER_NS_UNPRIVILEGED=y
CONFIG_TCP_CONG_BBR2=m
CONFIG_SND_SOC_AW87XXX=m
CONFIG_SCHED_BORE=y
diff --git a/SOURCES/kernel.changelog b/SOURCES/kernel.changelog
index df4b332..b52bd07 100644
--- a/SOURCES/kernel.changelog
+++ b/SOURCES/kernel.changelog
@@ -1,360 +1,427 @@
-* Fri Oct 04 2024 Augusto Caringi <acaringi@redhat.com> [6.10.13-0]
-- Linux v6.10.13
+* Fri Oct 04 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.11.2-0]
+- Linux v6.11.2
Resolves:
-* Mon Sep 30 2024 Augusto Caringi <acaringi@redhat.com> [6.10.12-0]
-- Linux v6.10.12
+* Mon Sep 30 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.11.1-0]
+- media: qcom: camss: Fix ordering of pm_runtime_enable (Bryan O'Donoghue)
+- media: qcom: camss: Remove use_count guard in stop_streaming (Bryan O'Donoghue)
+- arm64: dts: allwinner: a64: Add GPU thermal trips to the SoC dtsi (Dragan Simic)
+- arm64: dts: rockchip: Raise Pinebook Pro's panel backlight PWM frequency (Dragan Simic)
+- arm64: dts: qcom: sc8280xp-x13s: Enable RGB sensor (Bryan O'Donoghue)
+- ARM: dts: bcm2837/bcm2712: adjust local intc node names (Stefan Wahren)
+- arm64: dts: broadcom: Add minimal support for Raspberry Pi 5 (Andrea della Porta)
+- Linux v6.11.1
Resolves:
-* Wed Sep 18 2024 Augusto Caringi <acaringi@redhat.com> [6.10.11-0]
-- New config for 6.10.11 (Augusto Caringi)
-- Linux v6.10.11
+* Tue Sep 24 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.11.0-0]
+- Initial set up for stable Fedora branch (Justin M. Forbes)
+- Reset RHEL_RELEASE for 6.12 (Justin M. Forbes)
Resolves:
-* Thu Sep 12 2024 Augusto Caringi <acaringi@redhat.com> [6.10.10-0]
-- Add entry for BugsFixed (Justin M. Forbes)
-- drm/nouveau/fb: restore init() for ramgp102 (Ben Skeggs)
-- Linux v6.10.10
+* Sun Sep 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-63]
+- Linux v6.11.0
Resolves:
-* Sun Sep 08 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.9-0]
-- Linux v6.10.9
+* Sun Sep 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.d42f7708e27c.62]
+- Linux v6.11.0-0.rc7.d42f7708e27c
Resolves:
-* Wed Sep 04 2024 Augusto Caringi <acaringi@redhat.com> [6.10.8-0]
-- Add to BugsFixed (Augusto Caringi)
-- xfs: xfs_finobt_count_blocks() walks the wrong btree (Dave Chinner)
-- Linux v6.10.8
+* Sat Sep 14 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.b7718454f937.61]
+- Consolidate configs into common for 6.11 kernels (Justin M. Forbes)
+- Linux v6.11.0-0.rc7.b7718454f937
Resolves:
-* Thu Aug 29 2024 Augusto Caringi <acaringi@redhat.com> [6.10.7-0]
-- KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHPKEYR in sync (Shivaprasad G Bhat)
-- KVM: PPC: Book3S HV: Add one-reg interface for HASHPKEYR register (Shivaprasad G Bhat)
-- KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHKEYR in sync (Shivaprasad G Bhat)
-- KVM: PPC: Book3S HV: Add one-reg interface for HASHKEYR register (Shivaprasad G Bhat)
-- KVM: PPC: Book3S HV nestedv2: Keep nested guest DEXCR in sync (Shivaprasad G Bhat)
-- KVM: PPC: Book3S HV: Add one-reg interface for DEXCR register (Shivaprasad G Bhat)
-- Revert the F39 commits which should not have pushed (Justin M. Forbes)
-- Turn off libbpf dynamic for perf on F39 (Justin M. Forbes)
-- Revert "cpupower: Bump soname version" (Justin M. Forbes)
-- Drop soname for libcpupower.so since we reverted the bump (Justin M. Forbes)
-- Linux v6.10.7
+* Fri Sep 13 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.196145c606d0.60]
+- uki-virt: add systemd-cryptsetup module (Vitaly Kuznetsov)
+- redhat/docs: fix command to install missing build dependencies (Davide Cavalca)
+- spec: Respect rpmbuild --without debuginfo (Orgad Shaneh)
+- fedora/configs: enable GPIO expander drivers (Rupinderjit Singh)
+- redhat/configs: Switch to the Rust implementation of AX88796B_PHY driver for Fedora (Neal Gompa)
+- redhat: Turn on support for Rust code in Fedora (Neal Gompa)
+- Turn off RUST for risc-v (Justin M. Forbes)
+- Linux v6.11.0-0.rc7.196145c606d0
Resolves:
-* Mon Aug 19 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.6-0]
-- Add to BugsFixed (Justin M. Forbes)
-- selinux: revert our use of vma_is_initial_heap() (Paul Moore)
-- Linux v6.10.6
+* Thu Sep 12 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.77f587896757.59]
+- gitlab-ci: allow failure of clang LTO pipelines (Michael Hofmann)
+- redhat/configs: Consolidate the CONFIG_KVM_BOOK3S_HV_P*_TIMING switches (Thomas Huth)
+- redhat/configs: Consolidate the CONFIG_KVM_SW_PROTECTED_VM switch (Thomas Huth)
+- redhat/configs: Consolidate the CONFIG_KVM_HYPERV switch (Thomas Huth)
+- redhat/configs: Consolidate the CONFIG_KVM_AMD_SEV switch (Thomas Huth)
+- Linux v6.11.0-0.rc7.77f587896757
Resolves:
-* Wed Aug 14 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.5-0]
-- Revert "ata: libata-scsi: Honor the D_SENSE bit for CK_COND=1 and no error" (Niklas Cassel)
-- Linux v6.10.5
+* Wed Sep 11 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.8d8d276ba2fb.58]
+- Cleanup some riscv CONFIG locations (Justin M. Forbes)
+- Fix up pending riscv Fedora configs post merge (Justin M. Forbes)
+- Linux v6.11.0-0.rc7.8d8d276ba2fb
Resolves:
-* Sun Aug 11 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.4-0]
-- wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion (Janne Grunau)
-- New config for 6.10.3 (Justin M. Forbes)
-- Linux v6.10.4
+* Tue Sep 10 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.bc83b4d1f086.57]
+- fedora/configs: Enable SCMI configuration (Rupinderjit Singh)
+- Remove S390 special config for PHYLIB (Justin M. Forbes)
+- Disable ELN for riscv64 (Isaiah Stapleton)
+- redhat: add checks to ensure only building riscv64 on fedora (Isaiah Stapleton)
+- redhat: Add missing riscv fedora configs (Isaiah Stapleton)
+- Add riscv64 to the CI pipelines (Isaiah Stapleton)
+- redhat: Regenerate dist-self-test-data for riscv64 (Isaiah Stapleton)
+- redhat: Add riscv config changes for fedora (David Abdurachmanov)
+- redhat: Add support for riscv (David Abdurachmanov)
+- redhat: Do not include UKI addons twice (Vitaly Kuznetsov)
+- redhat: update gating.yml (Michael Hofmann)
+- Linux v6.11.0-0.rc7.bc83b4d1f086
Resolves:
-* Mon Aug 05 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.3-0]
-- Bluetooth: hci_event: Fix setting DISCOVERY_FINDING for passive scanning (Luiz Augusto von Dentz)
-- Linux v6.10.3
+* Mon Sep 09 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc7.56]
+- Linux v6.11.0-0.rc7
Resolves:
-* Sat Jul 27 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.2-0]
-- Linux v6.10.2
+* Sun Sep 08 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.d1f2d51b711a.55]
+- Linux v6.11.0-0.rc6.d1f2d51b711a
Resolves:
-* Wed Jul 24 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.1-0]
-- Initial set up for stable Fedora branch (Justin M. Forbes)
-- Reset RHEL_RELEASE for the 6.11 cycle (Justin M. Forbes)
-- redhat/configs: Enable CONFIG_VMWARE_VMCI/CONFIG_VMWARE_VMCI_VSOCKETS for RHEL (Vitaly Kuznetsov)
-- Linux v6.10.1
+* Sat Sep 07 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.b31c44928842.54]
+- Linux v6.11.0-0.rc6.b31c44928842
Resolves:
-* Mon Jul 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-64]
-- Linux v6.10.0
+* Fri Sep 06 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.b831f83e40a2.53]
+- Linux v6.11.0-0.rc6.b831f83e40a2
Resolves:
-* Sun Jul 14 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.4d145e3f830b.63]
-- Consolidate configs to common for 6.10 (Justin M. Forbes)
-- Linux v6.10.0-0.rc7.4d145e3f830b
+* Thu Sep 05 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.c763c4339688.52]
+- Linux v6.11.0-0.rc6.c763c4339688
Resolves:
-* Sat Jul 13 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.528dd46d0fc3.62]
-- redhat/configs: Enable CONFIG_PTP_1588_CLOCK_MOCK in kernel-modules-internal (Davide Caratti)
-- fedora: enabled XE GPU drivers on all arches (Peter Robinson)
-- Flip SND_SOC_CS35L56_SPI from off to module for RHEL (Justin M. Forbes)
-- Flip DIMLIB from built-in to module for RHEL (Justin M. Forbes)
-- Linux v6.10.0-0.rc7.528dd46d0fc3
+* Wed Sep 04 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.88fac17500f4.51]
+- Linux v6.11.0-0.rc6.88fac17500f4
Resolves:
-* Fri Jul 12 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.43db1e03c086.61]
-- Linux v6.10.0-0.rc7.43db1e03c086
+* Mon Sep 02 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.67784a74e258.50]
+- Linux v6.11.0-0.rc6.67784a74e258
Resolves:
-* Thu Jul 11 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.9d9a2f29aefd.60]
-- Linux v6.10.0-0.rc7.9d9a2f29aefd
+* Sun Sep 01 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc6.49]
+- Linux v6.11.0-0.rc6
Resolves:
-* Wed Jul 10 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.34afb82a3c67.59]
-- not upstream: drop openssl ENGINE API usage (Jan Stancek)
-- Linux v6.10.0-0.rc7.34afb82a3c67
+* Sat Aug 31 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.1934261d8974.48]
+- Remove CONFIG_FSCACHE_DEBUG as it has been renamed (Justin M. Forbes)
+- Set Fedora configs for 6.11 (Justin M. Forbes)
+- Linux v6.11.0-0.rc5.1934261d8974
Resolves:
-* Mon Jul 08 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.4376e966ecb7.58]
-- Also remove the zfcpdump BASE_SMALL config (Justin M. Forbes)
-- Linux v6.10.0-0.rc7.4376e966ecb7
+* Fri Aug 30 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.20371ba12063.47]
+- Linux v6.11.0-0.rc5.20371ba12063
Resolves:
-* Mon Jul 08 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc7.57]
-- Linux v6.10.0-0.rc7
+* Thu Aug 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.d5d547aa7b51.46]
+- redhat/configs: Microchip lan743x driver (Izabela Bakollari)
+- Linux v6.11.0-0.rc5.d5d547aa7b51
Resolves:
-* Sun Jul 07 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.c6653f49e4fd.56]
-- Linux v6.10.0-0.rc6.c6653f49e4fd
+* Wed Aug 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.86987d84b968.45]
+- redhat: include resolve_btfids in kernel-devel (Jan Stancek)
+- redhat: workaround CKI cross compilation for scripts (Jan Stancek)
+- spec: fix "unexpected argument to non-parametric macro" warnings (Jan Stancek)
+- Linux v6.11.0-0.rc5.86987d84b968
+Resolves: RHEL-56069
+
+* Tue Aug 27 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.3e9bff3bbe13.44]
+- Linux v6.11.0-0.rc5.3e9bff3bbe13
+Resolves: RHEL-49398
+
+* Mon Aug 26 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.43]
+- Add weakdep support to the kernel spec (Justin M. Forbes)
+- redhat: configs: disable PF_KEY in RHEL (Sabrina Dubroca)
+- crypto: akcipher - Disable signing and decryption (Vladis Dronov) [RHEL-54183] {CVE-2023-6240}
+- crypto: dh - implement FIPS PCT (Vladis Dronov) [RHEL-54183]
+- crypto: ecdh - disallow plain "ecdh" usage in FIPS mode (Vladis Dronov) [RHEL-54183]
+- crypto: seqiv - flag instantiations as FIPS compliant (Vladis Dronov) [RHEL-54183]
+- [kernel] bpf: set default value for bpf_jit_harden (Artem Savkov) [RHEL-51896]
+Resolves: RHEL-51896, RHEL-54183
+
+* Sun Aug 25 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc5.42]
+- Linux v6.11.0-0.rc5
Resolves:
-* Sat Jul 06 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.1dd28064d416.55]
-- Linux v6.10.0-0.rc6.1dd28064d416
+* Sat Aug 24 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc4.d2bafcf224f3.41]
+- Linux v6.11.0-0.rc4.d2bafcf224f3
Resolves:
-* Fri Jul 05 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.661e504db04c.54]
-- Linux v6.10.0-0.rc6.661e504db04c
+* Fri Aug 23 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc4.3d5f968a177d.40]
+- Linux v6.11.0-0.rc4.3d5f968a177d
Resolves:
-* Thu Jul 04 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.795c58e4c7fc.53]
-- Linux v6.10.0-0.rc6.795c58e4c7fc
+* Thu Aug 22 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc4.872cf28b8df9.39]
+- Linux v6.11.0-0.rc4.872cf28b8df9
Resolves:
-* Wed Jul 03 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.e9d22f7a6655.52]
-- Linux v6.10.0-0.rc6.e9d22f7a6655
+* Wed Aug 21 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc4.b311c1b497e5.38]
+- Linux v6.11.0-0.rc4.b311c1b497e5
Resolves:
-* Tue Jul 02 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.1dfe225e9af5.51]
-- redhat: Add cgroup kselftests to kernel-selftests-internal (Waiman Long) [RHEL-43556]
-- Revert "redhat/configs: Disable CONFIG_INFINIBAND_HFI1 and CONFIG_INFINIBAND_RDMAVT" (Kamal Heib)
-- Remove new for GITLAB_TOKEN (Don Zickus)
-- Set Fedora configs for 6.10 (Justin M. Forbes)
-- Fedora: minor driver updates (Peter Robinson)
-- Linux v6.10.0-0.rc6.1dfe225e9af5
-Resolves: RHEL-43556
+* Tue Aug 20 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc4.6e4436539ae1.37]
+- fedora: disable CONFIG_DRM_WERROR (Patrick Talbert)
+- Linux v6.11.0-0.rc4.6e4436539ae1
+Resolves:
-* Mon Jul 01 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc6.50]
-- redhat/configs: Remove obsolete x86 CPU mitigations config files (Waiman Long)
-- redhat/configs: increase CONFIG_DEFAULT_MMAP_MIN_ADDR from 32K to 64K for aarch64 (Brian Masney)
-- redhat/configs: Re-enable CONFIG_KEXEC for Fedora (Philipp Rudo)
-- media: ipu-bridge: Add HIDs from out of tree IPU6 driver ipu-bridge copy (Hans de Goede)
-- media: ipu-bridge: Sort ipu_supported_sensors[] array by ACPI HID (Hans de Goede)
-- disable LR_WPAN for RHEL10 (Chris von Recklinghausen) [RHEL-40251]
-- Linux v6.10.0-0.rc6
-Resolves: RHEL-40251
+* Mon Aug 19 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc4.36]
+- Linux v6.11.0-0.rc4
+Resolves:
-* Sun Jun 30 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc5.8282d5af7be8.49]
-- Linux v6.10.0-0.rc5.8282d5af7be8
+* Sun Aug 18 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.c3f2d783a459.35]
+- Linux v6.11.0-0.rc3.c3f2d783a459
Resolves:
-* Sat Jun 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc5.de0a9f448633.48]
-- Turn on USB_SERIAL_F81232 for Fedora (Justin M. Forbes)
-- Linux v6.10.0-0.rc5.de0a9f448633
+* Sat Aug 17 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.e5fa841af679.34]
+- Linux v6.11.0-0.rc3.e5fa841af679
Resolves:
-* Fri Jun 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc5.5bbd9b249880.47]
-- Linux v6.10.0-0.rc5.5bbd9b249880
+* Fri Aug 16 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.d7a5aa4b3c00.33]
+- redhat/configs: Disable dlm in rhel configs (Andrew Price)
+- rhel: aarch64: enable required PSCI configs (Peter Robinson)
+- Linux v6.11.0-0.rc3.d7a5aa4b3c00
Resolves:
-* Thu Jun 27 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc5.afcd48134c58.46]
-- redhat/scripts/filtermods.py: show all parent/child kmods in report (Jan Stancek)
-- redhat/kernel.spec: capture filtermods.py return code (Jan Stancek)
-- redhat/kernel.spec: fix run of mod-denylist (Jan Stancek)
-- gitlab-ci: remove unused RHMAINTAINERS variable (Michael Hofmann)
-- gitlab-ci: use environments for jobs that need access to push/gitlab secrets (Michael Hofmann)
-- gitlab-ci: default to os-build for all maintenance jobs (Michael Hofmann)
-- gitlab-ci: use the common git repo setup cki-gating as well (Michael Hofmann)
-- gitlab-ci: help maintenance jobs to cope with missing private key (Michael Hofmann)
-- gitlab-ci: use a common git repo setup for all maintenance jobs (Michael Hofmann)
-- gitlab-ci: move repo setup script into script template holder (Michael Hofmann)
-- gitlab-ci: move maintenance job DIST variable into common template (Michael Hofmann)
-- gitlab-ci: move maintenance job rules into common template (Michael Hofmann)
-- gitlab-ci: move maintenance job retry field into common template (Michael Hofmann)
-- gitlab-ci: provide common non-secret schedule trigger variables (Michael Hofmann)
-- gitlab-ci: rename .scheduled_setup to .git_setup (Michael Hofmann)
-- gitlab-ci: move script snippets into separate template (Michael Hofmann)
-- gitlab-ci: rename maintenance jobs (Michael Hofmann)
-- gitlab-ci: introduce job template for maintenance jobs (Michael Hofmann)
-- Linux v6.10.0-0.rc5.afcd48134c58
+* Thu Aug 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.1fb918967b56.32]
+- Linux v6.11.0-0.rc3.1fb918967b56
Resolves:
-* Wed Jun 26 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc5.24ca36a562d6.45]
-- Turn on KASAN_HW_TAGS for Fedora aarch64 debug kernels (Justin M. Forbes)
-- Linux v6.10.0-0.rc5.24ca36a562d6
+* Wed Aug 14 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.6b0f8db921ab.31]
+- fedora: Enable AF8133J Magnetometer driver (Peter Robinson)
+- Linux v6.11.0-0.rc3.6b0f8db921ab
Resolves:
-* Tue Jun 25 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc5.44]
-- redhat: kernel.spec: add missing sound/soc/sof/sof-audio.h to kernel-devel package (Jaroslav Kysela)
+* Tue Aug 13 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.d74da846046a.30]
+- redhat: spec: add cachestat kselftest (Eric Chanudet)
+- redhat: hmac sign the UKI for FIPS (Vitaly Kuznetsov)
+- not upstream: Disable vdso getrandom when FIPS is enabled (Herbert Xu)
+- Linux v6.11.0-0.rc3.d74da846046a
Resolves:
-* Mon Jun 24 2024 Justin M. Forbes <jforbes@fedoraproject.org> [6.10.0-0.rc5.43]
-- redhat/kernel.spec: fix attributes of symvers file (Jan Stancek)
-- redhat: add filtermods rule for iommu tests (Jan Stancek)
-- Linux v6.10.0-0.rc5
+* Mon Aug 12 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc3.29]
+- Linux v6.11.0-0.rc3
Resolves:
-* Fri Jun 21 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc4.50736169ecc8.42]
-- fedora: arm: Enable basic support for S32G-VNP-RDB3 board (Enric Balletbo i Serra)
-- Linux v6.10.0-0.rc4.50736169ecc8
+* Sun Aug 11 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.5189dafa4cf9.28]
+- Linux v6.11.0-0.rc2.5189dafa4cf9
Resolves:
-* Thu Jun 20 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc4.e5b3efbe1ab1.41]
-- Linux v6.10.0-0.rc4.e5b3efbe1ab1
+* Sat Aug 10 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.34ac1e82e5a7.27]
+- kernel: config: enable erofs lzma compression (Ian Kent)
+- fedora: disable RTL8192CU in Fedora (Peter Robinson)
+- Linux v6.11.0-0.rc2.34ac1e82e5a7
Resolves:
-* Wed Jun 19 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc4.92e5605a199e.40]
-- redhat: make bnx2xx drivers unmaintained in rhel-10 (John Meneghini) [RHEL-36646 RHEL-41231]
-- Linux v6.10.0-0.rc4.92e5605a199e
-Resolves: RHEL-36646, RHEL-41231
+* Fri Aug 09 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.ee9a43b7cfe2.26]
+- redhat: Fix the ownership of /lib/modules/<kversion> directory (Vitaly Kuznetsov)
+- new configs in drivers/phy (Izabela Bakollari)
+- Add support to rh_waived cmdline boot parameter (Ricardo Robaina) [RHEL-26170]
+- Linux v6.11.0-0.rc2.ee9a43b7cfe2
+Resolves: RHEL-26170
-* Tue Jun 18 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc4.14d7c92f8df9.39]
-- redhat/configs: Disable CONFIG_NFP (Kamal Heib) [RHEL-36647]
-- Enable CONFIG_PWRSEQ_{SIMPLIE,EMMC} on aarch64 (Charles Mirabile)
-- Linux v6.10.0-0.rc4.14d7c92f8df9
-Resolves: RHEL-36647
+* Thu Aug 08 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.6a0e38264012.25]
+- Linux v6.11.0-0.rc2.6a0e38264012
+Resolves:
-* Mon Jun 17 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc4.38]
-- Fix SERIAL_SC16IS7XX configs for Fedora (Justin M. Forbes)
-- Enable ALSA (CONFIG_SND) on aarch64 (Charles Mirabile) [RHEL-40411]
-- redhat: Remove DIST_BRANCH variable (Eder Zulian)
-- Linux v6.10.0-0.rc4
-Resolves: RHEL-40411
+* Wed Aug 07 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.d4560686726f.24]
+- Linux v6.11.0-0.rc2.d4560686726f
+Resolves:
-* Sun Jun 16 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.a3e18a540541.37]
-- Linux v6.10.0-0.rc3.a3e18a540541
+* Tue Aug 06 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.b446a2dae984.23]
+- redhat/configs: Disable gfs2 in rhel configs (Andrew Price)
+- redhat/uki_addons/virt: add common FIPS addon (Emanuele Giuseppe Esposito)
+- redhat/kernel.spec: add uki_addons to create UKI kernel cmdline addons (Emanuele Giuseppe Esposito)
+- Linux v6.11.0-0.rc2.b446a2dae984
Resolves:
-* Sat Jun 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.44ef20baed8e.36]
-- Linux v6.10.0-0.rc3.44ef20baed8e
+* Mon Aug 05 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc2.22]
+- rh_flags: fix failed when register_sysctl_sz rh_flags_table to kernel (Ricardo Robaina) [RHEL-52629]
+- Linux v6.11.0-0.rc2
+Resolves: RHEL-52629
+
+* Sun Aug 04 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.defaf1a2113a.21]
+- Linux v6.11.0-0.rc1.defaf1a2113a
Resolves:
-* Fri Jun 14 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.d20f6b3d747c.35]
-- Linux v6.10.0-0.rc3.d20f6b3d747c
+* Sat Aug 03 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.17712b7ea075.20]
+- Linux v6.11.0-0.rc1.17712b7ea075
Resolves:
-* Thu Jun 13 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.2ccbdf43d5e7.34]
-- Linux v6.10.0-0.rc3.2ccbdf43d5e7
+* Fri Aug 02 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.c0ecd6388360.19]
+- redhat/dracut-virt.conf: add systemd-veritysetup module (Emanuele Giuseppe Esposito)
+- Linux v6.11.0-0.rc1.c0ecd6388360
Resolves:
-* Wed Jun 12 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.2ef5971ff345.33]
-- gitlab-ci: merge ark-latest before tagging cki-gating (Michael Hofmann)
-- Linux v6.10.0-0.rc3.2ef5971ff345
+* Thu Aug 01 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.21b136cc63d2.18]
+- redhat/configs: enable CONFIG_LOCK_STAT on the debug kernels for aarch64 (Brian Masney)
+- redhat/configs: enable CONFIG_KEYBOARD_GPIO_POLLED for RHEL on aarch64 (Luiz Capitulino)
+- redhat/configs: fedora: Enable new Qualcomm configs (Andrew Halaney)
+- redhat/configs: fedora: Disable CONFIG_QCOM_PD_MAPPER for non aarch64 (Andrew Halaney)
+- redhat/configs/fedora: set CONFIG_CRYPTO_CURVE25519_PPC64 (Dan Horák)
+- fedora: Updates for 6.11 merge (Peter Robinson)
+- fedora: enable new mipi sensors and devices (Peter Robinson)
+- Linux v6.11.0-0.rc1.21b136cc63d2
Resolves:
-* Tue Jun 11 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.32]
-- gitlab-ci: do not merge ark-latest for gating pipelines for Rawhide (Michael Hofmann)
-- disable CONFIG_KVM_INTEL_PROVE_VE (Paolo Bonzini)
-- redhat: remove the merge subtrees script (Derek Barbosa)
-- redhat: rhdocs: delete .get_maintainer.conf (Derek Barbosa)
-- redhat: rhdocs: Remove the rhdocs directory (Derek Barbosa)
-- redhat/configs: Disable CONFIG_QLA3XXX (Kamal Heib) [RHEL-36646]
-Resolves: RHEL-36646
+* Wed Jul 31 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.e4fc196f5ba3.17]
+- arm64: enable CRYPTO_DEV_TEGRA on RHEL (Peter Robinson)
+- redhat/kernel.spec: fix file listed twice warning for "kernel" subdir (Jan Stancek)
+- redhat/configs: Double MAX_LOCKDEP_ENTRIES for RT debug kernels (Waiman Long) [RHEL-43425]
+- Support the first day after a rebase (Don Zickus)
+- Support 2 digit versions properly (Don Zickus)
+- Automation cleanups for rebasing rt-devel and automotive-devel (Don Zickus)
+- Linux v6.11.0-0.rc1.e4fc196f5ba3
+Resolves: RHEL-43425
-* Mon Jun 10 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc3.31]
-- Linux v6.10.0-0.rc3
+* Tue Jul 30 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.94ede2a3e913.16]
+- Linux v6.11.0-0.rc1.94ede2a3e913
Resolves:
-* Sun Jun 09 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.771ed66105de.30]
-- redhat/configs: fedora: Enable some drivers for IPU6 support (Hans de Goede)
-- Linux v6.10.0-0.rc2.771ed66105de
+* Mon Jul 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc1.dc1c8034e31b.15]
+- fedora: set CONFIG_REGULATOR_RZG2L_VBCTRL as a module for arm64 (Patrick Talbert)
+- Linux v6.11.0-0.rc1.dc1c8034e31b
Resolves:
-* Sat Jun 08 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.dc772f8237f9.29]
-- Linux v6.10.0-0.rc2.dc772f8237f9
+* Sat Jul 27 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.3a7e02c040b1.14]
+- Linux v6.11.0-0.rc0.3a7e02c040b1
Resolves:
-* Fri Jun 07 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.8a92980606e3.28]
-- Linux v6.10.0-0.rc2.8a92980606e3
+* Fri Jul 26 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.1722389b0d86.13]
+- gitlab-ci: restore bot pipeline behavior (Michael Hofmann)
+- redhat/kernel.spec: drop extra right curly bracket in kernel_kvm_package (Jan Stancek)
+- redhat/configs: enable gpio_keys driver for RHEL on aarch64 (Luiz Capitulino)
+- Move NET_VENDOR_MICROCHIP from common to rhel (Justin M. Forbes)
+- Linux v6.11.0-0.rc0.1722389b0d86
Resolves:
-* Thu Jun 06 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.2df0193e62cf.27]
-- redhat: add missing UKI_secureboot_cert hunk (Patrick Talbert)
-- Linux v6.10.0-0.rc2.2df0193e62cf
+* Thu Jul 25 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.c33ffdb70cc6.12]
+- Linux v6.11.0-0.rc0.c33ffdb70cc6
Resolves:
-* Wed Jun 05 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.32f88d65f01b.26]
-- redhat/kernel.spec: keep extra modules in original directories (Jan Stancek)
-- Linux v6.10.0-0.rc2.32f88d65f01b
+* Wed Jul 24 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.786c8248dbd3.11]
+- Linux v6.11.0-0.rc0.786c8248dbd3
Resolves:
-* Tue Jun 04 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.2ab795141095.25]
-- redhat/configs: Move CONFIG_BLK_CGROUP_IOCOST=y to common/generic (Waiman Long)
-- Turn on CONFIG_MFD_QCOM_PM8008 for Fedora aarch64 (Justin M. Forbes)
-- Linux v6.10.0-0.rc2.2ab795141095
+* Tue Jul 23 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.66ebbdfdeb09.10]
+- redhat/configs: enable some RTCs for RHEL on aarch64 (Luiz Capitulino)
+- redhat/configs: enable some regulators for RHEL (Luiz Capitulino)
+- redhat/config: disable CXL and CXLFLASH drivers (Dan Horák)
+- Linux v6.11.0-0.rc0.66ebbdfdeb09
Resolves:
-* Mon Jun 03 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc2.24]
-- Linux v6.10.0-0.rc2
+* Mon Jul 22 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.933069701c1b.9]
+- Fix up config mismatches in pending (Justin M. Forbes)
+- redhat/configs: Enable watchdog devices modelled by qemu (Richard W.M. Jones) [RHEL-40937]
+- Linux v6.11.0-0.rc0.933069701c1b
+Resolves: RHEL-40937
+
+* Mon Jul 22 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.720261cfc732.8]
+- rhel: cleanup unused media tuner configs (Peter Robinson)
+- all: cleanup MEDIA_CONTROLLER options (Peter Robinson)
+- redhat: kernel.spec: add s390x to livepatching kselftest builds (Joe Lawrence)
Resolves:
-* Sun Jun 02 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.83814698cf48.23]
-- Linux v6.10.0-0.rc1.83814698cf48
+* Sat Jul 20 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.720261cfc732.7]
+- Flip CONFIG_DIMLIB back to inline (Justin M. Forbes)
+- Add vfio/nvgrace-gpu driver CONFIG to RHEL-9.5 ARM64 (Donald Dutile)
+- Enable CONFIG_RTC_DRV_TEGRA for RHEL (Luiz Capitulino)
Resolves:
-* Sat Jun 01 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.cc8ed4d0a848.22]
-- Linux v6.10.0-0.rc1.cc8ed4d0a848
+* Fri Jul 19 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.720261cfc732.6]
+- redhat: rh_flags: declare proper static methods when !CONFIG_RHEL_DIFFERENCES (Rafael Aquini)
+- redhat: configs: enable CONFIG_TMPFS_QUOTA for both Fedora and RHEL (Rafael Aquini)
+- Linux v6.11.0-0.rc0.720261cfc732
Resolves:
-* Fri May 31 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.4a4be1ad3a6e.21]
-- redhat: Build IMA CA certificate into the Fedora kernel (Coiby Xu)
-- Move CONFIG_RAS_FMPM to the proper location (Aristeu Rozanski)
-- redhat/configs: Remove CONFIG_NET_ACT_IPT (Ivan Vecera)
+* Thu Jul 18 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.b1bc554e009e.5]
+- Linux v6.11.0-0.rc0.b1bc554e009e
+Resolves:
+
+* Wed Jul 17 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.51835949dda3.4]
+- Fix up mismatches in the 6.11 merge window. (Justin M. Forbes)
+- Linux v6.11.0-0.rc0.51835949dda3
Resolves:
-* Thu May 30 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.4a4be1ad3a6e.20]
-- Linux v6.10.0-0.rc1.4a4be1ad3a6e
+* Wed Jul 17 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.d67978318827.3]
+- Reset Changelog after rebase (Justin M. Forbes)
Resolves:
-* Wed May 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.e0cce98fe279.19]
+* Tue Jul 16 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.11.0-0.rc0.d67978318827.2]
+- Reset RHEL_RELEASE for the 6.11 cycle (Justin M. Forbes)
+- redhat/configs: Enable CONFIG_VMWARE_VMCI/CONFIG_VMWARE_VMCI_VSOCKETS for RHEL (Vitaly Kuznetsov)
+- Consolidate configs to common for 6.10 (Justin M. Forbes)
+- redhat/configs: Enable CONFIG_PTP_1588_CLOCK_MOCK in kernel-modules-internal (Davide Caratti)
+- fedora: enabled XE GPU drivers on all arches (Peter Robinson)
+- Flip SND_SOC_CS35L56_SPI from off to module for RHEL (Justin M. Forbes)
+- Flip DIMLIB from built-in to module for RHEL (Justin M. Forbes)
+- not upstream: drop openssl ENGINE API usage (Jan Stancek)
+- Also remove the zfcpdump BASE_SMALL config (Justin M. Forbes)
+- redhat: Add cgroup kselftests to kernel-selftests-internal (Waiman Long) [RHEL-43556]
+- Revert "redhat/configs: Disable CONFIG_INFINIBAND_HFI1 and CONFIG_INFINIBAND_RDMAVT" (Kamal Heib)
+- Remove new for GITLAB_TOKEN (Don Zickus)
+- Set Fedora configs for 6.10 (Justin M. Forbes)
+- Fedora: minor driver updates (Peter Robinson)
+- redhat/configs: Remove obsolete x86 CPU mitigations config files (Waiman Long)
+- redhat/configs: increase CONFIG_DEFAULT_MMAP_MIN_ADDR from 32K to 64K for aarch64 (Brian Masney)
+- redhat/configs: Re-enable CONFIG_KEXEC for Fedora (Philipp Rudo)
+- media: ipu-bridge: Add HIDs from out of tree IPU6 driver ipu-bridge copy (Hans de Goede)
+- media: ipu-bridge: Sort ipu_supported_sensors[] array by ACPI HID (Hans de Goede)
+- disable LR_WPAN for RHEL10 (Chris von Recklinghausen) [RHEL-40251]
+- Turn on USB_SERIAL_F81232 for Fedora (Justin M. Forbes)
+- redhat/scripts/filtermods.py: show all parent/child kmods in report (Jan Stancek)
+- redhat/kernel.spec: capture filtermods.py return code (Jan Stancek)
+- redhat/kernel.spec: fix run of mod-denylist (Jan Stancek)
+- gitlab-ci: remove unused RHMAINTAINERS variable (Michael Hofmann)
+- gitlab-ci: use environments for jobs that need access to push/gitlab secrets (Michael Hofmann)
+- gitlab-ci: default to os-build for all maintenance jobs (Michael Hofmann)
+- gitlab-ci: use the common git repo setup cki-gating as well (Michael Hofmann)
+- gitlab-ci: help maintenance jobs to cope with missing private key (Michael Hofmann)
+- gitlab-ci: use a common git repo setup for all maintenance jobs (Michael Hofmann)
+- gitlab-ci: move repo setup script into script template holder (Michael Hofmann)
+- gitlab-ci: move maintenance job DIST variable into common template (Michael Hofmann)
+- gitlab-ci: move maintenance job rules into common template (Michael Hofmann)
+- gitlab-ci: move maintenance job retry field into common template (Michael Hofmann)
+- gitlab-ci: provide common non-secret schedule trigger variables (Michael Hofmann)
+- gitlab-ci: rename .scheduled_setup to .git_setup (Michael Hofmann)
+- gitlab-ci: move script snippets into separate template (Michael Hofmann)
+- gitlab-ci: rename maintenance jobs (Michael Hofmann)
+- gitlab-ci: introduce job template for maintenance jobs (Michael Hofmann)
+- Turn on KASAN_HW_TAGS for Fedora aarch64 debug kernels (Justin M. Forbes)
+- redhat: kernel.spec: add missing sound/soc/sof/sof-audio.h to kernel-devel package (Jaroslav Kysela)
+- redhat/kernel.spec: fix attributes of symvers file (Jan Stancek)
+- redhat: add filtermods rule for iommu tests (Jan Stancek)
+- fedora: arm: Enable basic support for S32G-VNP-RDB3 board (Enric Balletbo i Serra)
+- redhat: make bnx2xx drivers unmaintained in rhel-10 (John Meneghini) [RHEL-36646 RHEL-41231]
+- redhat/configs: Disable CONFIG_NFP (Kamal Heib) [RHEL-36647]
+- Enable CONFIG_PWRSEQ_{SIMPLIE,EMMC} on aarch64 (Charles Mirabile)
+- Fix SERIAL_SC16IS7XX configs for Fedora (Justin M. Forbes)
+- Enable ALSA (CONFIG_SND) on aarch64 (Charles Mirabile) [RHEL-40411]
+- redhat: Remove DIST_BRANCH variable (Eder Zulian)
+- gitlab-ci: merge ark-latest before tagging cki-gating (Michael Hofmann)
+- gitlab-ci: do not merge ark-latest for gating pipelines for Rawhide (Michael Hofmann)
+- disable CONFIG_KVM_INTEL_PROVE_VE (Paolo Bonzini)
+- redhat: remove the merge subtrees script (Derek Barbosa)
+- redhat: rhdocs: delete .get_maintainer.conf (Derek Barbosa)
+- redhat: rhdocs: Remove the rhdocs directory (Derek Barbosa)
+- redhat/configs: Disable CONFIG_QLA3XXX (Kamal Heib) [RHEL-36646]
+- redhat/configs: fedora: Enable some drivers for IPU6 support (Hans de Goede)
+- redhat: add missing UKI_secureboot_cert hunk (Patrick Talbert)
+- redhat/kernel.spec: keep extra modules in original directories (Jan Stancek)
+- redhat/configs: Move CONFIG_BLK_CGROUP_IOCOST=y to common/generic (Waiman Long)
+- Turn on CONFIG_MFD_QCOM_PM8008 for Fedora aarch64 (Justin M. Forbes)
+- redhat: Build IMA CA certificate into the Fedora kernel (Coiby Xu)
+- Move CONFIG_RAS_FMPM to the proper location (Aristeu Rozanski)
+- redhat/configs: Remove CONFIG_NET_ACT_IPT (Ivan Vecera)
- gitlab-ci: add kernel-automotive pipelines (Michael Hofmann)
- Enable CEC support for TC358743 (Peter Robinson)
- fedora: arm: Enable ARCH_R9A09G057 (Peter Robinson)
- fedora: updates for the 6.10 kernel (Peter Robinson)
- fedora: arm: Enable the MAX96706 GMSL module (Peter Robinson)
-- Linux v6.10.0-0.rc1.e0cce98fe279
-Resolves:
-
-* Tue May 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.2bfcfd584ff5.18]
-- Linux v6.10.0-0.rc1.2bfcfd584ff5
-Resolves:
-
-* Mon May 27 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc1.17]
- redhat: Switch UKI to using its own SecureBoot cert (from system-sb-certs) (Jan Stancek)
- redhat: Add RHEL specifc .sbat section to UKI (Jan Stancek)
- kernel.spec: add iommu selftests to kernel-selftests-internal (Eder Zulian) [RHEL-32895]
-- Linux v6.10.0-0.rc1
-Resolves: RHEL-32895
-
-* Sun May 26 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.c13320499ba0.16]
-- Linux v6.10.0-0.rc0.c13320499ba0
-Resolves:
-
-* Sat May 25 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.56fb6f92854f.15]
-- Linux v6.10.0-0.rc0.56fb6f92854f
-Resolves:
-
-* Fri May 24 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.6d69b6c12fce.14]
-- Linux v6.10.0-0.rc0.6d69b6c12fce
-Resolves:
-
-* Fri May 24 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.c760b3725e52.13]
- redhat/configs: fedora: aarch64: Re-enable CUSE (Neal Gompa)
-Resolves:
-
-* Thu May 23 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.c760b3725e52.12]
-- Linux v6.10.0-0.rc0.c760b3725e52
-Resolves:
-
-* Wed May 22 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.29c73fc794c8.11]
- redhat: pass correct RPM_VMLINUX_H to bpftool install (Jan Stancek)
- rh_flags: Rename rh_features to rh_flags (Ricardo Robaina) [RHEL-32987]
- kernel: rh_features: fix reading empty feature list from /proc (Ricardo Robaina) [RHEL-32987]
@@ -362,48 +429,13 @@ Resolves:
- rh_features: convert to atomic allocation (Ricardo Robaina) [RHEL-32987]
- add rh_features to /proc (Ricardo Robaina) [RHEL-32987]
- add support for rh_features (Ricardo Robaina) [RHEL-32987]
-- Linux v6.10.0-0.rc0.29c73fc794c8
-Resolves: RHEL-32987
-
-* Tue May 21 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.8f6a15f095a6.10]
- Drop kexec_load syscall support (Baoquan He)
-- Linux v6.10.0-0.rc0.8f6a15f095a6
-Resolves:
-
-* Mon May 20 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.eb6a9339efeb.9]
- New configs in lib/kunit (Fedora Kernel Team)
-- Linux v6.10.0-0.rc0.eb6a9339efeb
-Resolves:
-
-* Sun May 19 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.0450d2083be6.8]
-- Linux v6.10.0-0.rc0.0450d2083be6
-Resolves:
-
-* Sat May 18 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.4b377b4868ef.7]
-- Linux v6.10.0-0.rc0.4b377b4868ef
-Resolves:
-
-* Fri May 17 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.ea5f6ad9ad96.6]
- Turn off KUNIT_FAULT_TEST as it causes problems for CI (Justin M. Forbes)
- Add a config entry in pending for CONFIG_DRM_MSM_VALIDATE_XML (Justin M. Forbes)
-- Linux v6.10.0-0.rc0.ea5f6ad9ad96
-Resolves:
-
-* Thu May 16 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.3c999d1ae3c7.5]
- Flip CONFIG_SND_SOC_CS35L56_SPI in pending to avoid a mismatch (Justin M. Forbes)
-- Linux v6.10.0-0.rc0.3c999d1ae3c7
-Resolves:
-
-* Wed May 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.1b294a1f3561.4]
- Fix up a mismatch for RHEL (Justin M. Forbes)
-- Linux v6.10.0-0.rc0.1b294a1f3561
-Resolves:
-
-* Wed May 15 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.a5131c3fdf26.3]
- Reset changelog after rebase (Justin M. Forbes)
-Resolves:
-
-* Tue May 14 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.10.0-0.rc0.a5131c3fdf26.2]
- Reset RHEL_RELEASE to 0 for 6.10 (Justin M. Forbes)
- configs: move CONFIG_BLK_DEV_UBLK into rhel/configs/generic (Ming Lei)
- configs: move CONFIG_BLK_SED_OPAL into redhat/configs/common/generic (Ming Lei)
@@ -2755,5 +2787,5 @@ Resolves:
- [initial commit] Add scripts (Laura Abbott)
- [initial commit] Add configs (Laura Abbott)
- [initial commit] Add Makefiles (Laura Abbott)
-- Linux v6.10.0-0.rc0.a5131c3fdf26
-Resolves: RHEL-23931, RHEL-32110, rhbz#1471185, rhbz#1495307, rhbz#1509329, rhbz#1518076, rhbz#1518874, rhbz#1519554, rhbz#1546831, rhbz#1559877, rhbz#1561171, rhbz#1563590, rhbz#1565704, rhbz#1565717, rhbz#1572321, rhbz#1574502, rhbz#1590829, rhbz#1595918, rhbz#1598366, rhbz#1602033, rhbz#1609604, rhbz#1610493, rhbz#1613522, rhbz#1638087, rhbz#1652256, rhbz#1652266, rhbz#1663728, rhbz#1670017, rhbz#1722136, rhbz#1730649, rhbz#1802694, rhbz#1810301, rhbz#1821565, rhbz#1831065, rhbz#1855161, rhbz#1856174, rhbz#1856176, rhbz#1858592, rhbz#1858594, rhbz#1858596, rhbz#1858599, rhbz#1869674, rhbz#1871130, rhbz#1876435, rhbz#1876436, rhbz#1876977, rhbz#1877192, rhbz#1880486, rhbz#1890304, rhbz#1903201, rhbz#1915073, rhbz#1915290, rhbz#1930649, rhbz#1939095, rhbz#1940075, rhbz#1940794, rhbz#1943423, rhbz#1945002, rhbz#1945179, rhbz#1945477, rhbz#1947240, rhbz#1948340, rhbz#1952426, rhbz#1952863, rhbz#1953486, rhbz#1956988, rhbz#1957210, rhbz#1957219, rhbz#1957305, rhbz#1957636, rhbz#1957819, rhbz#1961178, rhbz#1962936, rhbz#1964537, rhbz#1967640, rhbz#1972795, rhbz#1976270, rhbz#1976835, rhbz#1976877, rhbz#1976884, rhbz#1977056, rhbz#1977529, rhbz#1978539, rhbz#1979379, rhbz#1981406, rhbz#1983298, rhbz#1986223, rhbz#1988254, rhbz#1988384, rhbz#1990040, rhbz#1993393, rhbz#1994858, rhbz#1998953, rhbz#2000835, rhbz#2002344, rhbz#2004233, rhbz#2004821, rhbz#2006813, rhbz#2007430, rhbz#2012226, rhbz#2014492, rhbz#2019377, rhbz#2020132, rhbz#2022578, rhbz#2023782, rhbz#2024595, rhbz#2025985, rhbz#2026319, rhbz#2027506, rhbz#2031547, rhbz#2032758, rhbz#2034670, rhbz#2038999, rhbz#2040643, rhbz#2041184, rhbz#2041186, rhbz#2041365, rhbz#2041990, rhbz#2042240, rhbz#2042241, rhbz#2043141, rhbz#2044155, rhbz#2053836, rhbz#2054579, rhbz#2062054, rhbz#2062909, rhbz#2071969, rhbz#2089765, rhbz#2115876, rhbz#2120968, rhbz#2122595, rhbz#2140017, rhbz#2142658, rhbz#2149273, rhbz#2153073, rhbz#2166911, rhbz#2188441, rhbz#2208834, rhbz#2216678, rhbz#2227793, rhbz#2231407, rhbz#2233269
+- Linux v6.11.0-0.rc0.d67978318827
+Resolves: RHEL-23931, RHEL-32110, RHEL-32895, RHEL-32987, RHEL-36646, RHEL-36647, RHEL-40251, RHEL-40411, RHEL-41231, RHEL-43556, rhbz#1471185, rhbz#1495307, rhbz#1509329, rhbz#1518076, rhbz#1518874, rhbz#1519554, rhbz#1546831, rhbz#1559877, rhbz#1561171, rhbz#1563590, rhbz#1565704, rhbz#1565717, rhbz#1572321, rhbz#1574502, rhbz#1590829, rhbz#1595918, rhbz#1598366, rhbz#1602033, rhbz#1609604, rhbz#1610493, rhbz#1613522, rhbz#1638087, rhbz#1652256, rhbz#1652266, rhbz#1663728, rhbz#1670017, rhbz#1722136, rhbz#1730649, rhbz#1802694, rhbz#1810301, rhbz#1821565, rhbz#1831065, rhbz#1855161, rhbz#1856174, rhbz#1856176, rhbz#1858592, rhbz#1858594, rhbz#1858596, rhbz#1858599, rhbz#1869674, rhbz#1871130, rhbz#1876435, rhbz#1876436, rhbz#1876977, rhbz#1877192, rhbz#1880486, rhbz#1890304, rhbz#1903201, rhbz#1915073, rhbz#1915290, rhbz#1930649, rhbz#1939095, rhbz#1940075, rhbz#1940794, rhbz#1943423, rhbz#1945002, rhbz#1945179, rhbz#1945477, rhbz#1947240, rhbz#1948340, rhbz#1952426, rhbz#1952863, rhbz#1953486, rhbz#1956988, rhbz#1957210, rhbz#1957219, rhbz#1957305, rhbz#1957636, rhbz#1957819, rhbz#1961178, rhbz#1962936, rhbz#1964537, rhbz#1967640, rhbz#1972795, rhbz#1976270, rhbz#1976835, rhbz#1976877, rhbz#1976884, rhbz#1977056, rhbz#1977529, rhbz#1978539, rhbz#1979379, rhbz#1981406, rhbz#1983298, rhbz#1986223, rhbz#1988254, rhbz#1988384, rhbz#1990040, rhbz#1993393, rhbz#1994858, rhbz#1998953, rhbz#2000835, rhbz#2002344, rhbz#2004233, rhbz#2004821, rhbz#2006813, rhbz#2007430, rhbz#2012226, rhbz#2014492, rhbz#2019377, rhbz#2020132, rhbz#2022578, rhbz#2023782, rhbz#2024595, rhbz#2025985, rhbz#2026319, rhbz#2027506, rhbz#2031547, rhbz#2032758, rhbz#2034670, rhbz#2038999, rhbz#2040643, rhbz#2041184, rhbz#2041186, rhbz#2041365, rhbz#2041990, rhbz#2042240, rhbz#2042241, rhbz#2043141, rhbz#2044155, rhbz#2053836, rhbz#2054579, rhbz#2062054, rhbz#2062909, rhbz#2071969, rhbz#2089765, rhbz#2115876, rhbz#2120968, rhbz#2122595, rhbz#2140017, rhbz#2142658, rhbz#2149273, rhbz#2153073, rhbz#2166911, rhbz#2188441, rhbz#2208834, rhbz#2216678, rhbz#2227793, rhbz#2231407, rhbz#2233269
diff --git a/SOURCES/lenovo-legion-laptop.patch b/SOURCES/lenovo-legion-laptop.patch
index 6faae9b..cff38b0 100644
--- a/SOURCES/lenovo-legion-laptop.patch
+++ b/SOURCES/lenovo-legion-laptop.patch
@@ -49,7 +49,7 @@ new file mode 100644
index 000000000..5ec0a518f
--- /dev/null
+++ b/drivers/platform/x86/legion-laptop.c
-@@ -0,0 +1,6089 @@
+@@ -0,0 +1,6088 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * legion-laptop.c - Extra Lenovo Legion laptop support, in
@@ -6047,7 +6047,7 @@ index 000000000..5ec0a518f
+ return err;
+}
+
-+static int legion_remove(struct platform_device *pdev)
++static void legion_remove(struct platform_device *pdev)
+{
+ struct legion_private *priv = dev_get_drvdata(&pdev->dev);
+
@@ -6075,7 +6075,6 @@ index 000000000..5ec0a518f
+ legion_shared_exit(priv);
+
+ pr_info("Legion platform unloaded\n");
-+ return 0;
+}
+
+static int legion_resume(struct platform_device *pdev)
@@ -6139,6 +6138,3 @@ index 000000000..5ec0a518f
+}
+
+module_exit(legion_exit);
---
-2.43.2
-
diff --git a/SOURCES/linux-surface.patch b/SOURCES/linux-surface.patch
index 9d19868..7219718 100644
--- a/SOURCES/linux-surface.patch
+++ b/SOURCES/linux-surface.patch
@@ -1,4 +1,4 @@
-From 2dd7c57b604b7cae49efcebc5fb6e46f7401a69b Mon Sep 17 00:00:00 2001
+From 3072491a57e495f0c1cea7d177f23b7e1b2dce4f Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 9 Jun 2024 19:48:58 +0200
Subject: [PATCH] Revert "efi/x86: Set the PE/COFF header's NX compat flag
@@ -35,7 +35,7 @@ index b5c79f43359b..a1bbedd989e4 100644
--
2.46.1
-From 8c63d9f68dff804be41fcf71b725a1e28c78118f Mon Sep 17 00:00:00 2001
+From 5c2e6c9e2424f940b98ac772b9e8c6bae07563c9 Mon Sep 17 00:00:00 2001
From: "J. Eduardo" <j.eduardo@gmail.com>
Date: Sun, 25 Aug 2024 14:17:45 +0200
Subject: [PATCH] PM: hibernate: Add a lockdown_hibernate parameter
@@ -53,10 +53,10 @@ Patchset: secureboot
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index c82446cef8e2..2ae1a6fda7f9 100644
+index 09126bb8cc9f..d4203d40146e 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
-@@ -3000,6 +3000,11 @@
+@@ -3020,6 +3020,11 @@
to extract confidential information from the kernel
are also disabled.
@@ -110,7 +110,7 @@ index 0a213f69a9e4..8e4f9dcc9f4c 100644
--
2.46.1
-From 3d3aec0cd78fd07d406486dd140daa7baf1fba7c Mon Sep 17 00:00:00 2001
+From 5e2a56c28a75458faee96311074a886d18df278e Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 18 Oct 2020 16:42:44 +0900
Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI
@@ -190,7 +190,7 @@ index 51187b1e0ed2..bfb83ce8d8f8 100644
/*
* Match for the GPDwin which unfortunately uses somewhat
diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
-index 5e2ec60e2954..207868c699f2 100644
+index e4c3492a0c28..0b930c91bccb 100644
--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
+++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
@@ -27,6 +27,14 @@ static const struct dmi_system_id cht_table[] = {
@@ -211,7 +211,7 @@ index 5e2ec60e2954..207868c699f2 100644
--
2.46.1
-From a50739a5e7b0ca9f6bca85606f2b9389a9dd6bec Mon Sep 17 00:00:00 2001
+From d3dce7daa7c9b02fffc26ab4b001dd28bacc0354 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
Date: Tue, 3 Nov 2020 13:28:04 +0100
Subject: [PATCH] mwifiex: Add quirk resetting the PCI bridge on MS Surface
@@ -378,7 +378,7 @@ index d6ff964aec5b..5d30ae39d65e 100644
--
2.46.1
-From 883ef69235ff8daa9653576dd6104460f60b7bde Mon Sep 17 00:00:00 2001
+From 9769338807b783cee28ff7bccbaa0e60c684be9f Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:11:49 +0900
Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+
@@ -533,7 +533,7 @@ index 5d30ae39d65e..c14eb56eb911 100644
--
2.46.1
-From 9e1720f0132e61bc6f738284080c6925941e1a91 Mon Sep 17 00:00:00 2001
+From f9801752d406cd308af5286c21bb27d946d3e9c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
Date: Thu, 25 Mar 2021 11:33:02 +0100
Subject: [PATCH] Bluetooth: btusb: Lower passive lescan interval on Marvell
@@ -569,7 +569,7 @@ Patchset: mwifiex
1 file changed, 15 insertions(+)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
-index 0927f51867c2..3d3573829631 100644
+index 51d9d4532dda..e62c565ebc6d 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -65,6 +65,7 @@ static struct usb_driver btusb_driver;
@@ -588,7 +588,7 @@ index 0927f51867c2..3d3573829631 100644
/* Intel Bluetooth devices */
{ USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_COMBINED },
-@@ -4448,6 +4450,19 @@ static int btusb_probe(struct usb_interface *intf,
+@@ -3856,6 +3858,19 @@ static int btusb_probe(struct usb_interface *intf,
if (id->driver_info & BTUSB_MARVELL)
hdev->set_bdaddr = btusb_set_bdaddr_marvell;
@@ -611,7 +611,7 @@ index 0927f51867c2..3d3573829631 100644
--
2.46.1
-From 68efac8fe5bd9af5e3c3e1d3cf7d9d2a3a5f4248 Mon Sep 17 00:00:00 2001
+From 137690d1fd93f0c5f723f1734e2b8db6709f806e Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 27 Feb 2021 00:45:52 +0100
Subject: [PATCH] ath10k: Add module parameters to override board files
@@ -633,10 +633,10 @@ Patchset: ath10k
1 file changed, 57 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
-index bdf0552cd1c3..e062cc687689 100644
+index b3294287bce1..2936fdae823c 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
-@@ -39,6 +39,9 @@ static bool fw_diag_log;
+@@ -40,6 +40,9 @@ static bool fw_diag_log;
/* frame mode values are mapped as per enum ath10k_hw_txrx_mode */
unsigned int ath10k_frame_mode = ATH10K_HW_TXRX_NATIVE_WIFI;
@@ -646,7 +646,7 @@ index bdf0552cd1c3..e062cc687689 100644
unsigned long ath10k_coredump_mask = BIT(ATH10K_FW_CRASH_DUMP_REGISTERS) |
BIT(ATH10K_FW_CRASH_DUMP_CE_DATA);
-@@ -51,6 +54,9 @@ module_param(fw_diag_log, bool, 0644);
+@@ -52,6 +55,9 @@ module_param(fw_diag_log, bool, 0644);
module_param_named(frame_mode, ath10k_frame_mode, uint, 0644);
module_param_named(coredump_mask, ath10k_coredump_mask, ulong, 0444);
@@ -656,7 +656,7 @@ index bdf0552cd1c3..e062cc687689 100644
MODULE_PARM_DESC(debug_mask, "Debugging mask");
MODULE_PARM_DESC(uart_print, "Uart target debugging");
MODULE_PARM_DESC(skip_otp, "Skip otp failure for calibration in testmode");
-@@ -60,6 +66,9 @@ MODULE_PARM_DESC(frame_mode,
+@@ -61,6 +67,9 @@ MODULE_PARM_DESC(frame_mode,
MODULE_PARM_DESC(coredump_mask, "Bitfield of what to include in firmware crash file");
MODULE_PARM_DESC(fw_diag_log, "Diag based fw log debugging");
@@ -666,7 +666,7 @@ index bdf0552cd1c3..e062cc687689 100644
static const struct ath10k_hw_params ath10k_hw_params_list[] = {
{
.id = QCA988X_HW_2_0_VERSION,
-@@ -914,6 +923,42 @@ static int ath10k_init_configure_target(struct ath10k *ar)
+@@ -931,6 +940,42 @@ static int ath10k_init_configure_target(struct ath10k *ar)
return 0;
}
@@ -709,7 +709,7 @@ index bdf0552cd1c3..e062cc687689 100644
static const struct firmware *ath10k_fetch_fw_file(struct ath10k *ar,
const char *dir,
const char *file)
-@@ -928,6 +973,18 @@ static const struct firmware *ath10k_fetch_fw_file(struct ath10k *ar,
+@@ -945,6 +990,18 @@ static const struct firmware *ath10k_fetch_fw_file(struct ath10k *ar,
if (dir == NULL)
dir = ".";
@@ -731,7 +731,7 @@ index bdf0552cd1c3..e062cc687689 100644
--
2.46.1
-From 7e608ebdf188a298503111e503a4cc2fc3880f7c Mon Sep 17 00:00:00 2001
+From 349269d5e90409c3dd12e022da4771c6a66752b6 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Thu, 30 Jul 2020 13:21:53 +0200
Subject: [PATCH] mei: me: Add Icelake device ID for iTouch
@@ -770,7 +770,7 @@ index 6589635f8ba3..a1df48a434e2 100644
--
2.46.1
-From 8b12cf7a1fe199057c7a39087d233f62fd4d6a93 Mon Sep 17 00:00:00 2001
+From 9c052968302b202812f519f38839dd00d3621795 Mon Sep 17 00:00:00 2001
From: Liban Hannan <liban.p@gmail.com>
Date: Tue, 12 Apr 2022 23:31:12 +0100
Subject: [PATCH] iommu: Use IOMMU passthrough mode for IPTS
@@ -794,7 +794,7 @@ Patchset: ipts
1 file changed, 29 insertions(+)
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index e9bea0305c26..6ee97bf7b6a9 100644
+index 4aa070cf56e7..5df658b9811b 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -40,6 +40,11 @@
@@ -824,7 +824,7 @@ index e9bea0305c26..6ee97bf7b6a9 100644
const struct iommu_ops intel_iommu_ops;
static const struct iommu_dirty_ops intel_dirty_ops;
-@@ -2195,6 +2202,9 @@ static int device_def_domain_type(struct device *dev)
+@@ -2156,6 +2163,9 @@ static int device_def_domain_type(struct device *dev)
if ((iommu_identity_mapping & IDENTMAP_AZALIA) && IS_AZALIA(pdev))
return IOMMU_DOMAIN_IDENTITY;
@@ -834,7 +834,7 @@ index e9bea0305c26..6ee97bf7b6a9 100644
}
return 0;
-@@ -2495,6 +2505,9 @@ static int __init init_dmars(void)
+@@ -2456,6 +2466,9 @@ static int __init init_dmars(void)
iommu_set_root_entry(iommu);
}
@@ -844,7 +844,7 @@ index e9bea0305c26..6ee97bf7b6a9 100644
check_tylersburg_isoch();
ret = si_domain_init(hw_pass_through);
-@@ -4617,6 +4630,18 @@ static void quirk_iommu_igfx(struct pci_dev *dev)
+@@ -4699,6 +4712,18 @@ static void quirk_iommu_igfx(struct pci_dev *dev)
disable_igfx_iommu = 1;
}
@@ -863,7 +863,7 @@ index e9bea0305c26..6ee97bf7b6a9 100644
/* G4x/GM45 integrated gfx dmar support is totally busted. */
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_igfx);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_igfx);
-@@ -4652,6 +4677,10 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx);
+@@ -4734,6 +4759,10 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163A, quirk_iommu_igfx);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163D, quirk_iommu_igfx);
@@ -877,7 +877,7 @@ index e9bea0305c26..6ee97bf7b6a9 100644
--
2.46.1
-From fd63fc042c6554c75134e4dab8e4a1d74c495d05 Mon Sep 17 00:00:00 2001
+From 4d098196ff771e07ce301632377779c94dfa7cb4 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Sun, 11 Dec 2022 12:00:59 +0100
Subject: [PATCH] hid: Add support for Intel Precise Touch and Stylus
@@ -955,10 +955,10 @@ index 08446c89eff6..ccddfba86004 100644
+
endif # HID_SUPPORT
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index ce71b53ea6c5..de41081b6a5a 100644
+index e40f1ddebbb7..bdb17cffca2f 100644
--- a/drivers/hid/Makefile
+++ b/drivers/hid/Makefile
-@@ -171,3 +171,5 @@ obj-$(INTEL_ISH_FIRMWARE_DOWNLOADER) += intel-ish-hid/
+@@ -169,3 +169,5 @@ obj-$(INTEL_ISH_FIRMWARE_DOWNLOADER) += intel-ish-hid/
obj-$(CONFIG_AMD_SFH_HID) += amd-sfh-hid/
obj-$(CONFIG_SURFACE_HID_CORE) += surface-hid/
@@ -3972,7 +3972,7 @@ index 000000000000..1f966b8b32c4
--
2.46.1
-From dc65c76763207057a6797b0ef844c3f58e6a6e15 Mon Sep 17 00:00:00 2001
+From 153d9fcfbe1cd5765470d42ae7aa82825dc9ffc3 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Sun, 11 Dec 2022 12:03:38 +0100
Subject: [PATCH] iommu: intel: Disable source id verification for ITHC
@@ -3984,7 +3984,7 @@ Patchset: ithc
1 file changed, 16 insertions(+)
diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c
-index e4a70886678c..961a33b87c24 100644
+index e090ca07364b..e575193615bf 100644
--- a/drivers/iommu/intel/irq_remapping.c
+++ b/drivers/iommu/intel/irq_remapping.c
@@ -389,6 +389,22 @@ static int set_msi_sid(struct irte *irte, struct pci_dev *dev)
@@ -4013,7 +4013,7 @@ index e4a70886678c..961a33b87c24 100644
--
2.46.1
-From c3ddc02f7b0e27c09233022d7bbfd6b72ca12d2e Mon Sep 17 00:00:00 2001
+From e3fd5a2f58e174fab58d777ad43a2fb378e58ce9 Mon Sep 17 00:00:00 2001
From: quo <tuple@list.ru>
Date: Sun, 11 Dec 2022 12:10:54 +0100
Subject: [PATCH] hid: Add support for Intel Touch Host Controller
@@ -4071,10 +4071,10 @@ index ccddfba86004..8e2ea8175bfb 100644
+
endif # HID_SUPPORT
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index de41081b6a5a..9d156f1b3910 100644
+index bdb17cffca2f..8987177f8b81 100644
--- a/drivers/hid/Makefile
+++ b/drivers/hid/Makefile
-@@ -173,3 +173,4 @@ obj-$(CONFIG_AMD_SFH_HID) += amd-sfh-hid/
+@@ -171,3 +171,4 @@ obj-$(CONFIG_AMD_SFH_HID) += amd-sfh-hid/
obj-$(CONFIG_SURFACE_HID_CORE) += surface-hid/
obj-$(CONFIG_HID_IPTS) += ipts/
@@ -6743,7 +6743,7 @@ index 000000000000..aec320d4e945
--
2.46.1
-From 3e6733db885b3a91339039897cbf0f3e05cda2a5 Mon Sep 17 00:00:00 2001
+From 046b4dd2291ee2e379f529037eab24d6b0cee56e Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 30 Dec 2023 18:07:54 +0100
Subject: [PATCH] hwmon: Add thermal sensor driver for Surface Aggregator
@@ -6765,10 +6765,10 @@ Patchset: surface-sam
create mode 100644 drivers/hwmon/surface_temp.c
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index e14ae18a973b..76eabe3e4435 100644
+index b60fe2e58ad6..70c6385f0ed6 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
-@@ -2093,6 +2093,16 @@ config SENSORS_SURFACE_FAN
+@@ -2080,6 +2080,16 @@ config SENSORS_SURFACE_FAN
Select M or Y here, if you want to be able to read the fan's speed.
@@ -6786,11 +6786,11 @@ index e14ae18a973b..76eabe3e4435 100644
tristate "Texas Instruments ADC128D818"
depends on I2C
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
-index e3f25475d1f0..eff74ab7f720 100644
+index b1c7056c37db..3ce8d6a9202e 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
-@@ -209,6 +209,7 @@ obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
- obj-$(CONFIG_SENSORS_SPARX5) += sparx5-temp.o
+@@ -209,6 +209,7 @@ obj-$(CONFIG_SENSORS_SPARX5) += sparx5-temp.o
+ obj-$(CONFIG_SENSORS_SPD5118) += spd5118.o
obj-$(CONFIG_SENSORS_STTS751) += stts751.o
obj-$(CONFIG_SENSORS_SURFACE_FAN)+= surface_fan.o
+obj-$(CONFIG_SENSORS_SURFACE_TEMP)+= surface_temp.o
@@ -6971,7 +6971,7 @@ index 000000000000..48c3e826713f
--
2.46.1
-From 3e4479ac556ff21b45485822edb0980bbb27fdba Mon Sep 17 00:00:00 2001
+From e8afedc65f5b36c2e2845e7b5848750785512817 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 30 Dec 2023 18:12:23 +0100
Subject: [PATCH] hwmon: surface_temp: Add support for sensor names
@@ -7166,7 +7166,7 @@ index 48c3e826713f..4c08926139db 100644
--
2.46.1
-From 134830c02674d93c2433bb898de34d1b84467f86 Mon Sep 17 00:00:00 2001
+From 3f6a1691ef17be41dcf06a10d9f61f8f782c89eb Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 25 Jul 2020 17:19:53 +0200
Subject: [PATCH] i2c: acpi: Implement RawBytes read access
@@ -7277,7 +7277,7 @@ index 14ae0cfc325e..6197c5252d2a 100644
--
2.46.1
-From 61af2c864646d5582463f9e5fbf06a96e0c4300d Mon Sep 17 00:00:00 2001
+From 2e305391186160d0098b014174322fc7bf80f778 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 13 Feb 2021 16:41:18 +0100
Subject: [PATCH] platform/surface: Add driver for Surface Book 1 dGPU switch
@@ -7474,7 +7474,7 @@ index 000000000000..68db237734a1
--
2.46.1
-From 02f4deefe4c0ab63cd6771198cd05d5798fcc80f Mon Sep 17 00:00:00 2001
+From 0200cc75ca3e977b952b064efa6a1f1eb013b782 Mon Sep 17 00:00:00 2001
From: Sachi King <nakato@nakato.io>
Date: Tue, 5 Oct 2021 00:05:09 +1100
Subject: [PATCH] Input: soc_button_array - support AMD variant Surface devices
@@ -7496,7 +7496,7 @@ Patchset: surface-button
1 file changed, 8 insertions(+), 25 deletions(-)
diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
-index f6d060377d18..b8603f74eb28 100644
+index 5c5d407fe965..4e1bfe90e730 100644
--- a/drivers/input/misc/soc_button_array.c
+++ b/drivers/input/misc/soc_button_array.c
@@ -540,8 +540,8 @@ static const struct soc_device_data soc_device_MSHW0028 = {
@@ -7551,7 +7551,7 @@ index f6d060377d18..b8603f74eb28 100644
--
2.46.1
-From fbdda31b4a3ce2a7113fa831056830b6b46cf0df Mon Sep 17 00:00:00 2001
+From 193f349dc523cfb1d718c3f3f7f1a3e1152bb726 Mon Sep 17 00:00:00 2001
From: Sachi King <nakato@nakato.io>
Date: Tue, 5 Oct 2021 00:22:57 +1100
Subject: [PATCH] platform/surface: surfacepro3_button: don't load on amd
@@ -7623,7 +7623,7 @@ index 2755601f979c..4240c98ca226 100644
--
2.46.1
-From edc26a9d993aca624b164989945d6bbcc5c7a856 Mon Sep 17 00:00:00 2001
+From 5685742814d25f3e7bf875d953edb3606cadf964 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 18 Feb 2023 01:02:49 +0100
Subject: [PATCH] USB: quirks: Add USB_QUIRK_DELAY_INIT for Surface Go 3
@@ -7664,7 +7664,7 @@ index 13171454f959..a83beefd25f3 100644
--
2.46.1
-From 43bac5cac64c45b423509196acdb2261c3f0a7ba Mon Sep 17 00:00:00 2001
+From 996f946c80d5a28b533d2cb173faadf0421c05ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
Date: Thu, 5 Nov 2020 13:09:45 +0100
Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when
@@ -7897,7 +7897,7 @@ index 99812c0f830b..0b3b51e37149 100644
--
2.46.1
-From 41478ba3be0680c18610cb66f5344abadff1b82d Mon Sep 17 00:00:00 2001
+From 299f2254f1ea935f2f59c9150556dc6e26aa6ddb Mon Sep 17 00:00:00 2001
From: PJungkamp <p.jungkamp@gmail.com>
Date: Fri, 25 Feb 2022 12:04:25 +0100
Subject: [PATCH] hid/multitouch: Add support for surface pro type cover tablet
@@ -8196,7 +8196,7 @@ index 0b3b51e37149..481b97dce830 100644
--
2.46.1
-From fe6c6b6e8d581aeca114902ec5f962a44a0ee3ff Mon Sep 17 00:00:00 2001
+From 90fe04d6368553e9f920dc9ab000460d0b592cfa Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 19 Feb 2023 22:12:24 +0100
Subject: [PATCH] PCI: Add quirk to prevent calling shutdown mehtod
@@ -8221,7 +8221,7 @@ Patchset: surface-shutdown
3 files changed, 40 insertions(+)
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
-index af2996d0d17f..3ce0fb61257d 100644
+index f412ef73a6e4..9892cd72dd2c 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -505,6 +505,9 @@ static void pci_device_shutdown(struct device *dev)
@@ -8235,10 +8235,10 @@ index af2996d0d17f..3ce0fb61257d 100644
if (drv && drv->shutdown)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 568410e64ce6..f59d8fb36335 100644
+index a2ce4e08edf5..18b80d14bdfb 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -6273,3 +6273,39 @@ static void pci_mask_replay_timer_timeout(struct pci_dev *pdev)
+@@ -6277,3 +6277,39 @@ static void pci_mask_replay_timer_timeout(struct pci_dev *pdev)
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_GLI, 0x9750, pci_mask_replay_timer_timeout);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_GLI, 0x9755, pci_mask_replay_timer_timeout);
#endif
@@ -8279,10 +8279,10 @@ index 568410e64ce6..f59d8fb36335 100644
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x466d, quirk_no_shutdown); // Thunderbolt 4 NHI
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x46a8, quirk_no_shutdown); // GPU
diff --git a/include/linux/pci.h b/include/linux/pci.h
-index cafc5ab1cbcb..64bb5aca2c13 100644
+index 4cf89a4b4cbc..bb633c76d3a5 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -465,6 +465,7 @@ struct pci_dev {
+@@ -466,6 +466,7 @@ struct pci_dev {
unsigned int no_command_memory:1; /* No PCI_COMMAND_MEMORY */
unsigned int rom_bar_overlap:1; /* ROM BAR disable broken */
unsigned int rom_attr_enabled:1; /* Display of ROM attribute enabled? */
@@ -8293,7 +8293,7 @@ index cafc5ab1cbcb..64bb5aca2c13 100644
--
2.46.1
-From d0443743ccc9c4d76192f7bbf0152990e461945e Mon Sep 17 00:00:00 2001
+From 27ed0b03b6cfdbc60743f77b546fe4f157a1d512 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 12 Mar 2023 01:41:57 +0100
Subject: [PATCH] platform/surface: gpe: Add support for Surface Pro 9
@@ -8344,7 +8344,7 @@ index 62fd4004db31..103fc4468262 100644
--
2.46.1
-From e7b32369a9dc01221dc44a1250c425d8ebc9b28b Mon Sep 17 00:00:00 2001
+From 60b2e713e86789d7d6f7f28a46f8fa32c181a56a Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sun, 10 Oct 2021 20:56:57 +0200
Subject: [PATCH] ACPI: delay enumeration of devices with a _DEP pointing to an
@@ -8404,10 +8404,10 @@ Patchset: cameras
1 file changed, 3 insertions(+)
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
-index cdc5a74092c7..e3a16c14a29e 100644
+index 22ae7829a915..0fe281280316 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
-@@ -2176,6 +2176,9 @@ static acpi_status acpi_bus_check_add_2(acpi_handle handle, u32 lvl_not_used,
+@@ -2185,6 +2185,9 @@ static acpi_status acpi_bus_check_add_2(acpi_handle handle, u32 lvl_not_used,
static void acpi_default_enumeration(struct acpi_device *device)
{
@@ -8420,7 +8420,7 @@ index cdc5a74092c7..e3a16c14a29e 100644
--
2.46.1
-From aa71d469b9000984bfbd4ee4f596517db89bcb46 Mon Sep 17 00:00:00 2001
+From a06834b1abe43c0afbb5f4a1e1a1e85f249cab18 Mon Sep 17 00:00:00 2001
From: zouxiaoh <xiaohong.zou@intel.com>
Date: Fri, 25 Jun 2021 08:52:59 +0800
Subject: [PATCH] iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs
@@ -8446,7 +8446,7 @@ Patchset: cameras
1 file changed, 30 insertions(+)
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
-index 6ee97bf7b6a9..a1f86bde277a 100644
+index 5df658b9811b..7e3c58c872a7 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -45,6 +45,13 @@
@@ -8478,7 +8478,7 @@ index 6ee97bf7b6a9..a1f86bde277a 100644
#define IDENTMAP_IPTS 16
const struct iommu_ops intel_iommu_ops;
-@@ -2203,6 +2212,9 @@ static int device_def_domain_type(struct device *dev)
+@@ -2164,6 +2173,9 @@ static int device_def_domain_type(struct device *dev)
if ((iommu_identity_mapping & IDENTMAP_AZALIA) && IS_AZALIA(pdev))
return IOMMU_DOMAIN_IDENTITY;
@@ -8488,7 +8488,7 @@ index 6ee97bf7b6a9..a1f86bde277a 100644
if ((iommu_identity_mapping & IDENTMAP_IPTS) && IS_IPTS(pdev))
return IOMMU_DOMAIN_IDENTITY;
}
-@@ -2505,6 +2517,9 @@ static int __init init_dmars(void)
+@@ -2466,6 +2478,9 @@ static int __init init_dmars(void)
iommu_set_root_entry(iommu);
}
@@ -8498,7 +8498,7 @@ index 6ee97bf7b6a9..a1f86bde277a 100644
if (!dmar_map_ipts)
iommu_identity_mapping |= IDENTMAP_IPTS;
-@@ -4630,6 +4645,18 @@ static void quirk_iommu_igfx(struct pci_dev *dev)
+@@ -4712,6 +4727,18 @@ static void quirk_iommu_igfx(struct pci_dev *dev)
disable_igfx_iommu = 1;
}
@@ -8517,7 +8517,7 @@ index 6ee97bf7b6a9..a1f86bde277a 100644
static void quirk_iommu_ipts(struct pci_dev *dev)
{
if (!IS_IPTS(dev))
-@@ -4677,6 +4704,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx);
+@@ -4759,6 +4786,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1632, quirk_iommu_igfx);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163A, quirk_iommu_igfx);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x163D, quirk_iommu_igfx);
@@ -8530,7 +8530,7 @@ index 6ee97bf7b6a9..a1f86bde277a 100644
--
2.46.1
-From fb1981ea8427c311f08860ddbb2ea1b7e1ddd313 Mon Sep 17 00:00:00 2001
+From 11ccfff2684694956fb2156f8216c1275a6bd97d Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sun, 10 Oct 2021 20:57:02 +0200
Subject: [PATCH] platform/x86: int3472: Enable I2c daisy chain
@@ -8567,7 +8567,7 @@ index 1e107fd49f82..e3e1696e7f0e 100644
--
2.46.1
-From ae05619486ea72603af63628e7f7a0c3b4f045ac Mon Sep 17 00:00:00 2001
+From 469d8067637b158a501d8fa221cf7f922c021345 Mon Sep 17 00:00:00 2001
From: Daniel Scally <dan.scally@ideasonboard.com>
Date: Thu, 2 Mar 2023 12:59:39 +0000
Subject: [PATCH] platform/x86: int3472: Remap reset GPIO for INT347E
@@ -8623,7 +8623,7 @@ index 07b302e09340..baad1e50ca81 100644
--
2.46.1
-From 7066acd9423a7eecc94d22397095e04f4a47aba8 Mon Sep 17 00:00:00 2001
+From 7a741f318b87a42d351d142512d55f0407a7e9e3 Mon Sep 17 00:00:00 2001
From: Daniel Scally <dan.scally@ideasonboard.com>
Date: Tue, 21 Mar 2023 13:45:26 +0000
Subject: [PATCH] media: i2c: Clarify that gain is Analogue gain in OV7251
@@ -8662,7 +8662,7 @@ index 30f61e04ecaf..9c1292ca8552 100644
--
2.46.1
-From 9feb537c1c69e0d01ad3ed713959fcf371dc2db6 Mon Sep 17 00:00:00 2001
+From 8baca29ff57339999c716555b4f1d961abbec3b2 Mon Sep 17 00:00:00 2001
From: Daniel Scally <dan.scally@ideasonboard.com>
Date: Wed, 22 Mar 2023 11:01:42 +0000
Subject: [PATCH] media: v4l2-core: Acquire privacy led in
@@ -8681,10 +8681,10 @@ Patchset: cameras
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c
-index c477723c07bf..83413048eb35 100644
+index ee884a8221fb..4f6bafd900ee 100644
--- a/drivers/media/v4l2-core/v4l2-async.c
+++ b/drivers/media/v4l2-core/v4l2-async.c
-@@ -795,6 +795,10 @@ int __v4l2_async_register_subdev(struct v4l2_subdev *sd, struct module *module)
+@@ -799,6 +799,10 @@ int __v4l2_async_register_subdev(struct v4l2_subdev *sd, struct module *module)
INIT_LIST_HEAD(&sd->asc_list);
@@ -8696,7 +8696,7 @@ index c477723c07bf..83413048eb35 100644
* No reference taken. The reference is held by the device (struct
* v4l2_subdev.dev), and async sub-device does not exist independently
diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c
-index 89c7192148df..44eca113e772 100644
+index f19c8adf2c61..923ed1b5ab8b 100644
--- a/drivers/media/v4l2-core/v4l2-fwnode.c
+++ b/drivers/media/v4l2-core/v4l2-fwnode.c
@@ -1219,10 +1219,6 @@ int v4l2_async_register_subdev_sensor(struct v4l2_subdev *sd)
@@ -8713,7 +8713,7 @@ index 89c7192148df..44eca113e772 100644
--
2.46.1
-From 580ca92681c7c6bafa132b81043fbd0857b5da6b Mon Sep 17 00:00:00 2001
+From fbcac39c13e09ce4cc8ad3d4520fd03863eb52f0 Mon Sep 17 00:00:00 2001
From: Kate Hsuan <hpa@redhat.com>
Date: Tue, 21 Mar 2023 23:37:16 +0800
Subject: [PATCH] platform: x86: int3472: Add MFD cell for tps68470 LED
@@ -8754,7 +8754,7 @@ index e3e1696e7f0e..423dc555093f 100644
--
2.46.1
-From ef863c4385da78967765505ccd3702371a32d70e Mon Sep 17 00:00:00 2001
+From 8bbe05d964175fdebb1cd0693aade238df967362 Mon Sep 17 00:00:00 2001
From: Kate Hsuan <hpa@redhat.com>
Date: Tue, 21 Mar 2023 23:37:17 +0800
Subject: [PATCH] include: mfd: tps68470: Add masks for LEDA and LEDB
@@ -8795,7 +8795,7 @@ index 7807fa329db0..2d2abb25b944 100644
--
2.46.1
-From e81fa0ec83149cf15d779fea0ba7435f8fd28898 Mon Sep 17 00:00:00 2001
+From 8776136058fe2e8b5b1edaab6693448b37fa219d Mon Sep 17 00:00:00 2001
From: Kate Hsuan <hpa@redhat.com>
Date: Tue, 21 Mar 2023 23:37:18 +0800
Subject: [PATCH] leds: tps68470: Add LED control for tps68470
@@ -8818,10 +8818,10 @@ Patchset: cameras
create mode 100644 drivers/leds/leds-tps68470.c
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
-index 05e6af88b88c..c120eb0b5aa8 100644
+index 8d9d8da376e4..d8597897aa83 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -909,6 +909,18 @@ config LEDS_TPS6105X
+@@ -933,6 +933,18 @@ config LEDS_TPS6105X
It is a single boost converter primarily for white LEDs and
audio amplifiers.
@@ -8841,10 +8841,10 @@ index 05e6af88b88c..c120eb0b5aa8 100644
tristate "LED support for SGI Octane machines"
depends on LEDS_CLASS
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
-index effdfc6f1e95..6ce609b2cdac 100644
+index 18afbb5a23ee..a1d16c0af82d 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
-@@ -86,6 +86,7 @@ obj-$(CONFIG_LEDS_TCA6507) += leds-tca6507.o
+@@ -88,6 +88,7 @@ obj-$(CONFIG_LEDS_TCA6507) += leds-tca6507.o
obj-$(CONFIG_LEDS_TI_LMU_COMMON) += leds-ti-lmu-common.o
obj-$(CONFIG_LEDS_TLC591XX) += leds-tlc591xx.o
obj-$(CONFIG_LEDS_TPS6105X) += leds-tps6105x.o
@@ -9046,7 +9046,7 @@ index 000000000000..35aeb5db89c8
--
2.46.1
-From afce9fb83bf7355d5ceb4a6958023dd07e00cfdf Mon Sep 17 00:00:00 2001
+From 6e4b702fd02830ba9de5ac4fbb2eae53b02aeedc Mon Sep 17 00:00:00 2001
From: mojyack <mojyack@gmail.com>
Date: Sat, 3 Feb 2024 12:59:53 +0900
Subject: [PATCH] media: staging: ipu3-imgu: Fix multiple calls of s_stream on
@@ -9093,7 +9093,7 @@ index 3df58eb3e882..81aff2d5d898 100644
--
2.46.1
-From 10cc9e54fa6067a0c08dc4f2c0f5bf029e3a4ed1 Mon Sep 17 00:00:00 2001
+From 3a0e7fc61359fbfd0fef1b35579fa8f5039bb8a3 Mon Sep 17 00:00:00 2001
From: mojyack <mojyack@gmail.com>
Date: Tue, 26 Mar 2024 05:55:44 +0900
Subject: [PATCH] media: i2c: dw9719: fix probe error on surface go 2
@@ -9125,7 +9125,7 @@ index c626ed845928..0094cfda57ea 100644
--
2.46.1
-From 04f1ce03393e660c6275004e0ccda0f1e4481f8b Mon Sep 17 00:00:00 2001
+From 9d8082e995819cd474ea46b99e44f5e52f63818a Mon Sep 17 00:00:00 2001
From: Sachi King <nakato@nakato.io>
Date: Sat, 29 May 2021 17:47:38 +1000
Subject: [PATCH] ACPI: Add quirk for Surface Laptop 4 AMD missing irq 7
@@ -9148,7 +9148,7 @@ Patchset: amd-gpio
1 file changed, 17 insertions(+)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index 4bf82dbd2a6b..7a8cb090c656 100644
+index 9f4618dcd704..639fa57b6398 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -22,6 +22,7 @@
@@ -9159,7 +9159,7 @@ index 4bf82dbd2a6b..7a8cb090c656 100644
#include <asm/e820/api.h>
#include <asm/irqdomain.h>
-@@ -1216,6 +1217,17 @@ static void __init mp_config_acpi_legacy_irqs(void)
+@@ -1132,6 +1133,17 @@ static void __init mp_config_acpi_legacy_irqs(void)
}
}
@@ -9177,7 +9177,7 @@ index 4bf82dbd2a6b..7a8cb090c656 100644
/*
* Parse IOAPIC related entries in MADT
* returns 0 on success, < 0 on error
-@@ -1271,6 +1283,11 @@ static int __init acpi_parse_madt_ioapic_entries(void)
+@@ -1187,6 +1199,11 @@ static int __init acpi_parse_madt_ioapic_entries(void)
acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
acpi_gbl_FADT.sci_interrupt);
@@ -9192,7 +9192,7 @@ index 4bf82dbd2a6b..7a8cb090c656 100644
--
2.46.1
-From a05e3240a282702699117da0e657a46bc960a944 Mon Sep 17 00:00:00 2001
+From fc1eda8b7c4c5a183ba34d88a5778e68e49c59e5 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Thu, 3 Jun 2021 14:04:26 +0200
Subject: [PATCH] ACPI: Add AMD 13" Surface Laptop 4 model to irq 7 override
@@ -9207,10 +9207,10 @@ Patchset: amd-gpio
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index 7a8cb090c656..0faafc323e67 100644
+index 639fa57b6398..2449b256e19b 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
-@@ -1219,12 +1219,19 @@ static void __init mp_config_acpi_legacy_irqs(void)
+@@ -1135,12 +1135,19 @@ static void __init mp_config_acpi_legacy_irqs(void)
static const struct dmi_system_id surface_quirk[] __initconst = {
{
@@ -9234,7 +9234,7 @@ index 7a8cb090c656..0faafc323e67 100644
--
2.46.1
-From 4e5c87c48625f80729705e6ca756b289dace0452 Mon Sep 17 00:00:00 2001
+From a45bcc81c1b1a9922d759de30798e9f3bd89f1ac Mon Sep 17 00:00:00 2001
From: "Bart Groeneveld | GPX Solutions B.V" <bart@gpxbv.nl>
Date: Mon, 5 Dec 2022 16:08:46 +0100
Subject: [PATCH] acpi: allow usage of acpi_tad on HW-reduced platforms
@@ -9257,10 +9257,10 @@ Patchset: rtc
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/drivers/acpi/acpi_tad.c b/drivers/acpi/acpi_tad.c
-index 1d670dbe4d1d..71c9e375ca1c 100644
+index b831cb8e53dc..78bd0f926505 100644
--- a/drivers/acpi/acpi_tad.c
+++ b/drivers/acpi/acpi_tad.c
-@@ -432,6 +432,14 @@ static ssize_t caps_show(struct device *dev, struct device_attribute *attr,
+@@ -433,6 +433,14 @@ static ssize_t caps_show(struct device *dev, struct device_attribute *attr,
static DEVICE_ATTR_RO(caps);
@@ -9275,7 +9275,7 @@ index 1d670dbe4d1d..71c9e375ca1c 100644
static ssize_t ac_alarm_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{
-@@ -480,15 +488,14 @@ static ssize_t ac_status_show(struct device *dev, struct device_attribute *attr,
+@@ -481,15 +489,14 @@ static ssize_t ac_status_show(struct device *dev, struct device_attribute *attr,
static DEVICE_ATTR_RW(ac_status);
@@ -9294,7 +9294,7 @@ index 1d670dbe4d1d..71c9e375ca1c 100644
};
static ssize_t dc_alarm_store(struct device *dev, struct device_attribute *attr,
-@@ -564,13 +571,18 @@ static void acpi_tad_remove(struct platform_device *pdev)
+@@ -565,13 +572,18 @@ static void acpi_tad_remove(struct platform_device *pdev)
pm_runtime_get_sync(dev);
@@ -9315,7 +9315,7 @@ index 1d670dbe4d1d..71c9e375ca1c 100644
if (dd->capabilities & ACPI_TAD_DC_WAKE) {
acpi_tad_disable_timer(dev, ACPI_TAD_DC_TIMER);
acpi_tad_clear_status(dev, ACPI_TAD_DC_TIMER);
-@@ -612,12 +624,6 @@ static int acpi_tad_probe(struct platform_device *pdev)
+@@ -613,12 +625,6 @@ static int acpi_tad_probe(struct platform_device *pdev)
goto remove_handler;
}
@@ -9328,7 +9328,7 @@ index 1d670dbe4d1d..71c9e375ca1c 100644
dd = devm_kzalloc(dev, sizeof(*dd), GFP_KERNEL);
if (!dd) {
ret = -ENOMEM;
-@@ -648,6 +654,12 @@ static int acpi_tad_probe(struct platform_device *pdev)
+@@ -649,6 +655,12 @@ static int acpi_tad_probe(struct platform_device *pdev)
if (ret)
goto fail;
diff --git a/SOURCES/mt76:-mt7921:-Disable-powersave-features-by-default.patch b/SOURCES/mt76:-mt7921:-Disable-powersave-features-by-default.patch
deleted file mode 100644
index a397014..0000000
--- a/SOURCES/mt76:-mt7921:-Disable-powersave-features-by-default.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jan200101 <sentrycraft123@gmail.com>
-Date: Mon, 27 Nov 2023 15:25:48 +0100
-Subject: [PATCH] mt76: mt7921: Disable powersave features by default
-
-This brings WiFi latency down considerably and makes latency consistent by
-disabling runtime PM and typical powersave features by default. The actual
-power consumption difference is inconsequential on desktops and laptops,
-while the performance difference is monumental. Latencies of 20+ ms are no
-longer observed after this change, and the connection is much more stable.
-
-Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
----
- drivers/net/wireless/mediatek/mt76/mt7921/init.c | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/init.c b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
-index ff63f37f67d9..840b4c606c83 100644
---- a/drivers/net/wireless/mediatek/mt76/mt7921/init.c
-+++ b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
-@@ -220,12 +220,6 @@ int mt7921_register_device(struct mt792x_dev *dev)
- dev->pm.idle_timeout = MT792x_PM_TIMEOUT;
- dev->pm.stats.last_wake_event = jiffies;
- dev->pm.stats.last_doze_event = jiffies;
-- if (!mt76_is_usb(&dev->mt76)) {
-- dev->pm.enable_user = true;
-- dev->pm.enable = true;
-- dev->pm.ds_enable_user = true;
-- dev->pm.ds_enable = true;
-- }
-
- if (!mt76_is_mmio(&dev->mt76))
- hw->extra_tx_headroom += MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE;
-@@ -240,6 +234,8 @@ int mt7921_register_device(struct mt792x_dev *dev)
- if (ret)
- return ret;
-
-+ hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
-+
- hw->wiphy->reg_notifier = mt7921_regd_notifier;
- dev->mphy.sband_2g.sband.ht_cap.cap |=
- IEEE80211_HT_CAP_LDPC_CODING |
diff --git a/SOURCES/partial-clang-debug-snip.config b/SOURCES/partial-clang-debug-snip.config
index 19fa152..16523eb 100644
--- a/SOURCES/partial-clang-debug-snip.config
+++ b/SOURCES/partial-clang-debug-snip.config
@@ -1,3 +1,4 @@
# clang
+# CONFIG_DRM_WERROR is not set
CONFIG_KASAN_STACK=y
# CONFIG_KMSAN is not set
diff --git a/SOURCES/partial-clang-snip.config b/SOURCES/partial-clang-snip.config
index 841c19d..5a90de8 100644
--- a/SOURCES/partial-clang-snip.config
+++ b/SOURCES/partial-clang-snip.config
@@ -1,3 +1,4 @@
# clang
+# CONFIG_DRM_WERROR is not set
# CONFIG_KASAN_STACK is not set
# CONFIG_KMSAN is not set
diff --git a/SOURCES/partial-clang_lto-aarch64-debug-snip.config b/SOURCES/partial-clang_lto-aarch64-debug-snip.config
index 0178f37..ff106f3 100644
--- a/SOURCES/partial-clang_lto-aarch64-debug-snip.config
+++ b/SOURCES/partial-clang_lto-aarch64-debug-snip.config
@@ -1,3 +1,4 @@
# clang_lto
+# CONFIG_DRM_WERROR is not set
CONFIG_KASAN_STACK=y
# CONFIG_KMSAN is not set
diff --git a/SOURCES/partial-clang_lto-aarch64-snip.config b/SOURCES/partial-clang_lto-aarch64-snip.config
index 9e30765..ebab7f7 100644
--- a/SOURCES/partial-clang_lto-aarch64-snip.config
+++ b/SOURCES/partial-clang_lto-aarch64-snip.config
@@ -1,4 +1,5 @@
# clang_lto
+# CONFIG_DRM_WERROR is not set
# CONFIG_KASAN_STACK is not set
# CONFIG_KMSAN is not set
CONFIG_LTO_CLANG_THIN=y
diff --git a/SOURCES/partial-clang_lto-x86_64-debug-snip.config b/SOURCES/partial-clang_lto-x86_64-debug-snip.config
index 0178f37..ff106f3 100644
--- a/SOURCES/partial-clang_lto-x86_64-debug-snip.config
+++ b/SOURCES/partial-clang_lto-x86_64-debug-snip.config
@@ -1,3 +1,4 @@
# clang_lto
+# CONFIG_DRM_WERROR is not set
CONFIG_KASAN_STACK=y
# CONFIG_KMSAN is not set
diff --git a/SOURCES/partial-clang_lto-x86_64-snip.config b/SOURCES/partial-clang_lto-x86_64-snip.config
index 9e30765..ebab7f7 100644
--- a/SOURCES/partial-clang_lto-x86_64-snip.config
+++ b/SOURCES/partial-clang_lto-x86_64-snip.config
@@ -1,4 +1,5 @@
# clang_lto
+# CONFIG_DRM_WERROR is not set
# CONFIG_KASAN_STACK is not set
# CONFIG_KMSAN is not set
CONFIG_LTO_CLANG_THIN=y
diff --git a/SOURCES/patch-6.10-redhat.patch b/SOURCES/patch-6.11-redhat.patch
index bea7047..60f889c 100644
--- a/SOURCES/patch-6.10-redhat.patch
+++ b/SOURCES/patch-6.11-redhat.patch
@@ -1,70 +1,54 @@
- Documentation/virt/kvm/api.rst | 3 +
- Makefile | 12 ++
- arch/arm/Kconfig | 4 +-
+ Makefile | 40 +++
+ arch/arm/boot/dts/broadcom/bcm2837.dtsi | 2 +-
arch/arm64/Kconfig | 2 +-
- arch/powerpc/include/asm/kvm_host.h | 3 +
- arch/powerpc/include/uapi/asm/kvm.h | 3 +
- arch/powerpc/kvm/book3s_hv.c | 18 +++
- arch/powerpc/kvm/book3s_hv.h | 3 +
- arch/powerpc/kvm/book3s_hv_nestedv2.c | 18 +++
+ arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 16 ++
+ arch/arm64/boot/dts/broadcom/Makefile | 1 +
+ arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts | 64 +++++
+ arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 283 +++++++++++++++++++++
+ .../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 67 +++++
arch/s390/include/asm/ipl.h | 1 +
arch/s390/kernel/ipl.c | 5 +
arch/s390/kernel/setup.c | 4 +
- arch/x86/kernel/setup.c | 22 ++-
- certs/extract-cert.c | 25 +---
- crypto/drbg.c | 18 ++-
- crypto/rng.c | 149 ++++++++++++++++++---
- drivers/acpi/apei/hest.c | 8 ++
- drivers/acpi/irq.c | 17 ++-
- drivers/acpi/scan.c | 9 ++
- drivers/ata/libahci.c | 18 +++
- drivers/char/ipmi/ipmi_dmi.c | 15 +++
- drivers/char/ipmi/ipmi_msghandler.c | 16 ++-
- drivers/char/random.c | 122 +++++++++++++++++
+ arch/x86/kernel/setup.c | 22 +-
+ certs/extract-cert.c | 25 +-
+ crypto/akcipher.c | 6 +-
+ crypto/dh.c | 25 ++
+ crypto/seqiv.c | 15 +-
+ crypto/testmgr.c | 4 +-
+ drivers/acpi/apei/hest.c | 8 +
+ drivers/acpi/irq.c | 17 +-
+ drivers/acpi/scan.c | 9 +
+ drivers/ata/libahci.c | 18 ++
+ drivers/char/ipmi/ipmi_dmi.c | 15 ++
+ drivers/char/ipmi/ipmi_msghandler.c | 16 +-
drivers/firmware/efi/Makefile | 1 +
- drivers/firmware/efi/efi.c | 124 ++++++++++++-----
- drivers/firmware/efi/secureboot.c | 38 ++++++
- drivers/hid/hid-rmi.c | 66 ---------
- drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +++
- drivers/input/rmi4/rmi_driver.c | 124 ++++++++++-------
- drivers/iommu/iommu.c | 22 +++
- drivers/media/pci/intel/ipu-bridge.c | 40 ++++--
- drivers/pci/quirks.c | 24 ++++
- drivers/scsi/sd.c | 10 ++
+ drivers/firmware/efi/efi.c | 124 ++++++---
+ drivers/firmware/efi/secureboot.c | 38 +++
+ drivers/hid/hid-rmi.c | 66 -----
+ drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++
+ drivers/input/rmi4/rmi_driver.c | 124 +++++----
+ drivers/iommu/iommu.c | 22 ++
+ drivers/media/platform/qcom/camss/camss-video.c | 6 -
+ drivers/media/platform/qcom/camss/camss.c | 5 +-
+ drivers/pci/quirks.c | 24 ++
+ drivers/scsi/sd.c | 10 +
drivers/usb/core/hub.c | 7 +
- include/linux/crypto.h | 1 +
- include/linux/efi.h | 22 ++-
+ include/linux/crypto.h | 2 +
+ include/linux/efi.h | 22 +-
include/linux/lsm_hook_defs.h | 2 +
- include/linux/random.h | 10 ++
include/linux/rmi.h | 1 +
include/linux/security.h | 5 +
kernel/module/signing.c | 9 +-
- scripts/sign-file.c | 29 +---
+ scripts/sign-file.c | 29 +--
scripts/tags.sh | 2 +
security/integrity/platform_certs/load_uefi.c | 6 +-
- security/lockdown/Kconfig | 13 ++
+ security/lockdown/Kconfig | 13 +
security/lockdown/lockdown.c | 1 +
- security/security.c | 12 ++
- 47 files changed, 827 insertions(+), 256 deletions(-)
+ security/security.c | 12 +
+ 47 files changed, 974 insertions(+), 241 deletions(-)
-diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
-index eec8df1dde06a..88f49dd10cd06 100644
---- a/Documentation/virt/kvm/api.rst
-+++ b/Documentation/virt/kvm/api.rst
-@@ -2445,8 +2445,11 @@ registers, find a list below:
- PPC KVM_REG_PPC_PSSCR 64
- PPC KVM_REG_PPC_DEC_EXPIRY 64
- PPC KVM_REG_PPC_PTCR 64
-+ PPC KVM_REG_PPC_HASHKEYR 64
-+ PPC KVM_REG_PPC_HASHPKEYR 64
- PPC KVM_REG_PPC_DAWR1 64
- PPC KVM_REG_PPC_DAWRX1 64
-+ PPC KVM_REG_PPC_DEXCR 64
- PPC KVM_REG_PPC_TM_GPR0 64
- ...
- PPC KVM_REG_PPC_TM_GPR31 64
diff --git a/Makefile b/Makefile
-index 93731d0b1a04a..81291ebb3aa4f 100644
+index 7bcf0c32ea5e..f2c0bc57ebaa 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
@@ -86,27 +70,66 @@ index 93731d0b1a04a..81291ebb3aa4f 100644
# We are using a recursive build, so we need to do a little thinking
# to get the ordering right.
#
-diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index ee5115252aac4..7f3796df84041 100644
---- a/arch/arm/Kconfig
-+++ b/arch/arm/Kconfig
-@@ -1224,9 +1224,9 @@ config HIGHMEM
- If unsure, say n.
-
- config HIGHPTE
-- bool "Allocate 2nd-level pagetables from highmem" if EXPERT
-+ bool "Allocate 2nd-level pagetables from highmem"
- depends on HIGHMEM
-- default y
-+ default n
- help
- The VM uses one page of physical memory for each page table.
- For systems with a lot of processes, this can use a lot of
+@@ -333,6 +345,17 @@ ifneq ($(filter install,$(MAKECMDGOALS)),)
+ endif
+ endif
+
++# CKI/cross compilation hack
++# Do we need to rebuild scripts after cross compilation?
++# If kernel was cross-compiled, these scripts have arch of build host.
++REBUILD_SCRIPTS_FOR_CROSS:=0
++
++# Regenerating config with incomplete source tree will produce different
++# config options. Disable it.
++ifeq ($(REBUILD_SCRIPTS_FOR_CROSS),1)
++may-sync-config:=
++endif
++
+ ifdef mixed-build
+ # ===========================================================================
+ # We're called with mixed targets (*config and build targets).
+@@ -1849,6 +1872,23 @@ endif
+
+ ifdef CONFIG_MODULES
+
++scripts_build:
++ $(MAKE) $(build)=scripts/basic
++ $(MAKE) $(build)=scripts/mod
++ $(MAKE) $(build)=scripts scripts/module.lds
++ $(MAKE) $(build)=scripts scripts/unifdef
++ $(MAKE) $(build)=scripts
++
++prepare_after_cross:
++ # disable STACK_VALIDATION to avoid building objtool
++ sed -i '/^CONFIG_STACK_VALIDATION/d' ./include/config/auto.conf || true
++ # build minimum set of scripts and resolve_btfids to allow building
++ # external modules
++ $(MAKE) KBUILD_EXTMOD="" M="" scripts_build V=1
++ $(MAKE) -C tools/bpf/resolve_btfids
++
++PHONY += prepare_after_cross scripts_build
++
+ $(MODORDER): $(build-dir)
+ @:
+
+diff --git a/arch/arm/boot/dts/broadcom/bcm2837.dtsi b/arch/arm/boot/dts/broadcom/bcm2837.dtsi
+index 84c08b46519d..c281697142b1 100644
+--- a/arch/arm/boot/dts/broadcom/bcm2837.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm2837.dtsi
+@@ -9,7 +9,7 @@ soc {
+ <0x40000000 0x40000000 0x00001000>;
+ dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
+
+- local_intc: local_intc@40000000 {
++ local_intc: interrupt-controller@40000000 {
+ compatible = "brcm,bcm2836-l1-intc";
+ reg = <0x40000000 0x100>;
+ interrupt-controller;
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index cd9772b1fd95e..f3b3d8493c1c2 100644
+index c8cba20a4d11..40a1665236ab 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1364,7 +1364,7 @@ endchoice
+@@ -1365,7 +1365,7 @@ endchoice
config ARM64_FORCE_52BIT
bool "Force 52-bit virtual addresses for userspace"
@@ -115,122 +138,498 @@ index cd9772b1fd95e..f3b3d8493c1c2 100644
help
For systems with 52-bit userspace VAs enabled, the kernel will attempt
to maintain compatibility with older software by providing 48-bit VAs
-diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
-index 8abac532146e7..6a0c771d3ce89 100644
---- a/arch/powerpc/include/asm/kvm_host.h
-+++ b/arch/powerpc/include/asm/kvm_host.h
-@@ -599,6 +599,9 @@ struct kvm_vcpu_arch {
- ulong dawrx0;
- ulong dawr1;
- ulong dawrx1;
-+ ulong dexcr;
-+ ulong hashkeyr;
-+ ulong hashpkeyr;
- ulong ciabr;
- ulong cfar;
- ulong ppr;
-diff --git a/arch/powerpc/include/uapi/asm/kvm.h b/arch/powerpc/include/uapi/asm/kvm.h
-index 1691297a766a9..eaeda001784eb 100644
---- a/arch/powerpc/include/uapi/asm/kvm.h
-+++ b/arch/powerpc/include/uapi/asm/kvm.h
-@@ -645,6 +645,9 @@ struct kvm_ppc_cpu_char {
- #define KVM_REG_PPC_SIER3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc3)
- #define KVM_REG_PPC_DAWR1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc4)
- #define KVM_REG_PPC_DAWRX1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc5)
-+#define KVM_REG_PPC_DEXCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc6)
-+#define KVM_REG_PPC_HASHKEYR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc7)
-+#define KVM_REG_PPC_HASHPKEYR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc8)
-
- /* Transactional Memory checkpointed state:
- * This is all GPRs, all VSX regs and a subset of SPRs
-diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
-index d8352e4d9cdc7..36068c3ed8a76 100644
---- a/arch/powerpc/kvm/book3s_hv.c
-+++ b/arch/powerpc/kvm/book3s_hv.c
-@@ -2349,6 +2349,15 @@ static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
- case KVM_REG_PPC_DAWRX1:
- *val = get_reg_val(id, kvmppc_get_dawrx1_hv(vcpu));
- break;
-+ case KVM_REG_PPC_DEXCR:
-+ *val = get_reg_val(id, kvmppc_get_dexcr_hv(vcpu));
-+ break;
-+ case KVM_REG_PPC_HASHKEYR:
-+ *val = get_reg_val(id, kvmppc_get_hashkeyr_hv(vcpu));
-+ break;
-+ case KVM_REG_PPC_HASHPKEYR:
-+ *val = get_reg_val(id, kvmppc_get_hashpkeyr_hv(vcpu));
-+ break;
- case KVM_REG_PPC_CIABR:
- *val = get_reg_val(id, kvmppc_get_ciabr_hv(vcpu));
- break;
-@@ -2592,6 +2601,15 @@ static int kvmppc_set_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
- case KVM_REG_PPC_DAWRX1:
- kvmppc_set_dawrx1_hv(vcpu, set_reg_val(id, *val) & ~DAWRX_HYP);
- break;
-+ case KVM_REG_PPC_DEXCR:
-+ kvmppc_set_dexcr_hv(vcpu, set_reg_val(id, *val));
-+ break;
-+ case KVM_REG_PPC_HASHKEYR:
-+ kvmppc_set_hashkeyr_hv(vcpu, set_reg_val(id, *val));
-+ break;
-+ case KVM_REG_PPC_HASHPKEYR:
-+ kvmppc_set_hashpkeyr_hv(vcpu, set_reg_val(id, *val));
-+ break;
- case KVM_REG_PPC_CIABR:
- kvmppc_set_ciabr_hv(vcpu, set_reg_val(id, *val));
- /* Don't allow setting breakpoints in hypervisor code */
-diff --git a/arch/powerpc/kvm/book3s_hv.h b/arch/powerpc/kvm/book3s_hv.h
-index 47b2c815641e4..a404c9b221c1a 100644
---- a/arch/powerpc/kvm/book3s_hv.h
-+++ b/arch/powerpc/kvm/book3s_hv.h
-@@ -116,6 +116,9 @@ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawr0, 64, KVMPPC_GSID_DAWR0)
- KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawr1, 64, KVMPPC_GSID_DAWR1)
- KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawrx0, 64, KVMPPC_GSID_DAWRX0)
- KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawrx1, 64, KVMPPC_GSID_DAWRX1)
-+KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dexcr, 64, KVMPPC_GSID_DEXCR)
-+KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(hashkeyr, 64, KVMPPC_GSID_HASHKEYR)
-+KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(hashpkeyr, 64, KVMPPC_GSID_HASHPKEYR)
- KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(ciabr, 64, KVMPPC_GSID_CIABR)
- KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(wort, 64, KVMPPC_GSID_WORT)
- KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(ppr, 64, KVMPPC_GSID_PPR)
-diff --git a/arch/powerpc/kvm/book3s_hv_nestedv2.c b/arch/powerpc/kvm/book3s_hv_nestedv2.c
-index 342f583147709..eeecea8f202b3 100644
---- a/arch/powerpc/kvm/book3s_hv_nestedv2.c
-+++ b/arch/powerpc/kvm/book3s_hv_nestedv2.c
-@@ -193,6 +193,15 @@ static int gs_msg_ops_vcpu_fill_info(struct kvmppc_gs_buff *gsb,
- case KVMPPC_GSID_DAWRX1:
- rc = kvmppc_gse_put_u32(gsb, iden, vcpu->arch.dawrx1);
- break;
-+ case KVMPPC_GSID_DEXCR:
-+ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.dexcr);
-+ break;
-+ case KVMPPC_GSID_HASHKEYR:
-+ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.hashkeyr);
-+ break;
-+ case KVMPPC_GSID_HASHPKEYR:
-+ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.hashpkeyr);
-+ break;
- case KVMPPC_GSID_CIABR:
- rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.ciabr);
- break;
-@@ -445,6 +454,15 @@ static int gs_msg_ops_vcpu_refresh_info(struct kvmppc_gs_msg *gsm,
- case KVMPPC_GSID_DAWRX1:
- vcpu->arch.dawrx1 = kvmppc_gse_get_u32(gse);
- break;
-+ case KVMPPC_GSID_DEXCR:
-+ vcpu->arch.dexcr = kvmppc_gse_get_u64(gse);
-+ break;
-+ case KVMPPC_GSID_HASHKEYR:
-+ vcpu->arch.hashkeyr = kvmppc_gse_get_u64(gse);
-+ break;
-+ case KVMPPC_GSID_HASHPKEYR:
-+ vcpu->arch.hashpkeyr = kvmppc_gse_get_u64(gse);
-+ break;
- case KVMPPC_GSID_CIABR:
- vcpu->arch.ciabr = kvmppc_gse_get_u64(gse);
- break;
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+index e868ca5ae753..a5c3920e0f04 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+@@ -263,6 +263,14 @@ gpu0_thermal: gpu0-thermal {
+ polling-delay-passive = <0>;
+ polling-delay = <0>;
+ thermal-sensors = <&ths 1>;
++
++ trips {
++ gpu0_crit: gpu0-crit {
++ temperature = <110000>;
++ hysteresis = <2000>;
++ type = "critical";
++ };
++ };
+ };
+
+ gpu1_thermal: gpu1-thermal {
+@@ -270,6 +278,14 @@ gpu1_thermal: gpu1-thermal {
+ polling-delay-passive = <0>;
+ polling-delay = <0>;
+ thermal-sensors = <&ths 2>;
++
++ trips {
++ gpu1_crit: gpu1-crit {
++ temperature = <110000>;
++ hysteresis = <2000>;
++ type = "critical";
++ };
++ };
+ };
+ };
+
+diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
+index 8b4591ddd27c..92565e9781ad 100644
+--- a/arch/arm64/boot/dts/broadcom/Makefile
++++ b/arch/arm64/boot/dts/broadcom/Makefile
+@@ -6,6 +6,7 @@ DTC_FLAGS := -@
+ dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb \
+ bcm2711-rpi-4-b.dtb \
+ bcm2711-rpi-cm4-io.dtb \
++ bcm2712-rpi-5-b.dtb \
+ bcm2837-rpi-3-a-plus.dtb \
+ bcm2837-rpi-3-b.dtb \
+ bcm2837-rpi-3-b-plus.dtb \
+diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+new file mode 100644
+index 000000000000..2bdbb6780242
+--- /dev/null
++++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+@@ -0,0 +1,64 @@
++// SPDX-License-Identifier: (GPL-2.0 OR MIT)
++/dts-v1/;
++
++#include <dt-bindings/gpio/gpio.h>
++#include "bcm2712.dtsi"
++
++/ {
++ compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
++ model = "Raspberry Pi 5";
++
++ aliases {
++ serial10 = &uart10;
++ };
++
++ chosen: chosen {
++ stdout-path = "serial10:115200n8";
++ };
++
++ /* Will be filled by the bootloader */
++ memory@0 {
++ device_type = "memory";
++ reg = <0 0 0 0x28000000>;
++ };
++
++ sd_io_1v8_reg: sd-io-1v8-reg {
++ compatible = "regulator-gpio";
++ regulator-name = "vdd-sd-io";
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-boot-on;
++ regulator-always-on;
++ regulator-settling-time-us = <5000>;
++ gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
++ states = <1800000 1>,
++ <3300000 0>;
++ };
++
++ sd_vcc_reg: sd-vcc-reg {
++ compatible = "regulator-fixed";
++ regulator-name = "vcc-sd";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-boot-on;
++ enable-active-high;
++ gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
++ };
++};
++
++/* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector
++ * labeled "UART", i.e. the interface with the system console.
++ */
++&uart10 {
++ status = "okay";
++};
++
++/* SDIO1 is used to drive the SD card */
++&sdio1 {
++ vqmmc-supply = <&sd_io_1v8_reg>;
++ vmmc-supply = <&sd_vcc_reg>;
++ bus-width = <4>;
++ sd-uhs-sdr50;
++ sd-uhs-ddr50;
++ sd-uhs-sdr104;
++};
+diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+new file mode 100644
+index 000000000000..6e5a984c1d4e
+--- /dev/null
++++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+@@ -0,0 +1,283 @@
++// SPDX-License-Identifier: (GPL-2.0 OR MIT)
++#include <dt-bindings/interrupt-controller/arm-gic.h>
++
++/ {
++ compatible = "brcm,bcm2712";
++
++ #address-cells = <2>;
++ #size-cells = <2>;
++
++ interrupt-parent = <&gicv2>;
++
++ clocks {
++ /* The oscillator is the root of the clock tree. */
++ clk_osc: clk-osc {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-output-names = "osc";
++ clock-frequency = <54000000>;
++ };
++
++ clk_vpu: clk-vpu {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <750000000>;
++ clock-output-names = "vpu-clock";
++ };
++
++ clk_uart: clk-uart {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <9216000>;
++ clock-output-names = "uart-clock";
++ };
++
++ clk_emmc2: clk-emmc2 {
++ compatible = "fixed-clock";
++ #clock-cells = <0>;
++ clock-frequency = <200000000>;
++ clock-output-names = "emmc2-clock";
++ };
++ };
++
++ cpus: cpus {
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ /* Source for L1 d/i cache-line-size, cache-sets, cache-size
++ * https://developer.arm.com/documentation/100798/0401/L1-memory-system/About-the-L1-memory-system?lang=en
++ * Source for L2 cache-line-size and cache-sets:
++ * https://developer.arm.com/documentation/100798/0401/L2-memory-system/About-the-L2-memory-system?lang=en
++ * and for cache-size:
++ * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712
++ */
++ cpu0: cpu@0 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a76";
++ reg = <0x000>;
++ enable-method = "psci";
++ d-cache-size = <0x10000>;
++ d-cache-line-size = <64>;
++ d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ i-cache-size = <0x10000>;
++ i-cache-line-size = <64>;
++ i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ next-level-cache = <&l2_cache_l0>;
++
++ l2_cache_l0: l2-cache-l0 {
++ compatible = "cache";
++ cache-size = <0x80000>;
++ cache-line-size = <128>;
++ cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
++ cache-level = <2>;
++ cache-unified;
++ next-level-cache = <&l3_cache>;
++ };
++ };
++
++ cpu1: cpu@1 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a76";
++ reg = <0x100>;
++ enable-method = "psci";
++ d-cache-size = <0x10000>;
++ d-cache-line-size = <64>;
++ d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ i-cache-size = <0x10000>;
++ i-cache-line-size = <64>;
++ i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ next-level-cache = <&l2_cache_l1>;
++
++ l2_cache_l1: l2-cache-l1 {
++ compatible = "cache";
++ cache-size = <0x80000>;
++ cache-line-size = <128>;
++ cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
++ cache-level = <2>;
++ cache-unified;
++ next-level-cache = <&l3_cache>;
++ };
++ };
++
++ cpu2: cpu@2 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a76";
++ reg = <0x200>;
++ enable-method = "psci";
++ d-cache-size = <0x10000>;
++ d-cache-line-size = <64>;
++ d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ i-cache-size = <0x10000>;
++ i-cache-line-size = <64>;
++ i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ next-level-cache = <&l2_cache_l2>;
++
++ l2_cache_l2: l2-cache-l2 {
++ compatible = "cache";
++ cache-size = <0x80000>;
++ cache-line-size = <128>;
++ cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
++ cache-level = <2>;
++ cache-unified;
++ next-level-cache = <&l3_cache>;
++ };
++ };
++
++ cpu3: cpu@3 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a76";
++ reg = <0x300>;
++ enable-method = "psci";
++ d-cache-size = <0x10000>;
++ d-cache-line-size = <64>;
++ d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ i-cache-size = <0x10000>;
++ i-cache-line-size = <64>;
++ i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
++ next-level-cache = <&l2_cache_l3>;
++
++ l2_cache_l3: l2-cache-l3 {
++ compatible = "cache";
++ cache-size = <0x80000>;
++ cache-line-size = <128>;
++ cache-sets = <1024>; //512KiB(size)/64(line-size)=8192ways/8-way set
++ cache-level = <2>;
++ cache-unified;
++ next-level-cache = <&l3_cache>;
++ };
++ };
++
++ /* Source for cache-line-size and cache-sets:
++ * https://developer.arm.com/documentation/100453/0401/L3-cache?lang=en
++ * Source for cache-size:
++ * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712
++ */
++ l3_cache: l3-cache {
++ compatible = "cache";
++ cache-size = <0x200000>;
++ cache-line-size = <64>;
++ cache-sets = <2048>; // 2MiB(size)/64(line-size)=32768ways/16-way set
++ cache-level = <3>;
++ cache-unified;
++ };
++ };
++
++ psci {
++ method = "smc";
++ compatible = "arm,psci-1.0", "arm,psci-0.2";
++ };
++
++ rmem: reserved-memory {
++ ranges;
++ #address-cells = <2>;
++ #size-cells = <2>;
++
++ atf@0 {
++ reg = <0x0 0x0 0x0 0x80000>;
++ no-map;
++ };
++
++ cma: linux,cma {
++ compatible = "shared-dma-pool";
++ size = <0x0 0x4000000>; /* 64MB */
++ reusable;
++ linux,cma-default;
++ alloc-ranges = <0x0 0x00000000 0x0 0x40000000>;
++ };
++ };
++
++ soc: soc@107c000000 {
++ compatible = "simple-bus";
++ ranges = <0x00000000 0x10 0x00000000 0x80000000>;
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ sdio1: mmc@fff000 {
++ compatible = "brcm,bcm2712-sdhci",
++ "brcm,sdhci-brcmstb";
++ reg = <0x00fff000 0x260>,
++ <0x00fff400 0x200>;
++ reg-names = "host", "cfg";
++ interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&clk_emmc2>;
++ clock-names = "sw_sdio";
++ mmc-ddr-3_3v;
++ };
++
++ system_timer: timer@7c003000 {
++ compatible = "brcm,bcm2835-system-timer";
++ reg = <0x7c003000 0x1000>;
++ interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
++ <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
++ clock-frequency = <1000000>;
++ };
++
++ mailbox: mailbox@7c013880 {
++ compatible = "brcm,bcm2835-mbox";
++ reg = <0x7c013880 0x40>;
++ interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
++ #mbox-cells = <0>;
++ };
++
++ local_intc: interrupt-controller@7cd00000 {
++ compatible = "brcm,bcm2836-l1-intc";
++ reg = <0x7cd00000 0x100>;
++ };
++
++ uart10: serial@7d001000 {
++ compatible = "arm,pl011", "arm,primecell";
++ reg = <0x7d001000 0x200>;
++ interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
++ clocks = <&clk_uart>, <&clk_vpu>;
++ clock-names = "uartclk", "apb_pclk";
++ arm,primecell-periphid = <0x00241011>;
++ status = "disabled";
++ };
++
++ interrupt-controller@7d517000 {
++ compatible = "brcm,bcm7271-l2-intc";
++ reg = <0x7d517000 0x10>;
++ interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-controller;
++ #interrupt-cells = <1>;
++ };
++
++ gio_aon: gpio@7d517c00 {
++ compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
++ reg = <0x7d517c00 0x40>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ brcm,gpio-bank-widths = <17 6>;
++ /* The lack of 'interrupt-controller' property here is intended:
++ * don't use GIO_AON as an interrupt controller because it will
++ * clash with the firmware monitoring the PMIC interrupt via the VPU.
++ */
++ };
++
++ gicv2: interrupt-controller@7fff9000 {
++ compatible = "arm,gic-400";
++ reg = <0x7fff9000 0x1000>,
++ <0x7fffa000 0x2000>,
++ <0x7fffc000 0x2000>,
++ <0x7fffe000 0x2000>;
++ interrupt-controller;
++ #interrupt-cells = <3>;
++ };
++ };
++
++ timer {
++ compatible = "arm,armv8-timer";
++ interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
++ IRQ_TYPE_LEVEL_LOW)>,
++ <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
++ IRQ_TYPE_LEVEL_LOW)>,
++ <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
++ IRQ_TYPE_LEVEL_LOW)>,
++ <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
++ IRQ_TYPE_LEVEL_LOW)>,
++ <GIC_PPI 12 (GIC_CPU_MASK_SIMPLE(4) |
++ IRQ_TYPE_LEVEL_LOW)>;
++ };
++};
+diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+index b27143f81867..320706c88cdd 100644
+--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
++++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+@@ -592,6 +592,57 @@ vreg_l10d: ldo10 {
+ };
+ };
+
++&camss {
++ vdda-phy-supply = <&vreg_l6d>;
++ vdda-pll-supply = <&vreg_l4d>;
++
++ status = "okay";
++
++ ports {
++ port@0 {
++ csiphy0_lanes01_ep: endpoint@0 {
++ reg = <0>;
++ clock-lanes = <7>;
++ data-lanes = <0 1>;
++ remote-endpoint = <&ov5675_ep>;
++ };
++ };
++ };
++};
++
++&cci2 {
++ status = "okay";
++};
++
++&cci2_i2c1 {
++ camera@10 {
++ compatible = "ovti,ov5675";
++ reg = <0x10>;
++
++ reset-gpios = <&tlmm 15 GPIO_ACTIVE_LOW>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&cam_rgb_default>;
++
++ clocks = <&camcc CAMCC_MCLK3_CLK>;
++
++ orientation = <0>; /* Front facing */
++
++ avdd-supply = <&vreg_l6q>;
++ dvdd-supply = <&vreg_l2q>;
++ dovdd-supply = <&vreg_l7q>;
++
++ port {
++ ov5675_ep: endpoint {
++ clock-lanes = <0>;
++ data-lanes = <1 2>;
++ link-frequencies = /bits/ 64 <450000000>;
++ remote-endpoint = <&csiphy0_lanes01_ep>;
++ };
++ };
++
++ };
++};
++
+ &dispcc0 {
+ status = "okay";
+ };
+@@ -1436,6 +1487,22 @@ cam_indicator_en: cam-indicator-en-state {
+ bias-disable;
+ };
+
++ cam_rgb_default: cam-rgb-default-state {
++ mclk-pins {
++ pins = "gpio17";
++ function = "cam_mclk";
++ drive-strength = <16>;
++ bias-disable;
++ };
++
++ sc-rgb-xshut-n-pins {
++ pins = "gpio15";
++ function = "gpio";
++ drive-strength = <2>;
++ bias-disable;
++ };
++ };
++
+ edp_reg_en: edp-reg-en-state {
+ pins = "gpio25";
+ function = "gpio";
diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h
-index b0d00032479d6..afb9544fb0074 100644
+index b0d00032479d..afb9544fb007 100644
--- a/arch/s390/include/asm/ipl.h
+++ b/arch/s390/include/asm/ipl.h
@@ -139,6 +139,7 @@ int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf,
@@ -242,7 +641,7 @@ index b0d00032479d6..afb9544fb0074 100644
/*
* DIAG 308 support
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
-index 3a7d6e1722112..8163a2173247e 100644
+index f17bb7bf9392..66e530380ee3 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -2479,3 +2479,8 @@ int ipl_report_free(struct ipl_report *report)
@@ -255,7 +654,7 @@ index 3a7d6e1722112..8163a2173247e 100644
+ return !!ipl_secure_flag;
+}
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
-index 610e6f794511a..4fc7aca3f572c 100644
+index a3fea683b227..a3162d93f437 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -49,6 +49,7 @@
@@ -266,7 +665,7 @@ index 610e6f794511a..4fc7aca3f572c 100644
#include <linux/hugetlb.h>
#include <linux/kmemleak.h>
-@@ -891,6 +892,9 @@ void __init setup_arch(char **cmdline_p)
+@@ -910,6 +911,9 @@ void __init setup_arch(char **cmdline_p)
log_component_list();
@@ -277,7 +676,7 @@ index 610e6f794511a..4fc7aca3f572c 100644
/* boot_command_line has been already set up in early.c */
*cmdline_p = boot_command_line;
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 05c5aa951da74..da521c6f1cf2d 100644
+index 6129dc2ba784..feaf5fd3f37d 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -21,6 +21,7 @@
@@ -288,7 +687,7 @@ index 05c5aa951da74..da521c6f1cf2d 100644
#include <linux/usb/xhci-dbgp.h>
#include <linux/static_call.h>
#include <linux/swiotlb.h>
-@@ -902,6 +903,13 @@ void __init setup_arch(char **cmdline_p)
+@@ -904,6 +905,13 @@ void __init setup_arch(char **cmdline_p)
if (efi_enabled(EFI_BOOT))
efi_init();
@@ -302,7 +701,7 @@ index 05c5aa951da74..da521c6f1cf2d 100644
reserve_ibft_region();
x86_init.resources.dmi_setup();
-@@ -1064,19 +1072,7 @@ void __init setup_arch(char **cmdline_p)
+@@ -1065,19 +1073,7 @@ void __init setup_arch(char **cmdline_p)
/* Allocate bigger log buffer */
setup_log_buf(1);
@@ -324,7 +723,7 @@ index 05c5aa951da74..da521c6f1cf2d 100644
reserve_initrd();
diff --git a/certs/extract-cert.c b/certs/extract-cert.c
-index 70e9ec89d87d3..f5fb74916cee4 100644
+index 70e9ec89d87d..f5fb74916cee 100644
--- a/certs/extract-cert.c
+++ b/certs/extract-cert.c
@@ -21,7 +21,6 @@
@@ -366,282 +765,130 @@ index 70e9ec89d87d3..f5fb74916cee4 100644
} else {
BIO *b;
X509 *x509;
-diff --git a/crypto/drbg.c b/crypto/drbg.c
-index 3addce90930c3..730b03de596a3 100644
---- a/crypto/drbg.c
-+++ b/crypto/drbg.c
-@@ -1494,13 +1494,14 @@ static int drbg_generate(struct drbg_state *drbg,
- * Wrapper around drbg_generate which can pull arbitrary long strings
- * from the DRBG without hitting the maximum request limitation.
- *
-- * Parameters: see drbg_generate
-+ * Parameters: see drbg_generate, except @reseed, which triggers reseeding
- * Return codes: see drbg_generate -- if one drbg_generate request fails,
- * the entire drbg_generate_long request fails
- */
- static int drbg_generate_long(struct drbg_state *drbg,
- unsigned char *buf, unsigned int buflen,
-- struct drbg_string *addtl)
-+ struct drbg_string *addtl,
-+ bool reseed)
+diff --git a/crypto/akcipher.c b/crypto/akcipher.c
+index e0ff5f4dda6d..098a52ded759 100644
+--- a/crypto/akcipher.c
++++ b/crypto/akcipher.c
+@@ -126,14 +126,12 @@ int crypto_register_akcipher(struct akcipher_alg *alg)
{
- unsigned int len = 0;
- unsigned int slice = 0;
-@@ -1510,6 +1511,8 @@ static int drbg_generate_long(struct drbg_state *drbg,
- slice = ((buflen - len) / drbg_max_request_bytes(drbg));
- chunk = slice ? drbg_max_request_bytes(drbg) : (buflen - len);
- mutex_lock(&drbg->drbg_mutex);
-+ if (reseed)
-+ drbg->seeded = DRBG_SEED_STATE_UNSEEDED;
- err = drbg_generate(drbg, buf + len, chunk, addtl);
- mutex_unlock(&drbg->drbg_mutex);
- if (0 > err)
-@@ -1936,6 +1939,7 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
- struct drbg_state *drbg = crypto_rng_ctx(tfm);
- struct drbg_string *addtl = NULL;
- struct drbg_string string;
-+ int err;
-
- if (slen) {
- /* linked list variable is now local to allow modification */
-@@ -1943,7 +1947,15 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
- addtl = &string;
- }
-
-- return drbg_generate_long(drbg, dst, dlen, addtl);
-+ err = drbg_generate_long(drbg, dst, dlen, addtl,
-+ (crypto_tfm_get_flags(crypto_rng_tfm(tfm)) &
-+ CRYPTO_TFM_REQ_NEED_RESEED) ==
-+ CRYPTO_TFM_REQ_NEED_RESEED);
-+
-+ crypto_tfm_clear_flags(crypto_rng_tfm(tfm),
-+ CRYPTO_TFM_REQ_NEED_RESEED);
-+
-+ return err;
- }
-
- /*
-diff --git a/crypto/rng.c b/crypto/rng.c
-index 9d8804e464226..5ccb0485ff4b2 100644
---- a/crypto/rng.c
-+++ b/crypto/rng.c
-@@ -12,10 +12,13 @@
- #include <linux/atomic.h>
- #include <linux/cryptouser.h>
- #include <linux/err.h>
-+#include <linux/fips.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/mutex.h>
- #include <linux/random.h>
-+#include <linux/sched.h>
-+#include <linux/sched/signal.h>
- #include <linux/seq_file.h>
- #include <linux/slab.h>
- #include <linux/string.h>
-@@ -23,7 +26,9 @@
-
- #include "internal.h"
-
--static DEFINE_MUTEX(crypto_default_rng_lock);
-+static ____cacheline_aligned_in_smp DEFINE_MUTEX(crypto_reseed_rng_lock);
-+static struct crypto_rng *crypto_reseed_rng;
-+static ____cacheline_aligned_in_smp DEFINE_MUTEX(crypto_default_rng_lock);
- struct crypto_rng *crypto_default_rng;
- EXPORT_SYMBOL_GPL(crypto_default_rng);
- static int crypto_default_rng_refcnt;
-@@ -106,31 +111,37 @@ struct crypto_rng *crypto_alloc_rng(const char *alg_name, u32 type, u32 mask)
- }
- EXPORT_SYMBOL_GPL(crypto_alloc_rng);
-
--int crypto_get_default_rng(void)
-+static int crypto_get_rng(struct crypto_rng **rngp)
- {
- struct crypto_rng *rng;
- int err;
-
-- mutex_lock(&crypto_default_rng_lock);
-- if (!crypto_default_rng) {
-+ if (!*rngp) {
- rng = crypto_alloc_rng("stdrng", 0, 0);
- err = PTR_ERR(rng);
- if (IS_ERR(rng))
-- goto unlock;
-+ return err;
-
- err = crypto_rng_reset(rng, NULL, crypto_rng_seedsize(rng));
- if (err) {
- crypto_free_rng(rng);
-- goto unlock;
-+ return err;
+ struct crypto_alg *base = &alg->base;
+
+- if (!alg->sign)
+- alg->sign = akcipher_default_op;
++ alg->sign = akcipher_default_op;
+ if (!alg->verify)
+ alg->verify = akcipher_default_op;
+ if (!alg->encrypt)
+ alg->encrypt = akcipher_default_op;
+- if (!alg->decrypt)
+- alg->decrypt = akcipher_default_op;
++ alg->decrypt = akcipher_default_op;
+ if (!alg->set_priv_key)
+ alg->set_priv_key = akcipher_default_set_key;
+
+diff --git a/crypto/dh.c b/crypto/dh.c
+index 68d11d66c0b5..6e3e515b2452 100644
+--- a/crypto/dh.c
++++ b/crypto/dh.c
+@@ -227,10 +227,35 @@ static int dh_compute_value(struct kpp_request *req)
+
+ /* SP800-56A rev 3 5.6.2.1.3 key check */
+ } else {
++ MPI val_pct;
++
+ if (dh_is_pubkey_valid(ctx, val)) {
+ ret = -EAGAIN;
+ goto err_free_val;
+ }
++
++ /*
++ * SP800-56Arev3, 5.6.2.1.4: ("Owner Assurance
++ * of Pair-wise Consistency"): recompute the
++ * public key and check if the results match.
++ */
++ val_pct = mpi_alloc(0);
++ if (!val_pct) {
++ ret = -ENOMEM;
++ goto err_free_val;
++ }
++
++ ret = _compute_val(ctx, base, val_pct);
++ if (ret) {
++ mpi_free(val_pct);
++ goto err_free_val;
++ }
++
++ if (mpi_cmp(val, val_pct) != 0) {
++ fips_fail_notify();
++ panic("dh: pair-wise consistency test failed\n");
++ }
++ mpi_free(val_pct);
}
-
-- crypto_default_rng = rng;
-+ *rngp = rng;
}
-- crypto_default_rng_refcnt++;
-- err = 0;
-+ return 0;
-+}
-+
-+int crypto_get_default_rng(void)
-+{
-+ int err;
-
--unlock:
-+ mutex_lock(&crypto_default_rng_lock);
-+ err = crypto_get_rng(&crypto_default_rng);
-+ if (!err)
-+ crypto_default_rng_refcnt++;
- mutex_unlock(&crypto_default_rng_lock);
-
- return err;
-@@ -146,24 +157,33 @@ void crypto_put_default_rng(void)
- EXPORT_SYMBOL_GPL(crypto_put_default_rng);
-
- #if defined(CONFIG_CRYPTO_RNG) || defined(CONFIG_CRYPTO_RNG_MODULE)
--int crypto_del_default_rng(void)
-+static int crypto_del_rng(struct crypto_rng **rngp, int *refcntp,
-+ struct mutex *lock)
- {
- int err = -EBUSY;
-
-- mutex_lock(&crypto_default_rng_lock);
-- if (crypto_default_rng_refcnt)
-+ mutex_lock(lock);
-+ if (refcntp && *refcntp)
- goto out;
-
-- crypto_free_rng(crypto_default_rng);
-- crypto_default_rng = NULL;
-+ crypto_free_rng(*rngp);
-+ *rngp = NULL;
-
- err = 0;
-
- out:
-- mutex_unlock(&crypto_default_rng_lock);
-+ mutex_unlock(lock);
-
- return err;
- }
-+
-+int crypto_del_default_rng(void)
-+{
-+ return crypto_del_rng(&crypto_default_rng, &crypto_default_rng_refcnt,
-+ &crypto_default_rng_lock) ?:
-+ crypto_del_rng(&crypto_reseed_rng, NULL,
-+ &crypto_reseed_rng_lock);
-+}
- EXPORT_SYMBOL_GPL(crypto_del_default_rng);
- #endif
-
-@@ -217,5 +237,102 @@ void crypto_unregister_rngs(struct rng_alg *algs, int count)
+diff --git a/crypto/seqiv.c b/crypto/seqiv.c
+index 17e11d51ddc3..9c136a3b6267 100644
+--- a/crypto/seqiv.c
++++ b/crypto/seqiv.c
+@@ -132,6 +132,19 @@ static int seqiv_aead_decrypt(struct aead_request *req)
+ return crypto_aead_decrypt(subreq);
}
- EXPORT_SYMBOL_GPL(crypto_unregister_rngs);
-+static ssize_t crypto_devrandom_read_iter(struct iov_iter *iter, bool reseed)
++static int aead_init_seqiv(struct crypto_aead *aead)
+{
-+ struct crypto_rng *rng;
-+ u8 tmp[256];
-+ ssize_t ret;
-+
-+ if (unlikely(!iov_iter_count(iter)))
-+ return 0;
-+
-+ if (reseed) {
-+ u32 flags = 0;
-+
-+ /* If reseeding is requested, acquire a lock on
-+ * crypto_reseed_rng so it is not swapped out until
-+ * the initial random bytes are generated.
-+ *
-+ * The algorithm implementation is also protected with
-+ * a separate mutex (drbg->drbg_mutex) around the
-+ * reseed-and-generate operation.
-+ */
-+ mutex_lock(&crypto_reseed_rng_lock);
-+
-+ /* If crypto_default_rng is not set, it will be seeded
-+ * at creation in __crypto_get_default_rng and thus no
-+ * reseeding is needed.
-+ */
-+ if (crypto_reseed_rng)
-+ flags |= CRYPTO_TFM_REQ_NEED_RESEED;
-+
-+ ret = crypto_get_rng(&crypto_reseed_rng);
-+ if (ret) {
-+ mutex_unlock(&crypto_reseed_rng_lock);
-+ return ret;
-+ }
-+
-+ rng = crypto_reseed_rng;
-+ crypto_tfm_set_flags(crypto_rng_tfm(rng), flags);
-+ } else {
-+ ret = crypto_get_default_rng();
-+ if (ret)
-+ return ret;
-+ rng = crypto_default_rng;
-+ }
-+
-+ for (;;) {
-+ size_t i, copied;
-+ int err;
-+
-+ i = min_t(size_t, iov_iter_count(iter), sizeof(tmp));
-+ err = crypto_rng_get_bytes(rng, tmp, i);
-+ if (err) {
-+ ret = err;
-+ break;
-+ }
-+
-+ copied = copy_to_iter(tmp, i, iter);
-+ ret += copied;
-+
-+ if (!iov_iter_count(iter))
-+ break;
-+
-+ if (need_resched()) {
-+ if (signal_pending(current))
-+ break;
-+ schedule();
-+ }
-+ }
-+
-+ if (reseed)
-+ mutex_unlock(&crypto_reseed_rng_lock);
-+ else
-+ crypto_put_default_rng();
-+ memzero_explicit(tmp, sizeof(tmp));
++ int err;
+
-+ return ret;
-+}
++ err = aead_init_geniv(aead);
++ if (err)
++ return err;
+
-+static const struct random_extrng crypto_devrandom_rng = {
-+ .extrng_read_iter = crypto_devrandom_read_iter,
-+ .owner = THIS_MODULE,
-+};
++ crypto_aead_set_flags(aead, CRYPTO_TFM_FIPS_COMPLIANCE);
+
-+static int __init crypto_rng_init(void)
-+{
-+ if (fips_enabled)
-+ random_register_extrng(&crypto_devrandom_rng);
+ return 0;
+}
+
-+static void __exit crypto_rng_exit(void)
-+{
-+ random_unregister_extrng();
-+}
-+
-+late_initcall(crypto_rng_init);
-+module_exit(crypto_rng_exit);
-+
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("Random Number Generator");
+ static int seqiv_aead_create(struct crypto_template *tmpl, struct rtattr **tb)
+ {
+ struct aead_instance *inst;
+@@ -149,7 +162,7 @@ static int seqiv_aead_create(struct crypto_template *tmpl, struct rtattr **tb)
+ inst->alg.encrypt = seqiv_aead_encrypt;
+ inst->alg.decrypt = seqiv_aead_decrypt;
+
+- inst->alg.init = aead_init_geniv;
++ inst->alg.init = aead_init_seqiv;
+ inst->alg.exit = aead_exit_geniv;
+
+ inst->alg.base.cra_ctxsize = sizeof(struct aead_geniv_ctx);
+diff --git a/crypto/testmgr.c b/crypto/testmgr.c
+index f02cb075bd68..669e306f1cb2 100644
+--- a/crypto/testmgr.c
++++ b/crypto/testmgr.c
+@@ -4216,7 +4216,7 @@ static int test_akcipher_one(struct crypto_akcipher *tfm,
+ * Don't invoke (decrypt or sign) test which require a private key
+ * for vectors with only a public key.
+ */
+- if (vecs->public_key_vec) {
++ if (1 || vecs->public_key_vec) {
+ err = 0;
+ goto free_all;
+ }
+@@ -5093,14 +5093,12 @@ static const struct alg_test_desc alg_test_descs[] = {
+ }, {
+ .alg = "ecdh-nist-p256",
+ .test = alg_test_kpp,
+- .fips_allowed = 1,
+ .suite = {
+ .kpp = __VECS(ecdh_p256_tv_template)
+ }
+ }, {
+ .alg = "ecdh-nist-p384",
+ .test = alg_test_kpp,
+- .fips_allowed = 1,
+ .suite = {
+ .kpp = __VECS(ecdh_p384_tv_template)
+ }
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
-index 20d757687e3d9..90a13f20f052b 100644
+index 20d757687e3d..90a13f20f052 100644
--- a/drivers/acpi/apei/hest.c
+++ b/drivers/acpi/apei/hest.c
@@ -142,6 +142,14 @@ static int apei_hest_parse(apei_hest_func_t func, void *data)
@@ -660,7 +907,7 @@ index 20d757687e3d9..90a13f20f052b 100644
for (i = 0; i < hest_tab->error_source_count; i++) {
len = hest_esrc_len(hest_hdr);
diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c
-index 1687483ff319e..390b67f19181a 100644
+index 1687483ff319..390b67f19181 100644
--- a/drivers/acpi/irq.c
+++ b/drivers/acpi/irq.c
@@ -143,6 +143,7 @@ struct acpi_irq_parse_one_ctx {
@@ -703,10 +950,10 @@ index 1687483ff319e..390b67f19181a 100644
return ctx.rc;
}
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
-index cdc5a74092c77..45679565878f1 100644
+index 22ae7829a915..1329032ed09b 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
-@@ -1793,6 +1793,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
+@@ -1802,6 +1802,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
if (!acpi_match_device_ids(device, ignore_serial_bus_ids))
return false;
@@ -723,7 +970,7 @@ index cdc5a74092c77..45679565878f1 100644
acpi_dev_get_resources(device, &resource_list,
acpi_check_serial_bus_slave,
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
-index 83431aae74d8b..f2a9c0d644af2 100644
+index fdfa7b266218..f5f8ba457c93 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -729,6 +729,24 @@ int ahci_stop_engine(struct ata_port *ap)
@@ -752,7 +999,7 @@ index 83431aae74d8b..f2a9c0d644af2 100644
tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500);
diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
-index bbf7029e224be..cf7faa970dd65 100644
+index bbf7029e224b..cf7faa970dd6 100644
--- a/drivers/char/ipmi/ipmi_dmi.c
+++ b/drivers/char/ipmi/ipmi_dmi.c
@@ -215,6 +215,21 @@ static int __init scan_for_dmi_ipmi(void)
@@ -778,7 +1025,7 @@ index bbf7029e224be..cf7faa970dd65 100644
dmi_decode_ipmi((const struct dmi_header *) dev->device_data);
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
-index e12b531f5c2f3..082707f8dff8c 100644
+index e12b531f5c2f..082707f8dff8 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -35,6 +35,7 @@
@@ -812,205 +1059,8 @@ index e12b531f5c2f3..082707f8dff8c 100644
mutex_lock(&ipmi_interfaces_mutex);
rv = ipmi_register_driver();
mutex_unlock(&ipmi_interfaces_mutex);
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 2597cb43f4387..d860f4f6ba2c7 100644
---- a/drivers/char/random.c
-+++ b/drivers/char/random.c
-@@ -51,6 +51,7 @@
- #include <linux/completion.h>
- #include <linux/uuid.h>
- #include <linux/uaccess.h>
-+#include <linux/rcupdate.h>
- #include <linux/suspend.h>
- #include <linux/siphash.h>
- #include <linux/sched/isolation.h>
-@@ -309,6 +310,11 @@ static void crng_fast_key_erasure(u8 key[CHACHA_KEY_SIZE],
- memzero_explicit(first_block, sizeof(first_block));
- }
-
-+/*
-+ * Hook for external RNG.
-+ */
-+static const struct random_extrng __rcu *extrng;
-+
- /*
- * This function returns a ChaCha state that you may use for generating
- * random data. It also returns up to 32 bytes on its own of random data
-@@ -739,6 +745,9 @@ static void __cold _credit_init_bits(size_t bits)
- }
-
-
-+static const struct file_operations extrng_random_fops;
-+static const struct file_operations extrng_urandom_fops;
-+
- /**********************************************************************
- *
- * Entropy collection routines.
-@@ -956,6 +965,19 @@ void __init add_bootloader_randomness(const void *buf, size_t len)
- credit_init_bits(len * 8);
- }
-
-+void random_register_extrng(const struct random_extrng *rng)
-+{
-+ rcu_assign_pointer(extrng, rng);
-+}
-+EXPORT_SYMBOL_GPL(random_register_extrng);
-+
-+void random_unregister_extrng(void)
-+{
-+ RCU_INIT_POINTER(extrng, NULL);
-+ synchronize_rcu();
-+}
-+EXPORT_SYMBOL_GPL(random_unregister_extrng);
-+
- #if IS_ENABLED(CONFIG_VMGENID)
- static BLOCKING_NOTIFIER_HEAD(vmfork_chain);
-
-@@ -1365,6 +1387,7 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
- {
- struct iov_iter iter;
- int ret;
-+ const struct random_extrng *rng;
-
- if (flags & ~(GRND_NONBLOCK | GRND_RANDOM | GRND_INSECURE))
- return -EINVAL;
-@@ -1376,6 +1399,21 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
- if ((flags & (GRND_INSECURE | GRND_RANDOM)) == (GRND_INSECURE | GRND_RANDOM))
- return -EINVAL;
-
-+ rcu_read_lock();
-+ rng = rcu_dereference(extrng);
-+ if (rng && !try_module_get(rng->owner))
-+ rng = NULL;
-+ rcu_read_unlock();
-+
-+ if (rng) {
-+ ret = import_ubuf(ITER_DEST, ubuf, len, &iter);
-+ if (unlikely(ret))
-+ return ret;
-+ ret = rng->extrng_read_iter(&iter, !!(flags & GRND_RANDOM));
-+ module_put(rng->owner);
-+ return ret;
-+ }
-+
- if (!crng_ready() && !(flags & GRND_INSECURE)) {
- if (flags & GRND_NONBLOCK)
- return -EAGAIN;
-@@ -1396,6 +1434,12 @@ static __poll_t random_poll(struct file *file, poll_table *wait)
- return crng_ready() ? EPOLLIN | EPOLLRDNORM : EPOLLOUT | EPOLLWRNORM;
- }
-
-+static __poll_t extrng_poll(struct file *file, poll_table * wait)
-+{
-+ /* extrng pool is always full, always read, no writes */
-+ return EPOLLIN | EPOLLRDNORM;
-+}
-+
- static ssize_t write_pool_user(struct iov_iter *iter)
- {
- u8 block[BLAKE2S_BLOCK_SIZE];
-@@ -1536,7 +1580,58 @@ static int random_fasync(int fd, struct file *filp, int on)
- return fasync_helper(fd, filp, on, &fasync);
- }
-
-+static int random_open(struct inode *inode, struct file *filp)
-+{
-+ const struct random_extrng *rng;
-+
-+ rcu_read_lock();
-+ rng = rcu_dereference(extrng);
-+ if (rng && !try_module_get(rng->owner))
-+ rng = NULL;
-+ rcu_read_unlock();
-+
-+ if (!rng)
-+ return 0;
-+
-+ filp->f_op = &extrng_random_fops;
-+ filp->private_data = rng->owner;
-+
-+ return 0;
-+}
-+
-+static int urandom_open(struct inode *inode, struct file *filp)
-+{
-+ const struct random_extrng *rng;
-+
-+ rcu_read_lock();
-+ rng = rcu_dereference(extrng);
-+ if (rng && !try_module_get(rng->owner))
-+ rng = NULL;
-+ rcu_read_unlock();
-+
-+ if (!rng)
-+ return 0;
-+
-+ filp->f_op = &extrng_urandom_fops;
-+ filp->private_data = rng->owner;
-+
-+ return 0;
-+}
-+
-+static int extrng_release(struct inode *inode, struct file *filp)
-+{
-+ module_put(filp->private_data);
-+ return 0;
-+}
-+
-+static ssize_t
-+extrng_read_iter(struct kiocb *kiocb, struct iov_iter *iter)
-+{
-+ return rcu_dereference_raw(extrng)->extrng_read_iter(iter, false);
-+}
-+
- const struct file_operations random_fops = {
-+ .open = random_open,
- .read_iter = random_read_iter,
- .write_iter = random_write_iter,
- .poll = random_poll,
-@@ -1549,6 +1644,7 @@ const struct file_operations random_fops = {
- };
-
- const struct file_operations urandom_fops = {
-+ .open = urandom_open,
- .read_iter = urandom_read_iter,
- .write_iter = random_write_iter,
- .unlocked_ioctl = random_ioctl,
-@@ -1559,6 +1655,32 @@ const struct file_operations urandom_fops = {
- .splice_write = iter_file_splice_write,
- };
-
-+static const struct file_operations extrng_random_fops = {
-+ .open = random_open,
-+ .read_iter = extrng_read_iter,
-+ .write_iter = random_write_iter,
-+ .poll = extrng_poll,
-+ .unlocked_ioctl = random_ioctl,
-+ .compat_ioctl = compat_ptr_ioctl,
-+ .fasync = random_fasync,
-+ .llseek = noop_llseek,
-+ .release = extrng_release,
-+ .splice_read = copy_splice_read,
-+ .splice_write = iter_file_splice_write,
-+};
-+
-+static const struct file_operations extrng_urandom_fops = {
-+ .open = urandom_open,
-+ .read_iter = extrng_read_iter,
-+ .write_iter = random_write_iter,
-+ .unlocked_ioctl = random_ioctl,
-+ .compat_ioctl = compat_ptr_ioctl,
-+ .fasync = random_fasync,
-+ .llseek = noop_llseek,
-+ .release = extrng_release,
-+ .splice_read = copy_splice_read,
-+ .splice_write = iter_file_splice_write,
-+};
-
- /********************************************************************
- *
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
-index a2d0009560d0f..4f3486e6a84b2 100644
+index a2d0009560d0..4f3486e6a84b 100644
--- a/drivers/firmware/efi/Makefile
+++ b/drivers/firmware/efi/Makefile
@@ -25,6 +25,7 @@ subdir-$(CONFIG_EFI_STUB) += libstub
@@ -1022,7 +1072,7 @@ index a2d0009560d0f..4f3486e6a84b2 100644
obj-$(CONFIG_EFI_RCI2_TABLE) += rci2-table.o
obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) += embedded-firmware.o
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
-index fdf07dd6f4591..cfd2b58a34940 100644
+index fdf07dd6f459..cfd2b58a3494 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -33,6 +33,7 @@
@@ -1168,7 +1218,7 @@ index fdf07dd6f4591..cfd2b58a34940 100644
diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c
new file mode 100644
-index 0000000000000..de0a3714a5d44
+index 000000000000..de0a3714a5d4
--- /dev/null
+++ b/drivers/firmware/efi/secureboot.c
@@ -0,0 +1,38 @@
@@ -1211,7 +1261,7 @@ index 0000000000000..de0a3714a5d44
+ }
+}
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
-index d4af17fdba467..154f0403cbf4c 100644
+index d4af17fdba46..154f0403cbf4 100644
--- a/drivers/hid/hid-rmi.c
+++ b/drivers/hid/hid-rmi.c
@@ -321,21 +321,12 @@ static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
@@ -1313,7 +1363,7 @@ index d4af17fdba467..154f0403cbf4c 100644
data->xport.ops = &hid_rmi_ops;
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
-index bf01f01964cf9..703896981e8ae 100644
+index bf01f01964cf..703896981e8a 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -10,6 +10,7 @@
@@ -1364,7 +1414,7 @@ index bf01f01964cf9..703896981e8ae 100644
platform_driver_unregister(&etm4_platform_driver);
etm4_pm_clear();
diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c
-index ef9ea295f9e03..0103334e8f32c 100644
+index 2168b6cd7167..5d7cda175a0c 100644
--- a/drivers/input/rmi4/rmi_driver.c
+++ b/drivers/input/rmi4/rmi_driver.c
@@ -182,34 +182,47 @@ void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status,
@@ -1556,7 +1606,7 @@ index ef9ea295f9e03..0103334e8f32c 100644
if (data->f01_container->dev.driver) {
/* Driver already bound, so enable ATTN now. */
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
-index 9df7cc75c1bc5..60d541ae39e8d 100644
+index ed6c5cb60c5a..70cb770b78bb 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -8,6 +8,7 @@
@@ -1567,7 +1617,7 @@ index 9df7cc75c1bc5..60d541ae39e8d 100644
#include <linux/kernel.h>
#include <linux/bits.h>
#include <linux/bug.h>
-@@ -2916,6 +2917,27 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
+@@ -2932,6 +2933,27 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
}
EXPORT_SYMBOL_GPL(iommu_dev_disable_feature);
@@ -1595,70 +1645,55 @@ index 9df7cc75c1bc5..60d541ae39e8d 100644
/**
* iommu_setup_default_domain - Set the default_domain for the group
* @group: Group to change
-diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
-index 61750cc98d705..a0e9a71580b5d 100644
---- a/drivers/media/pci/intel/ipu-bridge.c
-+++ b/drivers/media/pci/intel/ipu-bridge.c
-@@ -43,28 +43,46 @@
- * becoming apparent in the future.
- *
- * Do not add an entry for a sensor that is not actually supported.
-+ *
-+ * Please keep the list sorted by ACPI HID.
- */
- static const struct ipu_sensor_config ipu_supported_sensors[] = {
-+ /* Himax HM11B1 */
-+ IPU_SENSOR_CONFIG("HIMX11B1", 1, 384000000),
-+ /* Himax HM2170 */
-+ IPU_SENSOR_CONFIG("HIMX2170", 1, 384000000),
-+ /* Himax HM2172 */
-+ IPU_SENSOR_CONFIG("HIMX2172", 1, 384000000),
-+ /* GalaxyCore GC0310 */
-+ IPU_SENSOR_CONFIG("INT0310", 0),
- /* Omnivision OV5693 */
- IPU_SENSOR_CONFIG("INT33BE", 1, 419200000),
-+ /* Omnivision OV2740 */
-+ IPU_SENSOR_CONFIG("INT3474", 1, 180000000),
- /* Omnivision OV8865 */
- IPU_SENSOR_CONFIG("INT347A", 1, 360000000),
- /* Omnivision OV7251 */
- IPU_SENSOR_CONFIG("INT347E", 1, 319200000),
-+ /* Hynix Hi-556 */
-+ IPU_SENSOR_CONFIG("INT3537", 1, 437000000),
-+ /* Omnivision OV01A10 / OV01A1S */
-+ IPU_SENSOR_CONFIG("OVTI01A0", 1, 400000000),
-+ IPU_SENSOR_CONFIG("OVTI01AS", 1, 400000000),
-+ /* Omnivision OV02C10 */
-+ IPU_SENSOR_CONFIG("OVTI02C1", 1, 400000000),
-+ /* Omnivision OV02E10 */
-+ IPU_SENSOR_CONFIG("OVTI02E1", 1, 360000000),
-+ /* Omnivision OV08A10 */
-+ IPU_SENSOR_CONFIG("OVTI08A1", 1, 500000000),
-+ /* Omnivision OV08x40 */
-+ IPU_SENSOR_CONFIG("OVTI08F4", 1, 400000000),
-+ /* Omnivision OV13B10 */
-+ IPU_SENSOR_CONFIG("OVTI13B1", 1, 560000000),
-+ IPU_SENSOR_CONFIG("OVTIDB10", 1, 560000000),
- /* Omnivision OV2680 */
- IPU_SENSOR_CONFIG("OVTI2680", 1, 331200000),
-- /* Omnivision ov8856 */
-+ /* Omnivision OV8856 */
- IPU_SENSOR_CONFIG("OVTI8856", 3, 180000000, 360000000, 720000000),
-- /* Omnivision ov2740 */
-- IPU_SENSOR_CONFIG("INT3474", 1, 180000000),
-- /* Hynix hi556 */
-- IPU_SENSOR_CONFIG("INT3537", 1, 437000000),
-- /* Omnivision ov13b10 */
-- IPU_SENSOR_CONFIG("OVTIDB10", 1, 560000000),
-- /* GalaxyCore GC0310 */
-- IPU_SENSOR_CONFIG("INT0310", 0),
-- /* Omnivision ov01a10 */
-- IPU_SENSOR_CONFIG("OVTI01A0", 1, 400000000),
- };
+diff --git a/drivers/media/platform/qcom/camss/camss-video.c b/drivers/media/platform/qcom/camss/camss-video.c
+index cd72feca618c..3b8fc31d957c 100644
+--- a/drivers/media/platform/qcom/camss/camss-video.c
++++ b/drivers/media/platform/qcom/camss/camss-video.c
+@@ -297,12 +297,6 @@ static void video_stop_streaming(struct vb2_queue *q)
+
+ ret = v4l2_subdev_call(subdev, video, s_stream, 0);
+
+- if (entity->use_count > 1) {
+- /* Don't stop if other instances of the pipeline are still running */
+- dev_dbg(video->camss->dev, "Video pipeline still used, don't stop streaming.\n");
+- return;
+- }
+-
+ if (ret) {
+ dev_err(video->camss->dev, "Video pipeline stop failed: %d\n", ret);
+ return;
+diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
+index 51b1d3550421..d64985ca6e88 100644
+--- a/drivers/media/platform/qcom/camss/camss.c
++++ b/drivers/media/platform/qcom/camss/camss.c
+@@ -2283,6 +2283,8 @@ static int camss_probe(struct platform_device *pdev)
+
+ v4l2_async_nf_init(&camss->notifier, &camss->v4l2_dev);
+
++ pm_runtime_enable(dev);
++
+ num_subdevs = camss_of_parse_ports(camss);
+ if (num_subdevs < 0) {
+ ret = num_subdevs;
+@@ -2323,8 +2325,6 @@ static int camss_probe(struct platform_device *pdev)
+ }
+ }
+
+- pm_runtime_enable(dev);
+-
+ return 0;
+
+ err_register_subdevs:
+@@ -2332,6 +2332,7 @@ static int camss_probe(struct platform_device *pdev)
+ err_v4l2_device_unregister:
+ v4l2_device_unregister(&camss->v4l2_dev);
+ v4l2_async_nf_cleanup(&camss->notifier);
++ pm_runtime_disable(dev);
+ err_genpd_cleanup:
+ camss_genpd_cleanup(camss);
- static const struct ipu_property_names prop_names = {
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 206b76156c051..42a6117c139db 100644
+index 5d57ea27dbc4..304afc09fc11 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4446,6 +4446,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000,
@@ -1693,10 +1728,10 @@ index 206b76156c051..42a6117c139db 100644
* Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero)
* class code. Fix it.
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
-index 5dd100175ec61..b7f3cb9bb3899 100644
+index 53896df7ec2b..98e08f10f60e 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
-@@ -120,6 +120,14 @@ static const char *sd_cache_types[] = {
+@@ -122,6 +122,14 @@ static const char *sd_cache_types[] = {
"write back, no read (daft)"
};
@@ -1708,10 +1743,10 @@ index 5dd100175ec61..b7f3cb9bb3899 100644
+MODULE_PARM_DESC(probe, "async or sync. Setting to 'sync' disables asynchronous "
+ "device number assignments (sda, sdb, ...).");
+
- static void sd_set_flush_flag(struct scsi_disk *sdkp)
+ static void sd_set_flush_flag(struct scsi_disk *sdkp,
+ struct queue_limits *lim)
{
- bool wc = false, fua = false;
-@@ -4255,6 +4263,8 @@ static int __init init_sd(void)
+@@ -4349,6 +4357,8 @@ static int __init init_sd(void)
goto err_out_class;
}
@@ -1721,7 +1756,7 @@ index 5dd100175ec61..b7f3cb9bb3899 100644
if (err)
goto err_out_driver;
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 4b93c0bd1d4bc..b98906237306d 100644
+index 4b93c0bd1d4b..b98906237306 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -5844,6 +5844,13 @@ static void hub_event(struct work_struct *work)
@@ -1739,19 +1774,20 @@ index 4b93c0bd1d4bc..b98906237306d 100644
* disconnected while waiting for the lock to succeed. */
usb_lock_device(hdev);
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
-index b164da5e129e8..59021b8609a70 100644
+index b164da5e129e..72bfb79b491d 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
-@@ -133,6 +133,7 @@
- #define CRYPTO_TFM_REQ_FORBID_WEAK_KEYS 0x00000100
+@@ -134,6 +134,8 @@
#define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200
#define CRYPTO_TFM_REQ_MAY_BACKLOG 0x00000400
-+#define CRYPTO_TFM_REQ_NEED_RESEED 0x00000800
++#define CRYPTO_TFM_FIPS_COMPLIANCE 0x80000000
++
/*
* Miscellaneous stuff.
+ */
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 418e555459da7..fdd941287ae1d 100644
+index 6bf3c4fe8511..67e5400f7644 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -45,6 +45,8 @@ struct screen_info;
@@ -1763,7 +1799,7 @@ index 418e555459da7..fdd941287ae1d 100644
typedef unsigned long efi_status_t;
typedef u8 efi_bool_t;
typedef u16 efi_char16_t; /* UNICODE character */
-@@ -872,6 +874,14 @@ static inline int efi_range_is_wc(unsigned long start, unsigned long len)
+@@ -877,6 +879,14 @@ static inline int efi_range_is_wc(unsigned long start, unsigned long len)
#define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */
#define EFI_MEM_NO_SOFT_RESERVE 11 /* Is the kernel configured to ignore soft reservations? */
#define EFI_PRESERVE_BS_REGIONS 12 /* Are EFI boot-services memory segments available? */
@@ -1778,7 +1814,7 @@ index 418e555459da7..fdd941287ae1d 100644
#ifdef CONFIG_EFI
/*
-@@ -883,6 +893,8 @@ static inline bool efi_enabled(int feature)
+@@ -888,6 +898,8 @@ static inline bool efi_enabled(int feature)
}
extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused);
@@ -1787,7 +1823,7 @@ index 418e555459da7..fdd941287ae1d 100644
bool __pure __efi_soft_reserve_enabled(void);
static inline bool __pure efi_soft_reserve_enabled(void)
-@@ -904,6 +916,8 @@ static inline bool efi_enabled(int feature)
+@@ -909,6 +921,8 @@ static inline bool efi_enabled(int feature)
static inline void
efi_reboot(enum reboot_mode reboot_mode, const char *__unused) {}
@@ -1796,7 +1832,7 @@ index 418e555459da7..fdd941287ae1d 100644
static inline bool efi_soft_reserve_enabled(void)
{
return false;
-@@ -918,6 +932,7 @@ static inline void efi_find_mirror(void) {}
+@@ -923,6 +937,7 @@ static inline void efi_find_mirror(void) {}
#endif
extern int efi_status_to_err(efi_status_t status);
@@ -1804,7 +1840,7 @@ index 418e555459da7..fdd941287ae1d 100644
/*
* Variable Attributes
-@@ -1133,13 +1148,6 @@ static inline bool efi_runtime_disabled(void) { return true; }
+@@ -1138,13 +1153,6 @@ static inline bool efi_runtime_disabled(void) { return true; }
extern void efi_call_virt_check_flags(unsigned long flags, const void *caller);
extern unsigned long efi_call_virt_save_flags(void);
@@ -1819,7 +1855,7 @@ index 418e555459da7..fdd941287ae1d 100644
enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var)
{
diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
-index 19c333fafe113..db33ee7f55d54 100644
+index 19c333fafe11..db33ee7f55d5 100644
--- a/include/linux/lsm_hook_defs.h
+++ b/include/linux/lsm_hook_defs.h
@@ -439,6 +439,8 @@ LSM_HOOK(int, 0, bpf_token_capable, const struct bpf_token *token, int cap)
@@ -1831,36 +1867,8 @@ index 19c333fafe113..db33ee7f55d54 100644
#ifdef CONFIG_PERF_EVENTS
LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type)
-diff --git a/include/linux/random.h b/include/linux/random.h
-index b0a940af4fff5..8a52424fd0d50 100644
---- a/include/linux/random.h
-+++ b/include/linux/random.h
-@@ -9,6 +9,13 @@
-
- #include <uapi/linux/random.h>
-
-+struct iov_iter;
-+
-+struct random_extrng {
-+ ssize_t (*extrng_read_iter)(struct iov_iter *iter, bool reseed);
-+ struct module *owner;
-+};
-+
- struct notifier_block;
-
- void add_device_randomness(const void *buf, size_t len);
-@@ -157,6 +164,9 @@ int random_prepare_cpu(unsigned int cpu);
- int random_online_cpu(unsigned int cpu);
- #endif
-
-+void random_register_extrng(const struct random_extrng *rng);
-+void random_unregister_extrng(void);
-+
- #ifndef MODULE
- extern const struct file_operations random_fops, urandom_fops;
- #endif
diff --git a/include/linux/rmi.h b/include/linux/rmi.h
-index ab7eea01ab427..fff7c5f737fc8 100644
+index ab7eea01ab42..fff7c5f737fc 100644
--- a/include/linux/rmi.h
+++ b/include/linux/rmi.h
@@ -364,6 +364,7 @@ struct rmi_driver_data {
@@ -1872,7 +1880,7 @@ index ab7eea01ab427..fff7c5f737fc8 100644
int rmi_register_transport_device(struct rmi_transport_dev *xport);
diff --git a/include/linux/security.h b/include/linux/security.h
-index de3af33e6ff50..0a37270070e4c 100644
+index 1390f1efb4f0..b9a8ccb1dbdc 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -507,6 +507,7 @@ int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen);
@@ -1895,7 +1903,7 @@ index de3af33e6ff50..0a37270070e4c 100644
u32 *uctx_len, void *val, size_t val_len,
u64 id, u64 flags)
diff --git a/kernel/module/signing.c b/kernel/module/signing.c
-index a2ff4242e623d..f0d2be1ee4f1c 100644
+index a2ff4242e623..f0d2be1ee4f1 100644
--- a/kernel/module/signing.c
+++ b/kernel/module/signing.c
@@ -61,10 +61,17 @@ int mod_verify_sig(const void *mod, struct load_info *info)
@@ -1918,7 +1926,7 @@ index a2ff4242e623d..f0d2be1ee4f1c 100644
int module_sig_check(struct load_info *info, int flags)
diff --git a/scripts/sign-file.c b/scripts/sign-file.c
-index 3edb156ae52c3..0114ae1dbf7ff 100644
+index 3edb156ae52c..0114ae1dbf7f 100644
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
@@ -27,7 +27,6 @@
@@ -1972,7 +1980,7 @@ index 3edb156ae52c3..0114ae1dbf7ff 100644
BIO *b;
diff --git a/scripts/tags.sh b/scripts/tags.sh
-index 191e0461d6d5b..e6f418b3e948b 100755
+index 191e0461d6d5..e6f418b3e948 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -16,6 +16,8 @@ fi
@@ -1985,7 +1993,7 @@ index 191e0461d6d5b..e6f418b3e948b 100755
# ignore arbitrary directories
if [ -n "${IGNORE_DIRS}" ]; then
diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c
-index d1fdd113450a6..182e8090cfe85 100644
+index d1fdd113450a..182e8090cfe8 100644
--- a/security/integrity/platform_certs/load_uefi.c
+++ b/security/integrity/platform_certs/load_uefi.c
@@ -74,7 +74,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid,
@@ -2009,7 +2017,7 @@ index d1fdd113450a6..182e8090cfe85 100644
}
diff --git a/security/lockdown/Kconfig b/security/lockdown/Kconfig
-index e84ddf4840101..d0501353a4b95 100644
+index e84ddf484010..d0501353a4b9 100644
--- a/security/lockdown/Kconfig
+++ b/security/lockdown/Kconfig
@@ -16,6 +16,19 @@ config SECURITY_LOCKDOWN_LSM_EARLY
@@ -2033,7 +2041,7 @@ index e84ddf4840101..d0501353a4b95 100644
prompt "Kernel default lockdown mode"
default LOCK_DOWN_KERNEL_FORCE_NONE
diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c
-index cd84d8ea1dfbf..e4c70a0312bc8 100644
+index cd84d8ea1dfb..e4c70a0312bc 100644
--- a/security/lockdown/lockdown.c
+++ b/security/lockdown/lockdown.c
@@ -74,6 +74,7 @@ static int lockdown_is_locked_down(enum lockdown_reason what)
@@ -2045,7 +2053,7 @@ index cd84d8ea1dfbf..e4c70a0312bc8 100644
const struct lsm_id lockdown_lsmid = {
diff --git a/security/security.c b/security/security.c
-index 43166e341526c..b8cf110aeb589 100644
+index 43166e341526..b8cf110aeb58 100644
--- a/security/security.c
+++ b/security/security.c
@@ -5630,6 +5630,18 @@ int security_locked_down(enum lockdown_reason what)
diff --git a/SOURCES/rog-ally-audio-fix.patch b/SOURCES/rog-ally-audio-fix.patch
deleted file mode 100644
index 5bd8e03..0000000
--- a/SOURCES/rog-ally-audio-fix.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-diff --git a/sound/pci/hda/cs35l41_hda_property.c b/sound/pci/hda/cs35l41_hda_property.c
-index 2b8f8fd52..f4933be4c 100644
---- a/sound/pci/hda/cs35l41_hda_property.c
-+++ b/sound/pci/hda/cs35l41_hda_property.c
-@@ -6,8 +6,10 @@
- //
- // Author: Stefan Binding <sbinding@opensource.cirrus.com>
-
-+#include <linux/dmi.h>
- #include <linux/acpi.h>
- #include <linux/gpio/consumer.h>
-+#include <linux/kernel.h>
- #include <linux/string.h>
- #include "cs35l41_hda_property.h"
- #include <linux/spi/spi.h>
-@@ -335,6 +337,40 @@ static int lenovo_legion_no_acpi(struct cs35l41_hda *cs35l41, struct device *phy
- return 0;
- }
-
-+static int asus_rog_2023_ally_fix(struct cs35l41_hda *cs35l41, struct device *physdev, int id,
-+ const char *hid)
-+{
-+ const char *rog_ally_bios_ver = dmi_get_system_info(DMI_BIOS_VERSION);
-+ const char *rog_ally_bios_num = rog_ally_bios_ver + 6; // Dropping the RC71L. part before the number
-+ int rog_ally_bios_int;
-+ kstrtoint(rog_ally_bios_num, 10, &rog_ally_bios_int);
-+ if(rog_ally_bios_int >= 330){
-+ printk(KERN_INFO "DSD properties exist in the %d BIOS. Not applying DSD override...\n", rog_ally_bios_int);
-+ return -ENOENT; //Patch not applicable. Exiting...
-+ }
-+
-+ struct cs35l41_hw_cfg *hw_cfg = &cs35l41->hw_cfg;
-+
-+ dev_info(cs35l41->dev, "Adding DSD properties for %s\n", cs35l41->acpi_subsystem_id);
-+
-+ cs35l41->index = id == 0x40 ? 0 : 1;
-+ cs35l41->channel_index = 0;
-+ cs35l41->reset_gpio = gpiod_get_index(physdev, NULL, 0, GPIOD_OUT_HIGH);
-+ cs35l41->speaker_id = cs35l41_get_speaker_id(physdev, 0, 0, 2);
-+ hw_cfg->spk_pos = cs35l41->index;
-+ hw_cfg->gpio1.func = CS35L41_NOT_USED;
-+ hw_cfg->gpio1.valid = true;
-+ hw_cfg->gpio2.func = CS35L41_INTERRUPT;
-+ hw_cfg->gpio2.valid = true;
-+ hw_cfg->bst_type = CS35L41_INT_BOOST;
-+ hw_cfg->bst_ind = 1000; /* 1,000nH Inductance value */
-+ hw_cfg->bst_ipk = 4500; /* 4,500mA peak current */
-+ hw_cfg->bst_cap = 24; /* 24 microFarad cap value */
-+ hw_cfg->valid = true;
-+
-+ return 0;
-+}
-+
- struct cs35l41_prop_model {
- const char *hid;
- const char *ssid;
-@@ -418,7 +418,7 @@
- { "CSC3551", "104316A3", generic_dsd_config },
- { "CSC3551", "104316D3", generic_dsd_config },
- { "CSC3551", "104316F3", generic_dsd_config },
-- { "CSC3551", "104317F3", generic_dsd_config },
-+ { "CSC3551", "104317F3", asus_rog_2023_ally_fix },
- { "CSC3551", "10431863", generic_dsd_config },
- { "CSC3551", "104318D3", generic_dsd_config },
- { "CSC3551", "10431A83", generic_dsd_config },
diff --git a/SOURCES/rog-ally-gyro-fix.patch b/SOURCES/rog-ally-gyro-fix.patch
deleted file mode 100644
index bed6fc7..0000000
--- a/SOURCES/rog-ally-gyro-fix.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From: Jonathan LoBue <jlobue10@gmail.com>
-Date: Sun, 25 Feb 2024 14:43:01 -0800
-Subject: [PATCH] iio: imu: bmi323: Implement ACPI method ROTM for mount matrix
-
-Retrieve mount matrix from ACPI ROTM table.
-
----
- drivers/iio/imu/bmi323/bmi323_core.c | 79 ++++++++++++++++++++++++++--
- 1 file changed, 76 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/iio/imu/bmi323/bmi323_core.c b/drivers/iio/imu/bmi323/bmi323_core.c
-index 183af482828f..bb9f05183814 100644
---- a/drivers/iio/imu/bmi323/bmi323_core.c
-+++ b/drivers/iio/imu/bmi323/bmi323_core.c
-@@ -7,6 +7,7 @@
- * Datasheet: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi323-ds000.pdf
- */
-
-+#include <linux/acpi.h>
- #include <linux/bitfield.h>
- #include <linux/cleanup.h>
- #include <linux/device.h>
-@@ -1997,6 +1998,76 @@ static int bmi323_set_bw(struct bmi323_data *data,
- FIELD_PREP(BMI323_ACC_GYRO_CONF_BW_MSK, bw));
- }
-
-+static bool bmi323_acpi_orientation(struct device *dev,
-+ struct iio_mount_matrix *orientation)
-+{
-+ struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
-+ struct acpi_device *adev = ACPI_COMPANION(dev);
-+ char *str;
-+ union acpi_object *obj, *elements;
-+ acpi_status status;
-+ int i, j, val[3];
-+ bool ret = false;
-+
-+ if (!acpi_has_method(adev->handle, "ROTM"))
-+ return false;
-+
-+ status = acpi_evaluate_object(adev->handle, "ROTM", NULL, &buffer);
-+ if (ACPI_FAILURE(status)) {
-+ dev_err(dev, "Failed to get ACPI mount matrix: %d\n", status);
-+ return false;
-+ }
-+
-+ obj = buffer.pointer;
-+ if (obj->type != ACPI_TYPE_PACKAGE || obj->package.count != 3) {
-+ dev_err(dev, "Unknown ACPI mount matrix package format\n");
-+ goto out_free_buffer;
-+ }
-+
-+ elements = obj->package.elements;
-+ for (i = 0; i < 3; i++) {
-+ if (elements[i].type != ACPI_TYPE_STRING) {
-+ dev_err(dev, "Unknown ACPI mount matrix element format\n");
-+ goto out_free_buffer;
-+ }
-+
-+ str = elements[i].string.pointer;
-+ if (sscanf(str, "%d %d %d", &val[0], &val[1], &val[2]) != 3) {
-+ dev_err(dev, "Incorrect ACPI mount matrix string format\n");
-+ goto out_free_buffer;
-+ }
-+
-+ for (j = 0; j < 3; j++) {
-+ switch (val[j]) {
-+ case -1: str = "-1"; break;
-+ case 0: str = "0"; break;
-+ case 1: str = "1"; break;
-+ default:
-+ dev_err(dev, "Invalid value in ACPI mount matrix: %d\n", val[j]);
-+ goto out_free_buffer;
-+ }
-+ orientation->rotation[i * 3 + j] = str;
-+ }
-+ }
-+
-+ ret = true;
-+
-+out_free_buffer:
-+ kfree(buffer.pointer);
-+ return ret;
-+}
-+
-+static bool bmi323_apply_acpi_orientation(struct device *dev,
-+ struct iio_mount_matrix *orientation)
-+{
-+ struct acpi_device *adev = ACPI_COMPANION(dev);
-+
-+ if (adev)
-+ return bmi323_acpi_orientation(dev, orientation);
-+
-+ return false;
-+}
-+
- static int bmi323_init(struct bmi323_data *data)
- {
- int ret, val;
-@@ -2099,9 +2170,11 @@ int bmi323_core_probe(struct device *dev)
- if (ret)
- return -EINVAL;
-
-- ret = iio_read_mount_matrix(dev, &data->orientation);
-- if (ret)
-- return ret;
-+ if (!bmi323_apply_acpi_orientation(dev, &data->orientation)) {
-+ ret = iio_read_mount_matrix(dev, &data->orientation);
-+ if (ret)
-+ return ret;
-+ }
-
- indio_dev->name = "bmi323-imu";
- indio_dev->info = &bmi323_info;
-diff --git a/drivers/iio/imu/bmi323/bmi323_core.c b/drivers/iio/imu/bmi323/bmi323_core.c
-index 0bd5ded..ded8596 100644
---- a/drivers/iio/imu/bmi323/bmi323_core.c
-+++ b/drivers/iio/imu/bmi323/bmi323_core.c
-@@ -285,6 +286,9 @@ static const int bmi323_acc_gyro_odr[][2] = {
- { 200, 0 },
- { 400, 0 },
- { 800, 0 },
-+ { 1600, 0},
-+ { 3200, 0},
-+ { 6400, 0},
- };
-
- static const int bmi323_acc_gyro_odrns[] = {
diff --git a/SOURCES/rpminspect.yaml b/SOURCES/rpminspect.yaml
index d6287e6..84a2606 100644
--- a/SOURCES/rpminspect.yaml
+++ b/SOURCES/rpminspect.yaml
@@ -23,7 +23,7 @@ emptyrpm:
patches:
ignore_list:
- linux-kernel-test.patch
- - patch-6.10-redhat.patch
+ - patch-6.11-redhat.patch
runpath:
ignore:
diff --git a/SOURCES/scx-kernel.patch b/SOURCES/scx-kernel.patch
index 29e1f22..196bac1 100644
--- a/SOURCES/scx-kernel.patch
+++ b/SOURCES/scx-kernel.patch
@@ -1,3 +1,184 @@
+From 11276ed2c72c57624c1214e980efd24648be015c Mon Sep 17 00:00:00 2001
+From: Peter Jung <admin@ptr1337.dev>
+Date: Fri, 4 Oct 2024 17:12:13 +0200
+Subject: [PATCH] sched-ext
+
+Signed-off-by: Peter Jung <admin@ptr1337.dev>
+---
+ Documentation/scheduler/index.rst | 1 +
+ Documentation/scheduler/sched-ext.rst | 326 +
+ MAINTAINERS | 13 +
+ drivers/tty/sysrq.c | 1 +
+ include/asm-generic/vmlinux.lds.h | 1 +
+ include/linux/cgroup.h | 4 +-
+ include/linux/sched.h | 5 +
+ include/linux/sched/ext.h | 216 +
+ include/linux/sched/task.h | 8 +-
+ include/trace/events/sched_ext.h | 32 +
+ include/uapi/linux/sched.h | 1 +
+ init/Kconfig | 10 +
+ init/init_task.c | 12 +
+ kernel/Kconfig.preempt | 27 +-
+ kernel/fork.c | 17 +-
+ kernel/sched/build_policy.c | 11 +
+ kernel/sched/core.c | 288 +-
+ kernel/sched/cpufreq_schedutil.c | 50 +-
+ kernel/sched/debug.c | 3 +
+ kernel/sched/ext.c | 7262 +++++++++++++++++
+ kernel/sched/ext.h | 91 +
+ kernel/sched/fair.c | 21 +-
+ kernel/sched/idle.c | 2 +
+ kernel/sched/sched.h | 203 +-
+ kernel/sched/syscalls.c | 26 +
+ lib/dump_stack.c | 1 +
+ tools/Makefile | 10 +-
+ tools/sched_ext/.gitignore | 2 +
+ tools/sched_ext/Makefile | 246 +
+ tools/sched_ext/README.md | 270 +
+ .../sched_ext/include/bpf-compat/gnu/stubs.h | 11 +
+ tools/sched_ext/include/scx/common.bpf.h | 427 +
+ tools/sched_ext/include/scx/common.h | 75 +
+ tools/sched_ext/include/scx/compat.bpf.h | 47 +
+ tools/sched_ext/include/scx/compat.h | 186 +
+ tools/sched_ext/include/scx/user_exit_info.h | 115 +
+ tools/sched_ext/scx_central.bpf.c | 361 +
+ tools/sched_ext/scx_central.c | 135 +
+ tools/sched_ext/scx_flatcg.bpf.c | 957 +++
+ tools/sched_ext/scx_flatcg.c | 233 +
+ tools/sched_ext/scx_flatcg.h | 51 +
+ tools/sched_ext/scx_qmap.bpf.c | 813 ++
+ tools/sched_ext/scx_qmap.c | 153 +
+ tools/sched_ext/scx_show_state.py | 40 +
+ tools/sched_ext/scx_simple.bpf.c | 156 +
+ tools/sched_ext/scx_simple.c | 107 +
+ tools/testing/selftests/sched_ext/.gitignore | 6 +
+ tools/testing/selftests/sched_ext/Makefile | 218 +
+ tools/testing/selftests/sched_ext/config | 9 +
+ .../selftests/sched_ext/create_dsq.bpf.c | 58 +
+ .../testing/selftests/sched_ext/create_dsq.c | 57 +
+ .../sched_ext/ddsp_bogus_dsq_fail.bpf.c | 42 +
+ .../selftests/sched_ext/ddsp_bogus_dsq_fail.c | 57 +
+ .../sched_ext/ddsp_vtimelocal_fail.bpf.c | 39 +
+ .../sched_ext/ddsp_vtimelocal_fail.c | 56 +
+ .../selftests/sched_ext/dsp_local_on.bpf.c | 65 +
+ .../selftests/sched_ext/dsp_local_on.c | 58 +
+ .../sched_ext/enq_last_no_enq_fails.bpf.c | 21 +
+ .../sched_ext/enq_last_no_enq_fails.c | 60 +
+ .../sched_ext/enq_select_cpu_fails.bpf.c | 43 +
+ .../sched_ext/enq_select_cpu_fails.c | 61 +
+ tools/testing/selftests/sched_ext/exit.bpf.c | 84 +
+ tools/testing/selftests/sched_ext/exit.c | 55 +
+ tools/testing/selftests/sched_ext/exit_test.h | 20 +
+ .../testing/selftests/sched_ext/hotplug.bpf.c | 61 +
+ tools/testing/selftests/sched_ext/hotplug.c | 168 +
+ .../selftests/sched_ext/hotplug_test.h | 15 +
+ .../sched_ext/init_enable_count.bpf.c | 53 +
+ .../selftests/sched_ext/init_enable_count.c | 166 +
+ .../testing/selftests/sched_ext/maximal.bpf.c | 164 +
+ tools/testing/selftests/sched_ext/maximal.c | 51 +
+ .../selftests/sched_ext/maybe_null.bpf.c | 36 +
+ .../testing/selftests/sched_ext/maybe_null.c | 49 +
+ .../sched_ext/maybe_null_fail_dsp.bpf.c | 25 +
+ .../sched_ext/maybe_null_fail_yld.bpf.c | 28 +
+ .../testing/selftests/sched_ext/minimal.bpf.c | 21 +
+ tools/testing/selftests/sched_ext/minimal.c | 58 +
+ .../selftests/sched_ext/prog_run.bpf.c | 33 +
+ tools/testing/selftests/sched_ext/prog_run.c | 78 +
+ .../testing/selftests/sched_ext/reload_loop.c | 75 +
+ tools/testing/selftests/sched_ext/runner.c | 201 +
+ tools/testing/selftests/sched_ext/scx_test.h | 131 +
+ .../selftests/sched_ext/select_cpu_dfl.bpf.c | 40 +
+ .../selftests/sched_ext/select_cpu_dfl.c | 72 +
+ .../sched_ext/select_cpu_dfl_nodispatch.bpf.c | 89 +
+ .../sched_ext/select_cpu_dfl_nodispatch.c | 72 +
+ .../sched_ext/select_cpu_dispatch.bpf.c | 41 +
+ .../selftests/sched_ext/select_cpu_dispatch.c | 70 +
+ .../select_cpu_dispatch_bad_dsq.bpf.c | 37 +
+ .../sched_ext/select_cpu_dispatch_bad_dsq.c | 56 +
+ .../select_cpu_dispatch_dbl_dsp.bpf.c | 38 +
+ .../sched_ext/select_cpu_dispatch_dbl_dsp.c | 56 +
+ .../sched_ext/select_cpu_vtime.bpf.c | 92 +
+ .../selftests/sched_ext/select_cpu_vtime.c | 59 +
+ .../selftests/sched_ext/test_example.c | 49 +
+ tools/testing/selftests/sched_ext/util.c | 71 +
+ tools/testing/selftests/sched_ext/util.h | 13 +
+ 97 files changed, 16174 insertions(+), 130 deletions(-)
+ create mode 100644 Documentation/scheduler/sched-ext.rst
+ create mode 100644 include/linux/sched/ext.h
+ create mode 100644 include/trace/events/sched_ext.h
+ create mode 100644 kernel/sched/ext.c
+ create mode 100644 kernel/sched/ext.h
+ create mode 100644 tools/sched_ext/.gitignore
+ create mode 100644 tools/sched_ext/Makefile
+ create mode 100644 tools/sched_ext/README.md
+ create mode 100644 tools/sched_ext/include/bpf-compat/gnu/stubs.h
+ create mode 100644 tools/sched_ext/include/scx/common.bpf.h
+ create mode 100644 tools/sched_ext/include/scx/common.h
+ create mode 100644 tools/sched_ext/include/scx/compat.bpf.h
+ create mode 100644 tools/sched_ext/include/scx/compat.h
+ create mode 100644 tools/sched_ext/include/scx/user_exit_info.h
+ create mode 100644 tools/sched_ext/scx_central.bpf.c
+ create mode 100644 tools/sched_ext/scx_central.c
+ create mode 100644 tools/sched_ext/scx_flatcg.bpf.c
+ create mode 100644 tools/sched_ext/scx_flatcg.c
+ create mode 100644 tools/sched_ext/scx_flatcg.h
+ create mode 100644 tools/sched_ext/scx_qmap.bpf.c
+ create mode 100644 tools/sched_ext/scx_qmap.c
+ create mode 100644 tools/sched_ext/scx_show_state.py
+ create mode 100644 tools/sched_ext/scx_simple.bpf.c
+ create mode 100644 tools/sched_ext/scx_simple.c
+ create mode 100644 tools/testing/selftests/sched_ext/.gitignore
+ create mode 100644 tools/testing/selftests/sched_ext/Makefile
+ create mode 100644 tools/testing/selftests/sched_ext/config
+ create mode 100644 tools/testing/selftests/sched_ext/create_dsq.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/create_dsq.c
+ create mode 100644 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.c
+ create mode 100644 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.c
+ create mode 100644 tools/testing/selftests/sched_ext/dsp_local_on.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/dsp_local_on.c
+ create mode 100644 tools/testing/selftests/sched_ext/enq_last_no_enq_fails.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/enq_last_no_enq_fails.c
+ create mode 100644 tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/enq_select_cpu_fails.c
+ create mode 100644 tools/testing/selftests/sched_ext/exit.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/exit.c
+ create mode 100644 tools/testing/selftests/sched_ext/exit_test.h
+ create mode 100644 tools/testing/selftests/sched_ext/hotplug.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/hotplug.c
+ create mode 100644 tools/testing/selftests/sched_ext/hotplug_test.h
+ create mode 100644 tools/testing/selftests/sched_ext/init_enable_count.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/init_enable_count.c
+ create mode 100644 tools/testing/selftests/sched_ext/maximal.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/maximal.c
+ create mode 100644 tools/testing/selftests/sched_ext/maybe_null.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/maybe_null.c
+ create mode 100644 tools/testing/selftests/sched_ext/maybe_null_fail_dsp.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/maybe_null_fail_yld.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/minimal.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/minimal.c
+ create mode 100644 tools/testing/selftests/sched_ext/prog_run.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/prog_run.c
+ create mode 100644 tools/testing/selftests/sched_ext/reload_loop.c
+ create mode 100644 tools/testing/selftests/sched_ext/runner.c
+ create mode 100644 tools/testing/selftests/sched_ext/scx_test.h
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c
+ create mode 100644 tools/testing/selftests/sched_ext/select_cpu_vtime.c
+ create mode 100644 tools/testing/selftests/sched_ext/test_example.c
+ create mode 100644 tools/testing/selftests/sched_ext/util.c
+ create mode 100644 tools/testing/selftests/sched_ext/util.h
+
diff --git a/Documentation/scheduler/index.rst b/Documentation/scheduler/index.rst
index 43bd8a145b7a..0611dc3dda8e 100644
--- a/Documentation/scheduler/index.rst
@@ -12,10 +193,10 @@ index 43bd8a145b7a..0611dc3dda8e 100644
text_files
diff --git a/Documentation/scheduler/sched-ext.rst b/Documentation/scheduler/sched-ext.rst
new file mode 100644
-index 000000000000..a707d2181a77
+index 000000000000..6c0d70e2e27d
--- /dev/null
+++ b/Documentation/scheduler/sched-ext.rst
-@@ -0,0 +1,316 @@
+@@ -0,0 +1,326 @@
+==========================
+Extensible Scheduler Class
+==========================
@@ -101,6 +282,15 @@ index 000000000000..a707d2181a77
+ # cat /sys/kernel/sched_ext/root/ops
+ simple
+
++You can check if any BPF scheduler has ever been loaded since boot by examining
++this monotonically incrementing counter (a value of zero indicates that no BPF
++scheduler has been loaded):
++
++.. code-block:: none
++
++ # cat /sys/kernel/sched_ext/enable_seq
++ 1
++
+``tools/sched_ext/scx_show_state.py`` is a drgn script which shows more
+detailed information:
+
@@ -114,6 +304,7 @@ index 000000000000..a707d2181a77
+ enable_state : enabled (2)
+ bypass_depth : 0
+ nr_rejected : 0
++ enable_seq : 1
+
+If ``CONFIG_SCHED_DEBUG`` is set, whether a given task is on sched_ext can
+be determined as follows:
@@ -333,10 +524,10 @@ index 000000000000..a707d2181a77
+possible, they are subject to change without warning between kernel
+versions.
diff --git a/MAINTAINERS b/MAINTAINERS
-index 958e935449e5..17d2679d291a 100644
+index c2a7363e86fe..bcfe36daf67a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -19917,6 +19917,19 @@ F: include/linux/wait.h
+@@ -20364,6 +20364,19 @@ F: include/linux/wait.h
F: include/uapi/linux/sched.h
F: kernel/sched/
@@ -353,11 +544,11 @@ index 958e935449e5..17d2679d291a 100644
+F: tools/sched_ext/
+F: tools/testing/selftests/sched_ext
+
- SCSI LIBSAS SUBSYSTEM
- R: John Garry <john.g.garry@oracle.com>
- R: Jason Yan <yanaijie@huawei.com>
+ SCIOSENSE ENS160 MULTI-GAS SENSOR DRIVER
+ M: Gustavo Silva <gustavograzs@gmail.com>
+ S: Maintained
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
-index e5974b8239c9..167e877b8bef 100644
+index 14f8f00fdcf9..930b04e3d148 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -531,6 +531,7 @@ static const struct sysrq_key_op *sysrq_key_table[62] = {
@@ -369,7 +560,7 @@ index e5974b8239c9..167e877b8bef 100644
NULL, /* T */
NULL, /* U */
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
-index 70bf1004076b..a8417d31e348 100644
+index 1ae44793132a..19ec49a9179b 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -133,6 +133,7 @@
@@ -381,10 +572,10 @@ index 70bf1004076b..a8417d31e348 100644
__sched_class_lowest = .;
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
-index 2150ca60394b..3cdaec701600 100644
+index c60ba0ab1462..7139b33cb104 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
-@@ -29,8 +29,6 @@
+@@ -28,8 +28,6 @@
struct kernel_clone_args;
@@ -393,7 +584,7 @@ index 2150ca60394b..3cdaec701600 100644
/*
* All weight knobs on the default hierarchy should use the following min,
* default and max values. The default value is the logarithmic center of
-@@ -40,6 +38,8 @@ struct kernel_clone_args;
+@@ -39,6 +37,8 @@ struct kernel_clone_args;
#define CGROUP_WEIGHT_DFL 100
#define CGROUP_WEIGHT_MAX 10000
@@ -403,10 +594,10 @@ index 2150ca60394b..3cdaec701600 100644
CSS_TASK_ITER_PROCS = (1U << 0), /* walk only threadgroup leaders */
CSS_TASK_ITER_THREADED = (1U << 1), /* walk all threaded css_sets in the domain */
diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 76214d7c819d..0f3a107bcd02 100644
+index f8d150343d42..5b4f78fe379d 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -80,6 +80,8 @@ struct task_group;
+@@ -82,6 +82,8 @@ struct task_group;
struct task_struct;
struct user_event_mm;
@@ -415,7 +606,7 @@ index 76214d7c819d..0f3a107bcd02 100644
/*
* Task state bitmask. NOTE! These bits are also
* encoded in fs/proc/array.c: get_task_state().
-@@ -802,6 +804,9 @@ struct task_struct {
+@@ -810,6 +812,9 @@ struct task_struct {
struct sched_rt_entity rt;
struct sched_dl_entity dl;
struct sched_dl_entity *dl_server;
@@ -427,10 +618,10 @@ index 76214d7c819d..0f3a107bcd02 100644
#ifdef CONFIG_SCHED_CORE
diff --git a/include/linux/sched/ext.h b/include/linux/sched/ext.h
new file mode 100644
-index 000000000000..26e1c33bc844
+index 000000000000..76166d3b14fc
--- /dev/null
+++ b/include/linux/sched/ext.h
-@@ -0,0 +1,204 @@
+@@ -0,0 +1,216 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * BPF extensible scheduler class: Documentation/scheduler/sched-ext.rst
@@ -553,9 +744,17 @@ index 000000000000..26e1c33bc844
+ __SCX_KF_TERMINAL = SCX_KF_ENQUEUE | SCX_KF_SELECT_CPU | SCX_KF_REST,
+};
+
++enum scx_dsq_lnode_flags {
++ SCX_DSQ_LNODE_ITER_CURSOR = 1 << 0,
++
++ /* high 16 bits can be for iter cursor flags */
++ __SCX_DSQ_LNODE_PRIV_SHIFT = 16,
++};
++
+struct scx_dsq_list_node {
+ struct list_head node;
-+ bool is_bpf_iter_cursor;
++ u32 flags;
++ u32 priv; /* can be used by iter cursor */
+};
+
+/*
@@ -612,15 +811,19 @@ index 000000000000..26e1c33bc844
+ * If set, reject future sched_setscheduler(2) calls updating the policy
+ * to %SCHED_EXT with -%EACCES.
+ *
-+ * If set from ops.init_task() and the task's policy is already
-+ * %SCHED_EXT, which can happen while the BPF scheduler is being loaded
-+ * or by inhering the parent's policy during fork, the task's policy is
-+ * rejected and forcefully reverted to %SCHED_NORMAL. The number of
-+ * such events are reported through /sys/kernel/debug/sched_ext::nr_rejected.
++ * Can be set from ops.init_task() while the BPF scheduler is being
++ * loaded (!scx_init_task_args->fork). If set and the task's policy is
++ * already %SCHED_EXT, the task's policy is rejected and forcefully
++ * reverted to %SCHED_NORMAL. The number of such events are reported
++ * through /sys/kernel/debug/sched_ext::nr_rejected. Setting this flag
++ * during fork is not allowed.
+ */
+ bool disallow; /* reject switching into SCX */
+
+ /* cold fields */
++#ifdef CONFIG_EXT_GROUP_SCHED
++ struct cgroup *cgrp_moving_from;
++#endif
+ /* must be the last field, see init_scx_entity() */
+ struct list_head tasks_node;
+};
@@ -636,7 +839,7 @@ index 000000000000..26e1c33bc844
+#endif /* CONFIG_SCHED_CLASS_EXT */
+#endif /* _LINUX_SCHED_EXT_H */
diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h
-index d362aacf9f89..4df2f9055587 100644
+index d362aacf9f89..0f2aeb37bbb0 100644
--- a/include/linux/sched/task.h
+++ b/include/linux/sched/task.h
@@ -63,7 +63,8 @@ extern asmlinkage void schedule_tail(struct task_struct *prev);
@@ -649,6 +852,18 @@ index d362aacf9f89..4df2f9055587 100644
extern void sched_post_fork(struct task_struct *p);
extern void sched_dead(struct task_struct *p);
+@@ -119,6 +120,11 @@ static inline struct task_struct *get_task_struct(struct task_struct *t)
+ return t;
+ }
+
++static inline struct task_struct *tryget_task_struct(struct task_struct *t)
++{
++ return refcount_inc_not_zero(&t->usage) ? t : NULL;
++}
++
+ extern void __put_task_struct(struct task_struct *t);
+ extern void __put_task_struct_rcu_cb(struct rcu_head *rhp);
+
diff --git a/include/trace/events/sched_ext.h b/include/trace/events/sched_ext.h
new file mode 100644
index 000000000000..fe19da7315a9
@@ -699,6 +914,37 @@ index 3bac0a8ceab2..359a14cc76a4 100644
/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
#define SCHED_RESET_ON_FORK 0x40000000
+diff --git a/init/Kconfig b/init/Kconfig
+index 08a0d51afaae..e1a88d48d652 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -1028,9 +1028,13 @@ menuconfig CGROUP_SCHED
+ tasks.
+
+ if CGROUP_SCHED
++config GROUP_SCHED_WEIGHT
++ def_bool n
++
+ config FAIR_GROUP_SCHED
+ bool "Group scheduling for SCHED_OTHER"
+ depends on CGROUP_SCHED
++ select GROUP_SCHED_WEIGHT
+ default CGROUP_SCHED
+
+ config CFS_BANDWIDTH
+@@ -1055,6 +1059,12 @@ config RT_GROUP_SCHED
+ realtime bandwidth for them.
+ See Documentation/scheduler/sched-rt-group.rst for more information.
+
++config EXT_GROUP_SCHED
++ bool
++ depends on SCHED_CLASS_EXT && CGROUP_SCHED
++ select GROUP_SCHED_WEIGHT
++ default y
++
+ endif #CGROUP_SCHED
+
+ config SCHED_MM_CID
diff --git a/init/init_task.c b/init/init_task.c
index eeb110c65fe2..e222722e790b 100644
--- a/init/init_task.c
@@ -730,10 +976,10 @@ index eeb110c65fe2..e222722e790b 100644
.ptraced = LIST_HEAD_INIT(init_task.ptraced),
.ptrace_entry = LIST_HEAD_INIT(init_task.ptrace_entry),
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
-index c2f1fd95a821..f3d140c3acc1 100644
+index c2f1fd95a821..fe782cd77388 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
-@@ -133,4 +133,28 @@ config SCHED_CORE
+@@ -133,4 +133,29 @@ config SCHED_CORE
which is the likely usage by Linux distributions, there should
be no measurable impact on performance.
@@ -741,6 +987,7 @@ index c2f1fd95a821..f3d140c3acc1 100644
+config SCHED_CLASS_EXT
+ bool "Extensible Scheduling Class"
+ depends on BPF_SYSCALL && BPF_JIT && DEBUG_INFO_BTF
++ select STACKTRACE if STACKTRACE_SUPPORT
+ help
+ This option enables a new scheduler class sched_ext (SCX), which
+ allows scheduling policies to be implemented as BPF programs to
@@ -764,7 +1011,7 @@ index c2f1fd95a821..f3d140c3acc1 100644
+ Documentation/scheduler/sched-ext.rst
+ https://github.com/sched-ext/scx
diff --git a/kernel/fork.c b/kernel/fork.c
-index 99076dbe27d8..741d962db0d9 100644
+index 238695afc630..69a0a7210060 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -23,6 +23,7 @@
@@ -775,7 +1022,7 @@ index 99076dbe27d8..741d962db0d9 100644
#include <linux/seq_file.h>
#include <linux/rtmutex.h>
#include <linux/init.h>
-@@ -971,6 +972,7 @@ void __put_task_struct(struct task_struct *tsk)
+@@ -973,6 +974,7 @@ void __put_task_struct(struct task_struct *tsk)
WARN_ON(refcount_read(&tsk->usage));
WARN_ON(tsk == current);
@@ -783,7 +1030,7 @@ index 99076dbe27d8..741d962db0d9 100644
io_uring_free(tsk);
cgroup_free(tsk);
task_numa_free(tsk, true);
-@@ -2363,7 +2365,7 @@ __latent_entropy struct task_struct *copy_process(
+@@ -2355,7 +2357,7 @@ __latent_entropy struct task_struct *copy_process(
retval = perf_event_init_task(p, clone_flags);
if (retval)
@@ -792,7 +1039,7 @@ index 99076dbe27d8..741d962db0d9 100644
retval = audit_alloc(p);
if (retval)
goto bad_fork_cleanup_perf;
-@@ -2496,7 +2498,9 @@ __latent_entropy struct task_struct *copy_process(
+@@ -2488,7 +2490,9 @@ __latent_entropy struct task_struct *copy_process(
* cgroup specific, it unconditionally needs to place the task on a
* runqueue.
*/
@@ -803,7 +1050,7 @@ index 99076dbe27d8..741d962db0d9 100644
/*
* From this point on we must avoid any synchronous user-space
-@@ -2542,13 +2546,13 @@ __latent_entropy struct task_struct *copy_process(
+@@ -2534,13 +2538,13 @@ __latent_entropy struct task_struct *copy_process(
/* Don't start children in a dying pid namespace */
if (unlikely(!(ns_of_pid(pid)->pid_allocated & PIDNS_ADDING))) {
retval = -ENOMEM;
@@ -819,7 +1066,7 @@ index 99076dbe27d8..741d962db0d9 100644
}
/* No more failure paths after this point. */
-@@ -2622,10 +2626,11 @@ __latent_entropy struct task_struct *copy_process(
+@@ -2614,10 +2618,11 @@ __latent_entropy struct task_struct *copy_process(
return p;
@@ -832,7 +1079,7 @@ index 99076dbe27d8..741d962db0d9 100644
cgroup_cancel_fork(p, args);
bad_fork_put_pidfd:
if (clone_flags & CLONE_PIDFD) {
-@@ -2664,6 +2669,8 @@ __latent_entropy struct task_struct *copy_process(
+@@ -2656,6 +2661,8 @@ __latent_entropy struct task_struct *copy_process(
audit_free(p);
bad_fork_cleanup_perf:
perf_event_free_task(p);
@@ -842,7 +1089,7 @@ index 99076dbe27d8..741d962db0d9 100644
lockdep_free_task(p);
#ifdef CONFIG_NUMA
diff --git a/kernel/sched/build_policy.c b/kernel/sched/build_policy.c
-index d9dc9ab3773f..e7d539bb721e 100644
+index 39c315182b35..fae1f5c921eb 100644
--- a/kernel/sched/build_policy.c
+++ b/kernel/sched/build_policy.c
@@ -16,18 +16,25 @@
@@ -871,18 +1118,20 @@ index d9dc9ab3773f..e7d539bb721e 100644
#include <uapi/linux/sched/types.h>
-@@ -52,3 +59,6 @@
+@@ -52,4 +59,8 @@
#include "cputime.c"
#include "deadline.c"
+#ifdef CONFIG_SCHED_CLASS_EXT
+# include "ext.c"
+#endif
++
+ #include "syscalls.c"
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index ebf21373f663..fb6276f74ee6 100644
+index f3951e4a55e5..c792a6feb7a9 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -168,7 +168,10 @@ static inline int __task_prio(const struct task_struct *p)
+@@ -169,7 +169,10 @@ static inline int __task_prio(const struct task_struct *p)
if (p->sched_class == &idle_sched_class)
return MAX_RT_PRIO + NICE_WIDTH; /* 140 */
@@ -894,7 +1143,7 @@ index ebf21373f663..fb6276f74ee6 100644
}
/*
-@@ -197,6 +200,11 @@ static inline bool prio_less(const struct task_struct *a,
+@@ -198,6 +201,11 @@ static inline bool prio_less(const struct task_struct *a,
if (pa == MAX_RT_PRIO + MAX_NICE) /* fair */
return cfs_prio_less(a, b, in_fi);
@@ -906,7 +1155,7 @@ index ebf21373f663..fb6276f74ee6 100644
return false;
}
-@@ -1254,11 +1262,14 @@ bool sched_can_stop_tick(struct rq *rq)
+@@ -1255,11 +1263,14 @@ bool sched_can_stop_tick(struct rq *rq)
return true;
/*
@@ -918,14 +1167,14 @@ index ebf21373f663..fb6276f74ee6 100644
+ * involuntary preemption. For SCX, ask.
*/
- if (rq->nr_running > 1)
-+ if (!scx_switched_all() && rq->nr_running > 1)
++ if (scx_enabled() && !scx_can_stop_tick(rq))
+ return false;
+
-+ if (scx_enabled() && !scx_can_stop_tick(rq))
++ if (rq->cfs.nr_running > 1)
return false;
/*
-@@ -1340,8 +1351,8 @@ static void set_load_weight(struct task_struct *p, bool update_load)
+@@ -1341,8 +1352,8 @@ void set_load_weight(struct task_struct *p, bool update_load)
* SCHED_OTHER tasks have to update their load when changing their
* weight
*/
@@ -936,7 +1185,7 @@ index ebf21373f663..fb6276f74ee6 100644
else
p->se.load = lw;
}
-@@ -2210,6 +2221,17 @@ inline int task_curr(const struct task_struct *p)
+@@ -2031,6 +2042,17 @@ inline int task_curr(const struct task_struct *p)
return cpu_curr(task_cpu(p)) == p;
}
@@ -954,20 +1203,25 @@ index ebf21373f663..fb6276f74ee6 100644
/*
* switched_from, switched_to and prio_changed must _NOT_ drop rq->lock,
* use the balance_callback list if you want balancing.
-@@ -2217,9 +2239,9 @@ inline int task_curr(const struct task_struct *p)
- * this means any call to check_class_changed() must be followed by a call to
- * balance_callback().
- */
--static inline void check_class_changed(struct rq *rq, struct task_struct *p,
-- const struct sched_class *prev_class,
-- int oldprio)
-+void check_class_changed(struct rq *rq, struct task_struct *p,
-+ const struct sched_class *prev_class,
-+ int oldprio)
+@@ -2289,7 +2311,7 @@ static inline bool rq_has_pinned_tasks(struct rq *rq)
+ static inline bool is_cpu_allowed(struct task_struct *p, int cpu)
{
- if (prev_class != p->sched_class) {
- if (prev_class->switched_from)
-@@ -3982,6 +4004,15 @@ bool cpus_share_resources(int this_cpu, int that_cpu)
+ /* When not in the task's cpumask, no point in looking further. */
+- if (!cpumask_test_cpu(cpu, p->cpus_ptr))
++ if (!task_allowed_on_cpu(p, cpu))
+ return false;
+
+ /* migrate_disabled() must be allowed to finish. */
+@@ -2298,7 +2320,7 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu)
+
+ /* Non kernel threads are not allowed during either online or offline. */
+ if (!(p->flags & PF_KTHREAD))
+- return cpu_active(cpu) && task_cpu_possible(cpu, p);
++ return cpu_active(cpu);
+
+ /* KTHREAD_IS_PER_CPU is always allowed. */
+ if (kthread_is_per_cpu(p))
+@@ -3775,6 +3797,15 @@ bool cpus_share_resources(int this_cpu, int that_cpu)
static inline bool ttwu_queue_cond(struct task_struct *p, int cpu)
{
@@ -983,7 +1237,7 @@ index ebf21373f663..fb6276f74ee6 100644
/*
* Do not complicate things with the async wake_list while the CPU is
* in hotplug state.
-@@ -4549,6 +4580,10 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
+@@ -4342,6 +4373,10 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
p->rt.on_rq = 0;
p->rt.on_list = 0;
@@ -994,7 +1248,7 @@ index ebf21373f663..fb6276f74ee6 100644
#ifdef CONFIG_PREEMPT_NOTIFIERS
INIT_HLIST_HEAD(&p->preempt_notifiers);
#endif
-@@ -4789,10 +4824,18 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
+@@ -4582,10 +4617,18 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
if (dl_prio(p->prio))
return -EAGAIN;
@@ -1015,7 +1269,7 @@ index ebf21373f663..fb6276f74ee6 100644
init_entity_runnable_average(&p->se);
-@@ -4812,7 +4855,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
+@@ -4605,7 +4648,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
return 0;
}
@@ -1024,7 +1278,7 @@ index ebf21373f663..fb6276f74ee6 100644
{
unsigned long flags;
-@@ -4974,6 +4974,13 @@
+@@ -4632,11 +4675,19 @@ void sched_cgroup_fork(struct task_struct *p, struct kernel_clone_args *kargs)
if (p->sched_class->task_fork)
p->sched_class->task_fork(p);
raw_spin_unlock_irqrestore(&p->pi_lock, flags);
@@ -1038,15 +1292,13 @@ index ebf21373f663..fb6276f74ee6 100644
}
void sched_post_fork(struct task_struct *p)
-@@ -4982,6 +4989,7 @@
- sched_post_fork_bore(p);
- #endif // CONFIG_SCHED_BORE
+ {
uclamp_post_fork(p);
+ scx_post_fork(p);
}
unsigned long to_ratio(u64 period, u64 runtime)
-@@ -5685,6 +5736,7 @@ void sched_tick(void)
+@@ -5469,6 +5520,7 @@ void sched_tick(void)
calc_global_load_tick(rq);
sched_core_tick(rq);
task_tick_mm_cid(rq, curr);
@@ -1054,7 +1306,7 @@ index ebf21373f663..fb6276f74ee6 100644
rq_unlock(rq, &rf);
-@@ -5697,8 +5749,10 @@ void sched_tick(void)
+@@ -5481,8 +5533,10 @@ void sched_tick(void)
wq_worker_tick(curr);
#ifdef CONFIG_SMP
@@ -1067,10 +1319,11 @@ index ebf21373f663..fb6276f74ee6 100644
#endif
}
-@@ -5989,7 +6043,19 @@ static void put_prev_task_balance(struct rq *rq, struct task_struct *prev,
+@@ -5772,8 +5826,19 @@ static inline void schedule_debug(struct task_struct *prev, bool preempt)
+ static void put_prev_task_balance(struct rq *rq, struct task_struct *prev,
struct rq_flags *rf)
{
- #ifdef CONFIG_SMP
+-#ifdef CONFIG_SMP
+ const struct sched_class *start_class = prev->sched_class;
const struct sched_class *class;
+
@@ -1080,23 +1333,28 @@ index ebf21373f663..fb6276f74ee6 100644
+ * when waking up from SCHED_IDLE. If @start_class is below SCX, start
+ * from SCX instead.
+ */
-+ if (sched_class_above(&ext_sched_class, start_class))
++ if (scx_enabled() && sched_class_above(&ext_sched_class, start_class))
+ start_class = &ext_sched_class;
+#endif
+
/*
* We must do the balancing pass before put_prev_task(), such
* that when we release the rq->lock the task is in the same
-@@ -5998,7 +6064,7 @@ static void put_prev_task_balance(struct rq *rq, struct task_struct *prev,
+@@ -5782,11 +5847,10 @@ static void put_prev_task_balance(struct rq *rq, struct task_struct *prev,
* We can terminate the balance pass as soon as we know there is
* a runnable task of @class priority or higher.
*/
- for_class_range(class, prev->sched_class, &idle_sched_class) {
+- if (class->balance(rq, prev, rf))
+ for_active_class_range(class, start_class, &idle_sched_class) {
- if (class->balance(rq, prev, rf))
++ if (class->balance && class->balance(rq, prev, rf))
break;
}
-@@ -6016,6 +6082,9 @@ __pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
+-#endif
+
+ put_prev_task(rq, prev);
+ }
+@@ -5800,6 +5864,9 @@ __pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
const struct sched_class *class;
struct task_struct *p;
@@ -1106,7 +1364,7 @@ index ebf21373f663..fb6276f74ee6 100644
/*
* Optimization: we know that if all tasks are in the fair class we can
* call that function directly, but only if the @prev task wasn't of a
-@@ -6056,10 +6125,15 @@ __pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
+@@ -5840,10 +5907,15 @@ __pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
if (prev->dl_server)
prev->dl_server = NULL;
@@ -1124,7 +1382,7 @@ index ebf21373f663..fb6276f74ee6 100644
}
BUG(); /* The idle class should always have a runnable task. */
-@@ -6089,7 +6163,7 @@ static inline struct task_struct *pick_task(struct rq *rq)
+@@ -5873,7 +5945,7 @@ static inline struct task_struct *pick_task(struct rq *rq)
const struct sched_class *class;
struct task_struct *p;
@@ -1133,14 +1391,7 @@ index ebf21373f663..fb6276f74ee6 100644
p = class->pick_task(rq);
if (p)
return p;
-@@ -7080,12 +7154,16 @@ int default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flag
- }
- EXPORT_SYMBOL(default_wake_function);
-
--static void __setscheduler_prio(struct task_struct *p, int prio)
-+void __setscheduler_prio(struct task_struct *p, int prio)
- {
- if (dl_prio(prio))
+@@ -6870,6 +6942,10 @@ void __setscheduler_prio(struct task_struct *p, int prio)
p->sched_class = &dl_sched_class;
else if (rt_prio(prio))
p->sched_class = &rt_sched_class;
@@ -1151,7 +1402,7 @@ index ebf21373f663..fb6276f74ee6 100644
else
p->sched_class = &fair_sched_class;
-@@ -7246,6 +7324,7 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
+@@ -7015,6 +7091,7 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
}
__setscheduler_prio(p, prio);
@@ -1159,68 +1410,7 @@ index ebf21373f663..fb6276f74ee6 100644
if (queued)
enqueue_task(rq, p, queue_flag);
-@@ -7467,6 +7546,25 @@ int sched_core_idle_cpu(int cpu)
- #endif
-
- #ifdef CONFIG_SMP
-+/*
-+ * Load avg and utiliztion metrics need to be updated periodically and before
-+ * consumption. This function updates the metrics for all subsystems except for
-+ * the fair class. @rq must be locked and have its clock updated.
-+ */
-+bool update_other_load_avgs(struct rq *rq)
-+{
-+ u64 now = rq_clock_pelt(rq);
-+ const struct sched_class *curr_class = rq->curr->sched_class;
-+ unsigned long hw_pressure = arch_scale_hw_pressure(cpu_of(rq));
-+
-+ lockdep_assert_rq_held(rq);
-+
-+ return update_rt_rq_load_avg(now, rq, curr_class == &rt_sched_class) |
-+ update_dl_rq_load_avg(now, rq, curr_class == &dl_sched_class) |
-+ update_hw_load_avg(now, rq, hw_pressure) |
-+ update_irq_load_avg(rq, 0);
-+}
-+
- /*
- * This function computes an effective utilization for the given CPU, to be
- * used for frequency selection given the linear relation: f = u * f_max.
-@@ -7789,6 +7887,10 @@ static int __sched_setscheduler(struct task_struct *p,
- goto unlock;
- }
-
-+ retval = scx_check_setscheduler(p, policy);
-+ if (retval)
-+ goto unlock;
-+
- /*
- * If not changing anything there's no need to proceed further,
- * but store a possible modification of reset_on_fork.
-@@ -7891,6 +7993,7 @@ static int __sched_setscheduler(struct task_struct *p,
- __setscheduler_prio(p, newprio);
- }
- __setscheduler_uclamp(p, attr);
-+ check_class_changing(rq, p, prev_class);
-
- if (queued) {
- /*
-@@ -9066,6 +9169,7 @@ SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
- case SCHED_NORMAL:
- case SCHED_BATCH:
- case SCHED_IDLE:
-+ case SCHED_EXT:
- ret = 0;
- break;
- }
-@@ -9093,6 +9197,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
- case SCHED_NORMAL:
- case SCHED_BATCH:
- case SCHED_IDLE:
-+ case SCHED_EXT:
- ret = 0;
- }
- return ret;
-@@ -9188,6 +9293,7 @@ void sched_show_task(struct task_struct *p)
+@@ -7429,6 +7506,7 @@ void sched_show_task(struct task_struct *p)
print_worker_info(KERN_INFO, p);
print_stop_info(KERN_INFO, p);
@@ -1228,7 +1418,7 @@ index ebf21373f663..fb6276f74ee6 100644
show_stack(p, NULL, KERN_INFO);
put_task_stack(p);
}
-@@ -9680,6 +9786,8 @@ int sched_cpu_activate(unsigned int cpu)
+@@ -7957,6 +8035,8 @@ int sched_cpu_activate(unsigned int cpu)
cpuset_cpu_active();
}
@@ -1237,7 +1427,7 @@ index ebf21373f663..fb6276f74ee6 100644
/*
* Put the rq online, if not already. This happens:
*
-@@ -9903,6 +9903,8 @@
+@@ -8006,6 +8086,8 @@ int sched_cpu_deactivate(unsigned int cpu)
sched_set_rq_offline(rq, cpu);
@@ -1246,7 +1436,7 @@ index ebf21373f663..fb6276f74ee6 100644
/*
* When going down, decrement the number of cores with SMT present.
*/
-@@ -10061,11 +10061,15 @@
+@@ -8192,11 +8192,15 @@
int i;
/* Make sure the linker didn't screw up */
@@ -1266,7 +1456,17 @@ index ebf21373f663..fb6276f74ee6 100644
#endif
#ifdef CONFIG_SCHED_BORE
-@@ -10096,6 +10210,7 @@ void __init sched_init(void)
+@@ -8218,6 +8304,9 @@ void __init sched_init(void)
+ root_task_group.shares = ROOT_TASK_GROUP_LOAD;
+ init_cfs_bandwidth(&root_task_group.cfs_bandwidth, NULL);
+ #endif /* CONFIG_FAIR_GROUP_SCHED */
++#ifdef CONFIG_EXT_GROUP_SCHED
++ root_task_group.scx_weight = CGROUP_WEIGHT_DFL;
++#endif /* CONFIG_EXT_GROUP_SCHED */
+ #ifdef CONFIG_RT_GROUP_SCHED
+ root_task_group.rt_se = (struct sched_rt_entity **)ptr;
+ ptr += nr_cpu_ids * sizeof(void **);
+@@ -8363,6 +8452,7 @@ void __init sched_init(void)
balance_push_set(smp_processor_id(), false);
#endif
init_sched_fair_class();
@@ -1274,7 +1474,23 @@ index ebf21373f663..fb6276f74ee6 100644
psi_init();
-@@ -10522,11 +10637,6 @@ void sched_move_task(struct task_struct *tsk)
+@@ -8648,6 +8738,7 @@ struct task_group *sched_create_group(struct task_group *parent)
+ if (!alloc_rt_sched_group(tg, parent))
+ goto err;
+
++ scx_group_set_weight(tg, CGROUP_WEIGHT_DFL);
+ alloc_uclamp_sched_group(tg, parent);
+
+ return tg;
+@@ -8775,6 +8866,7 @@ void sched_move_task(struct task_struct *tsk)
+ put_prev_task(rq, tsk);
+
+ sched_change_group(tsk, group);
++ scx_move_task(tsk);
+
+ if (queued)
+ enqueue_task(rq, tsk, queue_flags);
+@@ -8789,11 +8881,6 @@ void sched_move_task(struct task_struct *tsk)
}
}
@@ -1286,16 +1502,154 @@ index ebf21373f663..fb6276f74ee6 100644
static struct cgroup_subsys_state *
cpu_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
{
-@@ -11293,29 +11403,27 @@ static int cpu_local_stat_show(struct seq_file *sf,
+@@ -8817,6 +8904,11 @@ static int cpu_cgroup_css_online(struct cgroup_subsys_state *css)
+ {
+ struct task_group *tg = css_tg(css);
+ struct task_group *parent = css_tg(css->parent);
++ int ret;
++
++ ret = scx_tg_online(tg);
++ if (ret)
++ return ret;
+
+ if (parent)
+ sched_online_group(tg, parent);
+@@ -8831,6 +8923,13 @@ static int cpu_cgroup_css_online(struct cgroup_subsys_state *css)
+ return 0;
}
- #ifdef CONFIG_FAIR_GROUP_SCHED
++static void cpu_cgroup_css_offline(struct cgroup_subsys_state *css)
++{
++ struct task_group *tg = css_tg(css);
++
++ scx_tg_offline(tg);
++}
+
+ static void cpu_cgroup_css_released(struct cgroup_subsys_state *css)
+ {
+ struct task_group *tg = css_tg(css);
+@@ -8848,9 +8947,9 @@ static void cpu_cgroup_css_free(struct cgroup_subsys_state *css)
+ sched_unregister_group(tg);
+ }
+
+-#ifdef CONFIG_RT_GROUP_SCHED
+ static int cpu_cgroup_can_attach(struct cgroup_taskset *tset)
+ {
++#ifdef CONFIG_RT_GROUP_SCHED
+ struct task_struct *task;
+ struct cgroup_subsys_state *css;
+
+@@ -8858,9 +8957,9 @@ static int cpu_cgroup_can_attach(struct cgroup_taskset *tset)
+ if (!sched_rt_can_attach(css_tg(css), task))
+ return -EINVAL;
+ }
+- return 0;
+-}
+ #endif
++ return scx_cgroup_can_attach(tset);
++}
+
+ static void cpu_cgroup_attach(struct cgroup_taskset *tset)
+ {
+@@ -8869,6 +8968,13 @@ static void cpu_cgroup_attach(struct cgroup_taskset *tset)
+
+ cgroup_taskset_for_each(task, css, tset)
+ sched_move_task(task);
++
++ scx_cgroup_finish_attach();
++}
++
++static void cpu_cgroup_cancel_attach(struct cgroup_taskset *tset)
++{
++ scx_cgroup_cancel_attach(tset);
+ }
+
+ #ifdef CONFIG_UCLAMP_TASK_GROUP
+@@ -9045,22 +9151,36 @@ static int cpu_uclamp_max_show(struct seq_file *sf, void *v)
+ }
+ #endif /* CONFIG_UCLAMP_TASK_GROUP */
+
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
+static unsigned long tg_weight(struct task_group *tg)
+{
+ #ifdef CONFIG_FAIR_GROUP_SCHED
+ return scale_load_down(tg->shares);
++#else
++ return sched_weight_from_cgroup(tg->scx_weight);
++#endif
+}
+
+ static int cpu_shares_write_u64(struct cgroup_subsys_state *css,
+ struct cftype *cftype, u64 shareval)
+ {
++ int ret;
++
+ if (shareval > scale_load_down(ULONG_MAX))
+ shareval = MAX_SHARES;
+- return sched_group_set_shares(css_tg(css), scale_load(shareval));
++ ret = sched_group_set_shares(css_tg(css), scale_load(shareval));
++ if (!ret)
++ scx_group_set_weight(css_tg(css),
++ sched_weight_to_cgroup(shareval));
++ return ret;
+ }
+
+ static u64 cpu_shares_read_u64(struct cgroup_subsys_state *css,
+ struct cftype *cft)
+ {
+- struct task_group *tg = css_tg(css);
+-
+- return (u64) scale_load_down(tg->shares);
++ return tg_weight(css_tg(css));
+ }
++#endif /* CONFIG_GROUP_SCHED_WEIGHT */
+
+ #ifdef CONFIG_CFS_BANDWIDTH
+ static DEFINE_MUTEX(cfs_constraints_mutex);
+@@ -9406,7 +9526,6 @@ static int cpu_cfs_local_stat_show(struct seq_file *sf, void *v)
+ return 0;
+ }
+ #endif /* CONFIG_CFS_BANDWIDTH */
+-#endif /* CONFIG_FAIR_GROUP_SCHED */
+
+ #ifdef CONFIG_RT_GROUP_SCHED
+ static int cpu_rt_runtime_write(struct cgroup_subsys_state *css,
+@@ -9434,7 +9553,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css,
+ }
+ #endif /* CONFIG_RT_GROUP_SCHED */
+
+-#ifdef CONFIG_FAIR_GROUP_SCHED
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
+ static s64 cpu_idle_read_s64(struct cgroup_subsys_state *css,
+ struct cftype *cft)
+ {
+@@ -9444,12 +9563,17 @@ static s64 cpu_idle_read_s64(struct cgroup_subsys_state *css,
+ static int cpu_idle_write_s64(struct cgroup_subsys_state *css,
+ struct cftype *cft, s64 idle)
+ {
+- return sched_group_set_idle(css_tg(css), idle);
++ int ret;
++
++ ret = sched_group_set_idle(css_tg(css), idle);
++ if (!ret)
++ scx_group_set_idle(css_tg(css), idle);
++ return ret;
+ }
+ #endif
+
+ static struct cftype cpu_legacy_files[] = {
+-#ifdef CONFIG_FAIR_GROUP_SCHED
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
+ {
+ .name = "shares",
+ .read_u64 = cpu_shares_read_u64,
+@@ -9559,38 +9683,35 @@ static int cpu_local_stat_show(struct seq_file *sf,
+ return 0;
+ }
+
+-#ifdef CONFIG_FAIR_GROUP_SCHED
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
++
static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css,
struct cftype *cft)
{
@@ -1319,6 +1673,7 @@ index ebf21373f663..fb6276f74ee6 100644
- */
- if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX)
+ unsigned long weight;
++ int ret;
+
+ if (cgrp_weight < CGROUP_WEIGHT_MIN || cgrp_weight > CGROUP_WEIGHT_MAX)
return -ERANGE;
@@ -1326,9 +1681,13 @@ index ebf21373f663..fb6276f74ee6 100644
- weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL);
+ weight = sched_weight_from_cgroup(cgrp_weight);
- return sched_group_set_shares(css_tg(css), scale_load(weight));
+- return sched_group_set_shares(css_tg(css), scale_load(weight));
++ ret = sched_group_set_shares(css_tg(css), scale_load(weight));
++ if (!ret)
++ scx_group_set_weight(css_tg(css), cgrp_weight);
++ return ret;
}
-@@ -11323,7 +11431,7 @@ static int cpu_weight_write_u64(struct cgroup_subsys_state *css,
+
static s64 cpu_weight_nice_read_s64(struct cgroup_subsys_state *css,
struct cftype *cft)
{
@@ -1337,7 +1696,58 @@ index ebf21373f663..fb6276f74ee6 100644
int last_delta = INT_MAX;
int prio, delta;
-@@ -12064,3 +12172,38 @@ void sched_mm_cid_fork(struct task_struct *t)
+@@ -9609,7 +9730,7 @@ static int cpu_weight_nice_write_s64(struct cgroup_subsys_state *css,
+ struct cftype *cft, s64 nice)
+ {
+ unsigned long weight;
+- int idx;
++ int idx, ret;
+
+ if (nice < MIN_NICE || nice > MAX_NICE)
+ return -ERANGE;
+@@ -9618,9 +9739,13 @@ static int cpu_weight_nice_write_s64(struct cgroup_subsys_state *css,
+ idx = array_index_nospec(idx, 40);
+ weight = sched_prio_to_weight[idx];
+
+- return sched_group_set_shares(css_tg(css), scale_load(weight));
++ ret = sched_group_set_shares(css_tg(css), scale_load(weight));
++ if (!ret)
++ scx_group_set_weight(css_tg(css),
++ sched_weight_to_cgroup(weight));
++ return ret;
+ }
+-#endif
++#endif /* CONFIG_GROUP_SCHED_WEIGHT */
+
+ static void __maybe_unused cpu_period_quota_print(struct seq_file *sf,
+ long period, long quota)
+@@ -9680,7 +9805,7 @@ static ssize_t cpu_max_write(struct kernfs_open_file *of,
+ #endif
+
+ static struct cftype cpu_files[] = {
+-#ifdef CONFIG_FAIR_GROUP_SCHED
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
+ {
+ .name = "weight",
+ .flags = CFTYPE_NOT_ON_ROOT,
+@@ -9734,14 +9859,14 @@ static struct cftype cpu_files[] = {
+ struct cgroup_subsys cpu_cgrp_subsys = {
+ .css_alloc = cpu_cgroup_css_alloc,
+ .css_online = cpu_cgroup_css_online,
++ .css_offline = cpu_cgroup_css_offline,
+ .css_released = cpu_cgroup_css_released,
+ .css_free = cpu_cgroup_css_free,
+ .css_extra_stat_show = cpu_extra_stat_show,
+ .css_local_stat_show = cpu_local_stat_show,
+-#ifdef CONFIG_RT_GROUP_SCHED
+ .can_attach = cpu_cgroup_can_attach,
+-#endif
+ .attach = cpu_cgroup_attach,
++ .cancel_attach = cpu_cgroup_cancel_attach,
+ .legacy_cftypes = cpu_legacy_files,
+ .dfl_cftypes = cpu_files,
+ .early_init = true,
+@@ -10331,3 +10456,38 @@ void sched_mm_cid_fork(struct task_struct *t)
t->mm_cid_active = 1;
}
#endif
@@ -1481,10 +1891,10 @@ index c1eb9a1afd13..c057ef46c5f8 100644
diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
new file mode 100644
-index 000000000000..0dac88d0e578
+index 000000000000..25fadfaace33
--- /dev/null
+++ b/kernel/sched/ext.c
-@@ -0,0 +1,6532 @@
+@@ -0,0 +1,7262 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * BPF extensible scheduler class: Documentation/scheduler/sched-ext.rst
@@ -1603,10 +2013,16 @@ index 000000000000..0dac88d0e578
+ */
+ SCX_OPS_SWITCH_PARTIAL = 1LLU << 3,
+
++ /*
++ * CPU cgroup support flags
++ */
++ SCX_OPS_HAS_CGROUP_WEIGHT = 1LLU << 16, /* cpu.weight */
++
+ SCX_OPS_ALL_FLAGS = SCX_OPS_KEEP_BUILTIN_IDLE |
+ SCX_OPS_ENQ_LAST |
+ SCX_OPS_ENQ_EXITING |
-+ SCX_OPS_SWITCH_PARTIAL,
++ SCX_OPS_SWITCH_PARTIAL |
++ SCX_OPS_HAS_CGROUP_WEIGHT,
+};
+
+/* argument container for ops.init_task() */
@@ -1616,6 +2032,10 @@ index 000000000000..0dac88d0e578
+ * to the scheduler transition path.
+ */
+ bool fork;
++#ifdef CONFIG_EXT_GROUP_SCHED
++ /* the cgroup the task is joining */
++ struct cgroup *cgroup;
++#endif
+};
+
+/* argument container for ops.exit_task() */
@@ -1624,6 +2044,12 @@ index 000000000000..0dac88d0e578
+ bool cancelled;
+};
+
++/* argument container for ops->cgroup_init() */
++struct scx_cgroup_init_args {
++ /* the weight of the cgroup [1..10000] */
++ u32 weight;
++};
++
+enum scx_cpu_preempt_reason {
+ /* next task is being scheduled by &sched_class_rt */
+ SCX_CPU_PREEMPT_RT,
@@ -1988,6 +2414,79 @@ index 000000000000..0dac88d0e578
+ */
+ void (*dump_task)(struct scx_dump_ctx *ctx, struct task_struct *p);
+
++#ifdef CONFIG_EXT_GROUP_SCHED
++ /**
++ * cgroup_init - Initialize a cgroup
++ * @cgrp: cgroup being initialized
++ * @args: init arguments, see the struct definition
++ *
++ * Either the BPF scheduler is being loaded or @cgrp created, initialize
++ * @cgrp for sched_ext. This operation may block.
++ *
++ * Return 0 for success, -errno for failure. An error return while
++ * loading will abort loading of the BPF scheduler. During cgroup
++ * creation, it will abort the specific cgroup creation.
++ */
++ s32 (*cgroup_init)(struct cgroup *cgrp,
++ struct scx_cgroup_init_args *args);
++
++ /**
++ * cgroup_exit - Exit a cgroup
++ * @cgrp: cgroup being exited
++ *
++ * Either the BPF scheduler is being unloaded or @cgrp destroyed, exit
++ * @cgrp for sched_ext. This operation my block.
++ */
++ void (*cgroup_exit)(struct cgroup *cgrp);
++
++ /**
++ * cgroup_prep_move - Prepare a task to be moved to a different cgroup
++ * @p: task being moved
++ * @from: cgroup @p is being moved from
++ * @to: cgroup @p is being moved to
++ *
++ * Prepare @p for move from cgroup @from to @to. This operation may
++ * block and can be used for allocations.
++ *
++ * Return 0 for success, -errno for failure. An error return aborts the
++ * migration.
++ */
++ s32 (*cgroup_prep_move)(struct task_struct *p,
++ struct cgroup *from, struct cgroup *to);
++
++ /**
++ * cgroup_move - Commit cgroup move
++ * @p: task being moved
++ * @from: cgroup @p is being moved from
++ * @to: cgroup @p is being moved to
++ *
++ * Commit the move. @p is dequeued during this operation.
++ */
++ void (*cgroup_move)(struct task_struct *p,
++ struct cgroup *from, struct cgroup *to);
++
++ /**
++ * cgroup_cancel_move - Cancel cgroup move
++ * @p: task whose cgroup move is being canceled
++ * @from: cgroup @p was being moved from
++ * @to: cgroup @p was being moved to
++ *
++ * @p was cgroup_prep_move()'d but failed before reaching cgroup_move().
++ * Undo the preparation.
++ */
++ void (*cgroup_cancel_move)(struct task_struct *p,
++ struct cgroup *from, struct cgroup *to);
++
++ /**
++ * cgroup_set_weight - A cgroup's weight is being changed
++ * @cgrp: cgroup whose weight is being updated
++ * @weight: new weight [1..10000]
++ *
++ * Update @tg's weight to @weight.
++ */
++ void (*cgroup_set_weight)(struct cgroup *cgrp, u32 weight);
++#endif /* CONFIG_CGROUPS */
++
+ /*
+ * All online ops must come before ops.cpu_online().
+ */
@@ -2173,8 +2672,12 @@ index 000000000000..0dac88d0e578
+ SCX_KICK_WAIT = 1LLU << 2,
+};
+
++enum scx_tg_flags {
++ SCX_TG_ONLINE = 1U << 0,
++ SCX_TG_INITED = 1U << 1,
++};
++
+enum scx_ops_enable_state {
-+ SCX_OPS_PREPPING,
+ SCX_OPS_ENABLING,
+ SCX_OPS_ENABLED,
+ SCX_OPS_DISABLING,
@@ -2182,7 +2685,6 @@ index 000000000000..0dac88d0e578
+};
+
+static const char *scx_ops_enable_state_str[] = {
-+ [SCX_OPS_PREPPING] = "prepping",
+ [SCX_OPS_ENABLING] = "enabling",
+ [SCX_OPS_ENABLED] = "enabled",
+ [SCX_OPS_DISABLING] = "disabling",
@@ -2250,6 +2752,7 @@ index 000000000000..0dac88d0e578
+DEFINE_STATIC_PERCPU_RWSEM(scx_fork_rwsem);
+static atomic_t scx_ops_enable_state_var = ATOMIC_INIT(SCX_OPS_DISABLED);
+static atomic_t scx_ops_bypass_depth = ATOMIC_INIT(0);
++static bool scx_ops_init_task_enabled;
+static bool scx_switching_all;
+DEFINE_STATIC_KEY_FALSE(__scx_switched_all);
+
@@ -2261,7 +2764,7 @@ index 000000000000..0dac88d0e578
+static DEFINE_STATIC_KEY_FALSE(scx_ops_cpu_preempt);
+static DEFINE_STATIC_KEY_FALSE(scx_builtin_idle_enabled);
+
-+struct static_key_false scx_has_op[SCX_OPI_END] =
++static struct static_key_false scx_has_op[SCX_OPI_END] =
+ { [0 ... SCX_OPI_END-1] = STATIC_KEY_FALSE_INIT };
+
+static atomic_t scx_exit_kind = ATOMIC_INIT(SCX_EXIT_DONE);
@@ -2271,6 +2774,13 @@ index 000000000000..0dac88d0e578
+static atomic_long_t scx_hotplug_seq = ATOMIC_LONG_INIT(0);
+
+/*
++ * A monotically increasing sequence number that is incremented every time a
++ * scheduler is enabled. This can be used by to check if any custom sched_ext
++ * scheduler has ever been used in the system.
++ */
++static atomic_long_t scx_enable_seq = ATOMIC_LONG_INIT(0);
++
++/*
+ * The maximum amount of time in jiffies that a task may be runnable without
+ * being scheduled on a CPU. If this timeout is exceeded, it will trigger
+ * scx_ops_error().
@@ -2314,8 +2824,15 @@ index 000000000000..0dac88d0e578
+ */
+static DEFINE_PER_CPU(struct task_struct *, direct_dispatch_task);
+
-+/* dispatch queues */
-+static struct scx_dispatch_q __cacheline_aligned_in_smp scx_dsq_global;
++/*
++ * Dispatch queues.
++ *
++ * The global DSQ (%SCX_DSQ_GLOBAL) is split per-node for scalability. This is
++ * to avoid live-locking in bypass mode where all tasks are dispatched to
++ * %SCX_DSQ_GLOBAL and all CPUs consume from it. If per-node split isn't
++ * sufficient, it can be further split.
++ */
++static struct scx_dispatch_q **global_dsqs;
+
+static const struct rhashtable_params dsq_hash_params = {
+ .key_len = 8,
@@ -2364,7 +2881,7 @@ index 000000000000..0dac88d0e578
+ struct scx_bstr_buf buf;
+};
+
-+struct scx_dump_data scx_dump_data = {
++static struct scx_dump_data scx_dump_data = {
+ .cpu = -1,
+};
+
@@ -2418,6 +2935,16 @@ index 000000000000..0dac88d0e578
+ return (s32)(a - b) < 0;
+}
+
++static struct scx_dispatch_q *find_global_dsq(struct task_struct *p)
++{
++ return global_dsqs[cpu_to_node(task_cpu(p))];
++}
++
++static struct scx_dispatch_q *find_user_dsq(u64 dsq_id)
++{
++ return rhashtable_lookup_fast(&dsq_hash, &dsq_id, dsq_hash_params);
++}
++
+/*
+ * scx_kf_mask enforcement. Some kfuncs can only be called from specific SCX
+ * ops. When invoking SCX ops, SCX_CALL_OP[_RET]() should be used to indicate
@@ -2554,6 +3081,11 @@ index 000000000000..0dac88d0e578
+ return true;
+}
+
++static bool scx_kf_allowed_if_unlocked(void)
++{
++ return !current->scx.kf_mask;
++}
++
+/**
+ * nldsq_next_task - Iterate to the next task in a non-local DSQ
+ * @dsq: user dsq being interated
@@ -2587,7 +3119,7 @@ index 000000000000..0dac88d0e578
+
+ dsq_lnode = container_of(list_node, struct scx_dsq_list_node,
+ node);
-+ } while (dsq_lnode->is_bpf_iter_cursor);
++ } while (dsq_lnode->flags & SCX_DSQ_LNODE_ITER_CURSOR);
+
+ return container_of(dsq_lnode, struct task_struct, scx.dsq_list);
+}
@@ -2605,16 +3137,22 @@ index 000000000000..0dac88d0e578
+ */
+enum scx_dsq_iter_flags {
+ /* iterate in the reverse dispatch order */
-+ SCX_DSQ_ITER_REV = 1U << 0,
++ SCX_DSQ_ITER_REV = 1U << 16,
+
-+ __SCX_DSQ_ITER_ALL_FLAGS = SCX_DSQ_ITER_REV,
++ __SCX_DSQ_ITER_HAS_SLICE = 1U << 30,
++ __SCX_DSQ_ITER_HAS_VTIME = 1U << 31,
++
++ __SCX_DSQ_ITER_USER_FLAGS = SCX_DSQ_ITER_REV,
++ __SCX_DSQ_ITER_ALL_FLAGS = __SCX_DSQ_ITER_USER_FLAGS |
++ __SCX_DSQ_ITER_HAS_SLICE |
++ __SCX_DSQ_ITER_HAS_VTIME,
+};
+
+struct bpf_iter_scx_dsq_kern {
+ struct scx_dsq_list_node cursor;
+ struct scx_dispatch_q *dsq;
-+ u32 dsq_seq;
-+ u32 flags;
++ u64 slice;
++ u64 vtime;
+} __attribute__((aligned(8)));
+
+struct bpf_iter_scx_dsq {
@@ -2652,6 +3190,9 @@ index 000000000000..0dac88d0e578
+{
+ lockdep_assert_held(&scx_tasks_lock);
+
++ BUILD_BUG_ON(__SCX_DSQ_ITER_ALL_FLAGS &
++ ((1U << __SCX_DSQ_LNODE_PRIV_SHIFT) - 1));
++
+ iter->cursor = (struct sched_ext_entity){ .flags = SCX_TASK_CURSOR };
+ list_add(&iter->cursor.tasks_node, &scx_tasks);
+ iter->locked = NULL;
@@ -2730,17 +3271,37 @@ index 000000000000..0dac88d0e578
+ * whether they would like to filter out dead tasks. See scx_task_iter_init()
+ * for details.
+ */
-+static struct task_struct *
-+scx_task_iter_next_locked(struct scx_task_iter *iter, bool include_dead)
++static struct task_struct *scx_task_iter_next_locked(struct scx_task_iter *iter)
+{
+ struct task_struct *p;
-+retry:
++
+ scx_task_iter_rq_unlock(iter);
+
+ while ((p = scx_task_iter_next(iter))) {
+ /*
-+ * is_idle_task() tests %PF_IDLE which may not be set for CPUs
-+ * which haven't yet been onlined. Test sched_class directly.
++ * scx_task_iter is used to prepare and move tasks into SCX
++ * while loading the BPF scheduler and vice-versa while
++ * unloading. The init_tasks ("swappers") should be excluded
++ * from the iteration because:
++ *
++ * - It's unsafe to use __setschduler_prio() on an init_task to
++ * determine the sched_class to use as it won't preserve its
++ * idle_sched_class.
++ *
++ * - ops.init/exit_task() can easily be confused if called with
++ * init_tasks as they, e.g., share PID 0.
++ *
++ * As init_tasks are never scheduled through SCX, they can be
++ * skipped safely. Note that is_idle_task() which tests %PF_IDLE
++ * doesn't work here:
++ *
++ * - %PF_IDLE may not be set for an init_task whose CPU hasn't
++ * yet been onlined.
++ *
++ * - %PF_IDLE can be set on tasks that are not init_tasks. See
++ * play_idle_precise() used by CONFIG_IDLE_INJECT.
++ *
++ * Test for idle_sched_class as only init_tasks are on it.
+ */
+ if (p->sched_class != &idle_sched_class)
+ break;
@@ -2751,16 +3312,6 @@ index 000000000000..0dac88d0e578
+ iter->rq = task_rq_lock(p, &iter->rf);
+ iter->locked = p;
+
-+ /*
-+ * If we see %TASK_DEAD, @p already disabled preemption, is about to do
-+ * the final __schedule(), won't ever need to be scheduled again and can
-+ * thus be safely ignored. If we don't see %TASK_DEAD, @p can't enter
-+ * the final __schedle() while we're locking its rq and thus will stay
-+ * alive until the rq is unlocked.
-+ */
-+ if (!include_dead && READ_ONCE(p->__state) == TASK_DEAD)
-+ goto retry;
-+
+ return p;
+}
+
@@ -2783,9 +3334,9 @@ index 000000000000..0dac88d0e578
+ return atomic_try_cmpxchg(&scx_ops_enable_state_var, &from_v, to);
+}
+
-+static bool scx_ops_bypassing(void)
++static bool scx_rq_bypassing(struct rq *rq)
+{
-+ return unlikely(atomic_read(&scx_ops_bypass_depth));
++ return unlikely(rq->scx.flags & SCX_RQ_BYPASSING);
+}
+
+/**
@@ -2919,13 +3470,18 @@ index 000000000000..0dac88d0e578
+ */
+static void touch_core_sched(struct rq *rq, struct task_struct *p)
+{
++ lockdep_assert_rq_held(rq);
++
+#ifdef CONFIG_SCHED_CORE
+ /*
+ * It's okay to update the timestamp spuriously. Use
+ * sched_core_disabled() which is cheaper than enabled().
++ *
++ * As this is used to determine ordering between tasks of sibling CPUs,
++ * it may be better to use per-core dispatch sequence instead.
+ */
+ if (!sched_core_disabled())
-+ p->scx.core_sched_at = rq_clock_task(rq);
++ p->scx.core_sched_at = sched_clock_cpu(cpu_of(rq));
+#endif
+}
+
@@ -2942,7 +3498,6 @@ index 000000000000..0dac88d0e578
+static void touch_core_sched_dispatch(struct rq *rq, struct task_struct *p)
+{
+ lockdep_assert_rq_held(rq);
-+ assert_clock_updated(rq);
+
+#ifdef CONFIG_SCHED_CORE
+ if (SCX_HAS_OP(core_sched_before))
@@ -2953,20 +3508,14 @@ index 000000000000..0dac88d0e578
+static void update_curr_scx(struct rq *rq)
+{
+ struct task_struct *curr = rq->curr;
-+ u64 now = rq_clock_task(rq);
-+ u64 delta_exec;
++ s64 delta_exec;
+
-+ if (time_before_eq64(now, curr->se.exec_start))
++ delta_exec = update_curr_common(rq);
++ if (unlikely(delta_exec <= 0))
+ return;
+
-+ delta_exec = now - curr->se.exec_start;
-+ curr->se.exec_start = now;
-+ curr->se.sum_exec_runtime += delta_exec;
-+ account_group_exec_runtime(curr, delta_exec);
-+ cgroup_account_cputime(curr, delta_exec);
-+
+ if (curr->scx.slice != SCX_SLICE_INF) {
-+ curr->scx.slice -= min(curr->scx.slice, delta_exec);
++ curr->scx.slice -= min_t(u64, curr->scx.slice, delta_exec);
+ if (!curr->scx.slice)
+ touch_core_sched(rq, curr);
+ }
@@ -3004,7 +3553,7 @@ index 000000000000..0dac88d0e578
+ scx_ops_error("attempting to dispatch to a destroyed dsq");
+ /* fall back to the global dsq */
+ raw_spin_unlock(&dsq->lock);
-+ dsq = &scx_dsq_global;
++ dsq = find_global_dsq(p);
+ raw_spin_lock(&dsq->lock);
+ }
+ }
@@ -3107,6 +3656,8 @@ index 000000000000..0dac88d0e578
+static void task_unlink_from_dsq(struct task_struct *p,
+ struct scx_dispatch_q *dsq)
+{
++ WARN_ON_ONCE(list_empty(&p->scx.dsq_list.node));
++
+ if (p->scx.dsq_flags & SCX_TASK_DSQ_ON_PRIQ) {
+ rb_erase(&p->scx.dsq_priq, &dsq->priq);
+ RB_CLEAR_NODE(&p->scx.dsq_priq);
@@ -3114,6 +3665,7 @@ index 000000000000..0dac88d0e578
+ }
+
+ list_del_init(&p->scx.dsq_list.node);
++ dsq_mod_nr(dsq, -1);
+}
+
+static void dispatch_dequeue(struct rq *rq, struct task_struct *p)
@@ -3150,9 +3702,7 @@ index 000000000000..0dac88d0e578
+ */
+ if (p->scx.holding_cpu < 0) {
+ /* @p must still be on @dsq, dequeue */
-+ WARN_ON_ONCE(list_empty(&p->scx.dsq_list.node));
+ task_unlink_from_dsq(p, dsq);
-+ dsq_mod_nr(dsq, -1);
+ } else {
+ /*
+ * We're racing against dispatch_to_local_dsq() which already
@@ -3169,21 +3719,6 @@ index 000000000000..0dac88d0e578
+ raw_spin_unlock(&dsq->lock);
+}
+
-+static struct scx_dispatch_q *find_user_dsq(u64 dsq_id)
-+{
-+ return rhashtable_lookup_fast(&dsq_hash, &dsq_id, dsq_hash_params);
-+}
-+
-+static struct scx_dispatch_q *find_non_local_dsq(u64 dsq_id)
-+{
-+ lockdep_assert(rcu_read_lock_any_held());
-+
-+ if (dsq_id == SCX_DSQ_GLOBAL)
-+ return &scx_dsq_global;
-+ else
-+ return find_user_dsq(dsq_id);
-+}
-+
+static struct scx_dispatch_q *find_dsq_for_dispatch(struct rq *rq, u64 dsq_id,
+ struct task_struct *p)
+{
@@ -3192,11 +3727,24 @@ index 000000000000..0dac88d0e578
+ if (dsq_id == SCX_DSQ_LOCAL)
+ return &rq->scx.local_dsq;
+
-+ dsq = find_non_local_dsq(dsq_id);
++ if ((dsq_id & SCX_DSQ_LOCAL_ON) == SCX_DSQ_LOCAL_ON) {
++ s32 cpu = dsq_id & SCX_DSQ_LOCAL_CPU_MASK;
++
++ if (!ops_cpu_valid(cpu, "in SCX_DSQ_LOCAL_ON dispatch verdict"))
++ return find_global_dsq(p);
++
++ return &cpu_rq(cpu)->scx.local_dsq;
++ }
++
++ if (dsq_id == SCX_DSQ_GLOBAL)
++ dsq = find_global_dsq(p);
++ else
++ dsq = find_user_dsq(dsq_id);
++
+ if (unlikely(!dsq)) {
+ scx_ops_error("non-existent DSQ 0x%llx for %s[%d]",
+ dsq_id, p->comm, p->pid);
-+ return &scx_dsq_global;
++ return find_global_dsq(p);
+ }
+
+ return dsq;
@@ -3235,8 +3783,8 @@ index 000000000000..0dac88d0e578
+static void direct_dispatch(struct task_struct *p, u64 enq_flags)
+{
+ struct rq *rq = task_rq(p);
-+ struct scx_dispatch_q *dsq;
-+ u64 dsq_id = p->scx.ddsp_dsq_id;
++ struct scx_dispatch_q *dsq =
++ find_dsq_for_dispatch(rq, p->scx.ddsp_dsq_id, p);
+
+ touch_core_sched_dispatch(rq, p);
+
@@ -3248,15 +3796,9 @@ index 000000000000..0dac88d0e578
+ * DSQ_LOCAL_ON verdicts targeting the local DSQ of a remote CPU, defer
+ * the enqueue so that it's executed when @rq can be unlocked.
+ */
-+ if ((dsq_id & SCX_DSQ_LOCAL_ON) == SCX_DSQ_LOCAL_ON) {
-+ s32 cpu = dsq_id & SCX_DSQ_LOCAL_CPU_MASK;
++ if (dsq->id == SCX_DSQ_LOCAL && dsq != &rq->scx.local_dsq) {
+ unsigned long opss;
+
-+ if (cpu == cpu_of(rq)) {
-+ dsq_id = SCX_DSQ_LOCAL;
-+ goto dispatch;
-+ }
-+
+ opss = atomic_long_read(&p->scx.ops_state) & SCX_OPSS_STATE_MASK;
+
+ switch (opss & SCX_OPSS_STATE_MASK) {
@@ -3283,14 +3825,19 @@ index 000000000000..0dac88d0e578
+ return;
+ }
+
-+dispatch:
-+ dsq = find_dsq_for_dispatch(rq, dsq_id, p);
+ dispatch_enqueue(dsq, p, p->scx.ddsp_enq_flags | SCX_ENQ_CLEAR_OPSS);
+}
+
+static bool scx_rq_online(struct rq *rq)
+{
-+ return likely(rq->scx.flags & SCX_RQ_ONLINE);
++ /*
++ * Test both cpu_active() and %SCX_RQ_ONLINE. %SCX_RQ_ONLINE indicates
++ * the online state as seen from the BPF scheduler. cpu_active() test
++ * guarantees that, if this function returns %true, %SCX_RQ_ONLINE will
++ * stay set until the current scheduling operation is complete even if
++ * we aren't locking @rq.
++ */
++ return likely((rq->scx.flags & SCX_RQ_ONLINE) && cpu_active(cpu_of(rq)));
+}
+
+static void do_enqueue_task(struct rq *rq, struct task_struct *p, u64 enq_flags,
@@ -3313,7 +3860,7 @@ index 000000000000..0dac88d0e578
+ if (!scx_rq_online(rq))
+ goto local;
+
-+ if (scx_ops_bypassing()) {
++ if (scx_rq_bypassing(rq)) {
+ if (enq_flags & SCX_ENQ_LAST)
+ goto local;
+ else
@@ -3378,7 +3925,7 @@ index 000000000000..0dac88d0e578
+global:
+ touch_core_sched(rq, p); /* see the comment in local: */
+ p->scx.slice = SCX_SLICE_DFL;
-+ dispatch_enqueue(&scx_dsq_global, p, enq_flags);
++ dispatch_enqueue(find_global_dsq(p), p, enq_flags);
+}
+
+static bool task_runnable(const struct task_struct *p)
@@ -3440,7 +3987,7 @@ index 000000000000..0dac88d0e578
+ rq->scx.nr_running++;
+ add_nr_running(rq, 1);
+
-+ if (SCX_HAS_OP(runnable))
++ if (SCX_HAS_OP(runnable) && !task_on_rq_migrating(p))
+ SCX_CALL_OP_TASK(SCX_KF_REST, runnable, p, enq_flags);
+
+ if (enq_flags & SCX_ENQ_WAKEUP)
@@ -3524,7 +4071,7 @@ index 000000000000..0dac88d0e578
+ SCX_CALL_OP_TASK(SCX_KF_REST, stopping, p, false);
+ }
+
-+ if (SCX_HAS_OP(quiescent))
++ if (SCX_HAS_OP(quiescent) && !task_on_rq_migrating(p))
+ SCX_CALL_OP_TASK(SCX_KF_REST, quiescent, p, deq_flags);
+
+ if (deq_flags & SCX_DEQ_SLEEP)
@@ -3559,193 +4106,173 @@ index 000000000000..0dac88d0e578
+ return false;
+}
+
++static void move_local_task_to_local_dsq(struct task_struct *p, u64 enq_flags,
++ struct scx_dispatch_q *src_dsq,
++ struct rq *dst_rq)
++{
++ struct scx_dispatch_q *dst_dsq = &dst_rq->scx.local_dsq;
++
++ /* @dsq is locked and @p is on @dst_rq */
++ lockdep_assert_held(&src_dsq->lock);
++ lockdep_assert_rq_held(dst_rq);
++
++ WARN_ON_ONCE(p->scx.holding_cpu >= 0);
++
++ if (enq_flags & (SCX_ENQ_HEAD | SCX_ENQ_PREEMPT))
++ list_add(&p->scx.dsq_list.node, &dst_dsq->list);
++ else
++ list_add_tail(&p->scx.dsq_list.node, &dst_dsq->list);
++
++ dsq_mod_nr(dst_dsq, 1);
++ p->scx.dsq = dst_dsq;
++}
++
+#ifdef CONFIG_SMP
+/**
-+ * move_task_to_local_dsq - Move a task from a different rq to a local DSQ
-+ * @rq: rq to move the task into, currently locked
++ * move_remote_task_to_local_dsq - Move a task from a foreign rq to a local DSQ
+ * @p: task to move
+ * @enq_flags: %SCX_ENQ_*
++ * @src_rq: rq to move the task from, locked on entry, released on return
++ * @dst_rq: rq to move the task into, locked on return
+ *
-+ * Move @p which is currently on a different rq to @rq's local DSQ. The caller
-+ * must:
-+ *
-+ * 1. Start with exclusive access to @p either through its DSQ lock or
-+ * %SCX_OPSS_DISPATCHING flag.
-+ *
-+ * 2. Set @p->scx.holding_cpu to raw_smp_processor_id().
-+ *
-+ * 3. Remember task_rq(@p). Release the exclusive access so that we don't
-+ * deadlock with dequeue.
-+ *
-+ * 4. Lock @rq and the task_rq from #3.
-+ *
-+ * 5. Call this function.
-+ *
-+ * Returns %true if @p was successfully moved. %false after racing dequeue and
-+ * losing.
++ * Move @p which is currently on @src_rq to @dst_rq's local DSQ.
+ */
-+static bool move_task_to_local_dsq(struct rq *rq, struct task_struct *p,
-+ u64 enq_flags)
++static void move_remote_task_to_local_dsq(struct task_struct *p, u64 enq_flags,
++ struct rq *src_rq, struct rq *dst_rq)
+{
-+ struct rq *task_rq;
-+
-+ lockdep_assert_rq_held(rq);
-+
-+ /*
-+ * If dequeue got to @p while we were trying to lock both rq's, it'd
-+ * have cleared @p->scx.holding_cpu to -1. While other cpus may have
-+ * updated it to different values afterwards, as this operation can't be
-+ * preempted or recurse, @p->scx.holding_cpu can never become
-+ * raw_smp_processor_id() again before we're done. Thus, we can tell
-+ * whether we lost to dequeue by testing whether @p->scx.holding_cpu is
-+ * still raw_smp_processor_id().
-+ *
-+ * See dispatch_dequeue() for the counterpart.
-+ */
-+ if (unlikely(p->scx.holding_cpu != raw_smp_processor_id()))
-+ return false;
++ lockdep_assert_rq_held(src_rq);
+
-+ /* @p->rq couldn't have changed if we're still the holding cpu */
-+ task_rq = task_rq(p);
-+ lockdep_assert_rq_held(task_rq);
++ /* the following marks @p MIGRATING which excludes dequeue */
++ deactivate_task(src_rq, p, 0);
++ set_task_cpu(p, cpu_of(dst_rq));
++ p->scx.sticky_cpu = cpu_of(dst_rq);
+
-+ WARN_ON_ONCE(!cpumask_test_cpu(cpu_of(rq), p->cpus_ptr));
-+ deactivate_task(task_rq, p, 0);
-+ set_task_cpu(p, cpu_of(rq));
-+ p->scx.sticky_cpu = cpu_of(rq);
++ raw_spin_rq_unlock(src_rq);
++ raw_spin_rq_lock(dst_rq);
+
+ /*
+ * We want to pass scx-specific enq_flags but activate_task() will
+ * truncate the upper 32 bit. As we own @rq, we can pass them through
+ * @rq->scx.extra_enq_flags instead.
+ */
-+ WARN_ON_ONCE(rq->scx.extra_enq_flags);
-+ rq->scx.extra_enq_flags = enq_flags;
-+ activate_task(rq, p, 0);
-+ rq->scx.extra_enq_flags = 0;
-+
-+ return true;
++ WARN_ON_ONCE(!cpumask_test_cpu(cpu_of(dst_rq), p->cpus_ptr));
++ WARN_ON_ONCE(dst_rq->scx.extra_enq_flags);
++ dst_rq->scx.extra_enq_flags = enq_flags;
++ activate_task(dst_rq, p, 0);
++ dst_rq->scx.extra_enq_flags = 0;
+}
+
-+/**
-+ * dispatch_to_local_dsq_lock - Ensure source and destination rq's are locked
-+ * @rq: current rq which is locked
-+ * @src_rq: rq to move task from
-+ * @dst_rq: rq to move task to
++/*
++ * Similar to kernel/sched/core.c::is_cpu_allowed(). However, there are two
++ * differences:
+ *
-+ * We're holding @rq lock and trying to dispatch a task from @src_rq to
-+ * @dst_rq's local DSQ and thus need to lock both @src_rq and @dst_rq. Whether
-+ * @rq stays locked isn't important as long as the state is restored after
-+ * dispatch_to_local_dsq_unlock().
-+ */
-+static void dispatch_to_local_dsq_lock(struct rq *rq, struct rq *src_rq,
-+ struct rq *dst_rq)
-+{
-+ if (src_rq == dst_rq) {
-+ raw_spin_rq_unlock(rq);
-+ raw_spin_rq_lock(dst_rq);
-+ } else if (rq == src_rq) {
-+ double_lock_balance(rq, dst_rq);
-+ } else if (rq == dst_rq) {
-+ double_lock_balance(rq, src_rq);
-+ } else {
-+ raw_spin_rq_unlock(rq);
-+ double_rq_lock(src_rq, dst_rq);
-+ }
-+}
-+
-+/**
-+ * dispatch_to_local_dsq_unlock - Undo dispatch_to_local_dsq_lock()
-+ * @rq: current rq which is locked
-+ * @src_rq: rq to move task from
-+ * @dst_rq: rq to move task to
++ * - is_cpu_allowed() asks "Can this task run on this CPU?" while
++ * task_can_run_on_remote_rq() asks "Can the BPF scheduler migrate the task to
++ * this CPU?".
+ *
-+ * Unlock @src_rq and @dst_rq and ensure that @rq is locked on return.
-+ */
-+static void dispatch_to_local_dsq_unlock(struct rq *rq, struct rq *src_rq,
-+ struct rq *dst_rq)
-+{
-+ if (src_rq == dst_rq) {
-+ raw_spin_rq_unlock(dst_rq);
-+ raw_spin_rq_lock(rq);
-+ } else if (rq == src_rq) {
-+ double_unlock_balance(rq, dst_rq);
-+ } else if (rq == dst_rq) {
-+ double_unlock_balance(rq, src_rq);
-+ } else {
-+ double_rq_unlock(src_rq, dst_rq);
-+ raw_spin_rq_lock(rq);
-+ }
-+}
-+#endif /* CONFIG_SMP */
-+
-+static void consume_local_task(struct rq *rq, struct scx_dispatch_q *dsq,
-+ struct task_struct *p)
-+{
-+ lockdep_assert_held(&dsq->lock); /* released on return */
-+
-+ /* @dsq is locked and @p is on this rq */
-+ WARN_ON_ONCE(p->scx.holding_cpu >= 0);
-+ task_unlink_from_dsq(p, dsq);
-+ list_add_tail(&p->scx.dsq_list.node, &rq->scx.local_dsq.list);
-+ dsq_mod_nr(dsq, -1);
-+ dsq_mod_nr(&rq->scx.local_dsq, 1);
-+ p->scx.dsq = &rq->scx.local_dsq;
-+ raw_spin_unlock(&dsq->lock);
-+}
-+
-+#ifdef CONFIG_SMP
-+/*
-+ * Similar to kernel/sched/core.c::is_cpu_allowed() but we're testing whether @p
-+ * can be pulled to @rq.
++ * While migration is disabled, is_cpu_allowed() has to say "yes" as the task
++ * must be allowed to finish on the CPU that it's currently on regardless of
++ * the CPU state. However, task_can_run_on_remote_rq() must say "no" as the
++ * BPF scheduler shouldn't attempt to migrate a task which has migration
++ * disabled.
++ *
++ * - The BPF scheduler is bypassed while the rq is offline and we can always say
++ * no to the BPF scheduler initiated migrations while offline.
+ */
-+static bool task_can_run_on_remote_rq(struct task_struct *p, struct rq *rq)
++static bool task_can_run_on_remote_rq(struct task_struct *p, struct rq *rq,
++ bool trigger_error)
+{
+ int cpu = cpu_of(rq);
+
-+ if (!cpumask_test_cpu(cpu, p->cpus_ptr))
++ /*
++ * We don't require the BPF scheduler to avoid dispatching to offline
++ * CPUs mostly for convenience but also because CPUs can go offline
++ * between scx_bpf_dispatch() calls and here. Trigger error iff the
++ * picked CPU is outside the allowed mask.
++ */
++ if (!task_allowed_on_cpu(p, cpu)) {
++ if (trigger_error)
++ scx_ops_error("SCX_DSQ_LOCAL[_ON] verdict target cpu %d not allowed for %s[%d]",
++ cpu_of(rq), p->comm, p->pid);
+ return false;
++ }
++
+ if (unlikely(is_migration_disabled(p)))
+ return false;
-+ if (!(p->flags & PF_KTHREAD) && unlikely(!task_cpu_possible(cpu, p)))
-+ return false;
++
+ if (!scx_rq_online(rq))
+ return false;
++
+ return true;
+}
+
-+static bool consume_remote_task(struct rq *rq, struct scx_dispatch_q *dsq,
-+ struct task_struct *p, struct rq *task_rq)
++/**
++ * unlink_dsq_and_lock_src_rq() - Unlink task from its DSQ and lock its task_rq
++ * @p: target task
++ * @dsq: locked DSQ @p is currently on
++ * @src_rq: rq @p is currently on, stable with @dsq locked
++ *
++ * Called with @dsq locked but no rq's locked. We want to move @p to a different
++ * DSQ, including any local DSQ, but are not locking @src_rq. Locking @src_rq is
++ * required when transferring into a local DSQ. Even when transferring into a
++ * non-local DSQ, it's better to use the same mechanism to protect against
++ * dequeues and maintain the invariant that @p->scx.dsq can only change while
++ * @src_rq is locked, which e.g. scx_dump_task() depends on.
++ *
++ * We want to grab @src_rq but that can deadlock if we try while locking @dsq,
++ * so we want to unlink @p from @dsq, drop its lock and then lock @src_rq. As
++ * this may race with dequeue, which can't drop the rq lock or fail, do a little
++ * dancing from our side.
++ *
++ * @p->scx.holding_cpu is set to this CPU before @dsq is unlocked. If @p gets
++ * dequeued after we unlock @dsq but before locking @src_rq, the holding_cpu
++ * would be cleared to -1. While other cpus may have updated it to different
++ * values afterwards, as this operation can't be preempted or recurse, the
++ * holding_cpu can never become this CPU again before we're done. Thus, we can
++ * tell whether we lost to dequeue by testing whether the holding_cpu still
++ * points to this CPU. See dispatch_dequeue() for the counterpart.
++ *
++ * On return, @dsq is unlocked and @src_rq is locked. Returns %true if @p is
++ * still valid. %false if lost to dequeue.
++ */
++static bool unlink_dsq_and_lock_src_rq(struct task_struct *p,
++ struct scx_dispatch_q *dsq,
++ struct rq *src_rq)
+{
-+ bool moved = false;
++ s32 cpu = raw_smp_processor_id();
+
-+ lockdep_assert_held(&dsq->lock); /* released on return */
++ lockdep_assert_held(&dsq->lock);
+
-+ /*
-+ * @dsq is locked and @p is on a remote rq. @p is currently protected by
-+ * @dsq->lock. We want to pull @p to @rq but may deadlock if we grab
-+ * @task_rq while holding @dsq and @rq locks. As dequeue can't drop the
-+ * rq lock or fail, do a little dancing from our side. See
-+ * move_task_to_local_dsq().
-+ */
+ WARN_ON_ONCE(p->scx.holding_cpu >= 0);
+ task_unlink_from_dsq(p, dsq);
-+ dsq_mod_nr(dsq, -1);
-+ p->scx.holding_cpu = raw_smp_processor_id();
-+ raw_spin_unlock(&dsq->lock);
++ p->scx.holding_cpu = cpu;
+
-+ double_lock_balance(rq, task_rq);
++ raw_spin_unlock(&dsq->lock);
++ raw_spin_rq_lock(src_rq);
+
-+ moved = move_task_to_local_dsq(rq, p, 0);
++ /* task_rq couldn't have changed if we're still the holding cpu */
++ return likely(p->scx.holding_cpu == cpu) &&
++ !WARN_ON_ONCE(src_rq != task_rq(p));
++}
+
-+ double_unlock_balance(rq, task_rq);
++static bool consume_remote_task(struct rq *this_rq, struct task_struct *p,
++ struct scx_dispatch_q *dsq, struct rq *src_rq)
++{
++ raw_spin_rq_unlock(this_rq);
+
-+ return moved;
++ if (unlink_dsq_and_lock_src_rq(p, dsq, src_rq)) {
++ move_remote_task_to_local_dsq(p, 0, src_rq, this_rq);
++ return true;
++ } else {
++ raw_spin_rq_unlock(src_rq);
++ raw_spin_rq_lock(this_rq);
++ return false;
++ }
+}
+#else /* CONFIG_SMP */
-+static bool task_can_run_on_remote_rq(struct task_struct *p, struct rq *rq) { return false; }
-+static bool consume_remote_task(struct rq *rq, struct scx_dispatch_q *dsq,
-+ struct task_struct *p, struct rq *task_rq) { return false; }
++static inline void move_remote_task_to_local_dsq(struct task_struct *p, u64 enq_flags, struct rq *src_rq, struct rq *dst_rq) { WARN_ON_ONCE(1); }
++static inline bool task_can_run_on_remote_rq(struct task_struct *p, struct rq *rq, bool trigger_error) { return false; }
++static inline bool consume_remote_task(struct rq *this_rq, struct task_struct *p, struct scx_dispatch_q *dsq, struct rq *task_rq) { return false; }
+#endif /* CONFIG_SMP */
+
+static bool consume_dispatch_q(struct rq *rq, struct scx_dispatch_q *dsq)
@@ -3766,12 +4293,14 @@ index 000000000000..0dac88d0e578
+ struct rq *task_rq = task_rq(p);
+
+ if (rq == task_rq) {
-+ consume_local_task(rq, dsq, p);
++ task_unlink_from_dsq(p, dsq);
++ move_local_task_to_local_dsq(p, 0, dsq, rq);
++ raw_spin_unlock(&dsq->lock);
+ return true;
+ }
+
-+ if (task_can_run_on_remote_rq(p, rq)) {
-+ if (likely(consume_remote_task(rq, dsq, p, task_rq)))
++ if (task_can_run_on_remote_rq(p, rq, false)) {
++ if (likely(consume_remote_task(rq, p, dsq, task_rq)))
+ return true;
+ goto retry;
+ }
@@ -3781,122 +4310,102 @@ index 000000000000..0dac88d0e578
+ return false;
+}
+
-+enum dispatch_to_local_dsq_ret {
-+ DTL_DISPATCHED, /* successfully dispatched */
-+ DTL_LOST, /* lost race to dequeue */
-+ DTL_NOT_LOCAL, /* destination is not a local DSQ */
-+ DTL_INVALID, /* invalid local dsq_id */
-+};
++static bool consume_global_dsq(struct rq *rq)
++{
++ int node = cpu_to_node(cpu_of(rq));
++
++ return consume_dispatch_q(rq, global_dsqs[node]);
++}
+
+/**
+ * dispatch_to_local_dsq - Dispatch a task to a local dsq
+ * @rq: current rq which is locked
-+ * @dsq_id: destination dsq ID
++ * @dst_dsq: destination DSQ
+ * @p: task to dispatch
+ * @enq_flags: %SCX_ENQ_*
+ *
-+ * We're holding @rq lock and want to dispatch @p to the local DSQ identified by
-+ * @dsq_id. This function performs all the synchronization dancing needed
-+ * because local DSQs are protected with rq locks.
++ * We're holding @rq lock and want to dispatch @p to @dst_dsq which is a local
++ * DSQ. This function performs all the synchronization dancing needed because
++ * local DSQs are protected with rq locks.
+ *
+ * The caller must have exclusive ownership of @p (e.g. through
+ * %SCX_OPSS_DISPATCHING).
+ */
-+static enum dispatch_to_local_dsq_ret
-+dispatch_to_local_dsq(struct rq *rq, u64 dsq_id, struct task_struct *p,
-+ u64 enq_flags)
++static void dispatch_to_local_dsq(struct rq *rq, struct scx_dispatch_q *dst_dsq,
++ struct task_struct *p, u64 enq_flags)
+{
+ struct rq *src_rq = task_rq(p);
-+ struct rq *dst_rq;
++ struct rq *dst_rq = container_of(dst_dsq, struct rq, scx.local_dsq);
+
+ /*
+ * We're synchronized against dequeue through DISPATCHING. As @p can't
+ * be dequeued, its task_rq and cpus_allowed are stable too.
++ *
++ * If dispatching to @rq that @p is already on, no lock dancing needed.
+ */
-+ if (dsq_id == SCX_DSQ_LOCAL) {
-+ dst_rq = rq;
-+ } else if ((dsq_id & SCX_DSQ_LOCAL_ON) == SCX_DSQ_LOCAL_ON) {
-+ s32 cpu = dsq_id & SCX_DSQ_LOCAL_CPU_MASK;
-+
-+ if (!ops_cpu_valid(cpu, "in SCX_DSQ_LOCAL_ON dispatch verdict"))
-+ return DTL_INVALID;
-+ dst_rq = cpu_rq(cpu);
-+ } else {
-+ return DTL_NOT_LOCAL;
-+ }
-+
-+ /* if dispatching to @rq that @p is already on, no lock dancing needed */
+ if (rq == src_rq && rq == dst_rq) {
-+ dispatch_enqueue(&dst_rq->scx.local_dsq, p,
-+ enq_flags | SCX_ENQ_CLEAR_OPSS);
-+ return DTL_DISPATCHED;
++ dispatch_enqueue(dst_dsq, p, enq_flags | SCX_ENQ_CLEAR_OPSS);
++ return;
+ }
+
+#ifdef CONFIG_SMP
-+ if (cpumask_test_cpu(cpu_of(dst_rq), p->cpus_ptr)) {
-+ struct rq *locked_dst_rq = dst_rq;
-+ bool dsp;
++ if (unlikely(!task_can_run_on_remote_rq(p, dst_rq, true))) {
++ dispatch_enqueue(find_global_dsq(p), p,
++ enq_flags | SCX_ENQ_CLEAR_OPSS);
++ return;
++ }
+
-+ /*
-+ * @p is on a possibly remote @src_rq which we need to lock to
-+ * move the task. If dequeue is in progress, it'd be locking
-+ * @src_rq and waiting on DISPATCHING, so we can't grab @src_rq
-+ * lock while holding DISPATCHING.
-+ *
-+ * As DISPATCHING guarantees that @p is wholly ours, we can
-+ * pretend that we're moving from a DSQ and use the same
-+ * mechanism - mark the task under transfer with holding_cpu,
-+ * release DISPATCHING and then follow the same protocol.
-+ */
-+ p->scx.holding_cpu = raw_smp_processor_id();
++ /*
++ * @p is on a possibly remote @src_rq which we need to lock to move the
++ * task. If dequeue is in progress, it'd be locking @src_rq and waiting
++ * on DISPATCHING, so we can't grab @src_rq lock while holding
++ * DISPATCHING.
++ *
++ * As DISPATCHING guarantees that @p is wholly ours, we can pretend that
++ * we're moving from a DSQ and use the same mechanism - mark the task
++ * under transfer with holding_cpu, release DISPATCHING and then follow
++ * the same protocol. See unlink_dsq_and_lock_src_rq().
++ */
++ p->scx.holding_cpu = raw_smp_processor_id();
+
-+ /* store_release ensures that dequeue sees the above */
-+ atomic_long_set_release(&p->scx.ops_state, SCX_OPSS_NONE);
++ /* store_release ensures that dequeue sees the above */
++ atomic_long_set_release(&p->scx.ops_state, SCX_OPSS_NONE);
+
-+ dispatch_to_local_dsq_lock(rq, src_rq, locked_dst_rq);
++ /* switch to @src_rq lock */
++ if (rq != src_rq) {
++ raw_spin_rq_unlock(rq);
++ raw_spin_rq_lock(src_rq);
++ }
+
++ /* task_rq couldn't have changed if we're still the holding cpu */
++ if (likely(p->scx.holding_cpu == raw_smp_processor_id()) &&
++ !WARN_ON_ONCE(src_rq != task_rq(p))) {
+ /*
-+ * We don't require the BPF scheduler to avoid dispatching to
-+ * offline CPUs mostly for convenience but also because CPUs can
-+ * go offline between scx_bpf_dispatch() calls and here. If @p
-+ * is destined to an offline CPU, queue it on its current CPU
-+ * instead, which should always be safe. As this is an allowed
-+ * behavior, don't trigger an ops error.
++ * If @p is staying on the same rq, there's no need to go
++ * through the full deactivate/activate cycle. Optimize by
++ * abbreviating move_remote_task_to_local_dsq().
+ */
-+ if (!scx_rq_online(dst_rq))
-+ dst_rq = src_rq;
-+
+ if (src_rq == dst_rq) {
-+ /*
-+ * As @p is staying on the same rq, there's no need to
-+ * go through the full deactivate/activate cycle.
-+ * Optimize by abbreviating the operations in
-+ * move_task_to_local_dsq().
-+ */
-+ dsp = p->scx.holding_cpu == raw_smp_processor_id();
-+ if (likely(dsp)) {
-+ p->scx.holding_cpu = -1;
-+ dispatch_enqueue(&dst_rq->scx.local_dsq, p,
-+ enq_flags);
-+ }
++ p->scx.holding_cpu = -1;
++ dispatch_enqueue(&dst_rq->scx.local_dsq, p, enq_flags);
+ } else {
-+ dsp = move_task_to_local_dsq(dst_rq, p, enq_flags);
++ move_remote_task_to_local_dsq(p, enq_flags,
++ src_rq, dst_rq);
+ }
+
+ /* if the destination CPU is idle, wake it up */
-+ if (dsp && sched_class_above(p->sched_class,
-+ dst_rq->curr->sched_class))
++ if (sched_class_above(p->sched_class, dst_rq->curr->sched_class))
+ resched_curr(dst_rq);
++ }
+
-+ dispatch_to_local_dsq_unlock(rq, src_rq, locked_dst_rq);
-+
-+ return dsp ? DTL_DISPATCHED : DTL_LOST;
++ /* switch back to @rq lock */
++ if (rq != dst_rq) {
++ raw_spin_rq_unlock(dst_rq);
++ raw_spin_rq_lock(rq);
+ }
++#else /* CONFIG_SMP */
++ BUG(); /* control can not reach here on UP */
+#endif /* CONFIG_SMP */
-+
-+ scx_ops_error("SCX_DSQ_LOCAL[_ON] verdict target cpu %d not allowed for %s[%d]",
-+ cpu_of(dst_rq), p->comm, p->pid);
-+ return DTL_INVALID;
+}
+
+/**
@@ -3971,20 +4480,12 @@ index 000000000000..0dac88d0e578
+
+ BUG_ON(!(p->scx.flags & SCX_TASK_QUEUED));
+
-+ switch (dispatch_to_local_dsq(rq, dsq_id, p, enq_flags)) {
-+ case DTL_DISPATCHED:
-+ break;
-+ case DTL_LOST:
-+ break;
-+ case DTL_INVALID:
-+ dsq_id = SCX_DSQ_GLOBAL;
-+ fallthrough;
-+ case DTL_NOT_LOCAL:
-+ dsq = find_dsq_for_dispatch(cpu_rq(raw_smp_processor_id()),
-+ dsq_id, p);
++ dsq = find_dsq_for_dispatch(this_rq(), dsq_id, p);
++
++ if (dsq->id == SCX_DSQ_LOCAL)
++ dispatch_to_local_dsq(rq, dsq, p, enq_flags);
++ else
+ dispatch_enqueue(dsq, p, enq_flags | SCX_ENQ_CLEAR_OPSS);
-+ break;
-+ }
+}
+
+static void flush_dispatch_buf(struct rq *rq)
@@ -4046,7 +4547,7 @@ index 000000000000..0dac88d0e578
+ * same conditions later and pick @rq->curr accordingly.
+ */
+ if ((prev->scx.flags & SCX_TASK_QUEUED) &&
-+ prev->scx.slice && !scx_ops_bypassing()) {
++ prev->scx.slice && !scx_rq_bypassing(rq)) {
+ if (local)
+ prev->scx.flags |= SCX_TASK_BAL_KEEP;
+ goto has_tasks;
@@ -4057,10 +4558,10 @@ index 000000000000..0dac88d0e578
+ if (rq->scx.local_dsq.nr)
+ goto has_tasks;
+
-+ if (consume_dispatch_q(rq, &scx_dsq_global))
++ if (consume_global_dsq(rq))
+ goto has_tasks;
+
-+ if (!SCX_HAS_OP(dispatch) || scx_ops_bypassing() || !scx_rq_online(rq))
++ if (!SCX_HAS_OP(dispatch) || scx_rq_bypassing(rq) || !scx_rq_online(rq))
+ goto out;
+
+ dspc->rq = rq;
@@ -4082,7 +4583,7 @@ index 000000000000..0dac88d0e578
+
+ if (rq->scx.local_dsq.nr)
+ goto has_tasks;
-+ if (consume_dispatch_q(rq, &scx_dsq_global))
++ if (consume_global_dsq(rq))
+ goto has_tasks;
+
+ /*
@@ -4109,7 +4610,6 @@ index 000000000000..0dac88d0e578
+ return has_tasks;
+}
+
-+#ifdef CONFIG_SMP
+static int balance_scx(struct rq *rq, struct task_struct *prev,
+ struct rq_flags *rf)
+{
@@ -4143,7 +4643,31 @@ index 000000000000..0dac88d0e578
+
+ return ret;
+}
-+#endif
++
++static void process_ddsp_deferred_locals(struct rq *rq)
++{
++ struct task_struct *p;
++
++ lockdep_assert_rq_held(rq);
++
++ /*
++ * Now that @rq can be unlocked, execute the deferred enqueueing of
++ * tasks directly dispatched to the local DSQs of other CPUs. See
++ * direct_dispatch(). Keep popping from the head instead of using
++ * list_for_each_entry_safe() as dispatch_local_dsq() may unlock @rq
++ * temporarily.
++ */
++ while ((p = list_first_entry_or_null(&rq->scx.ddsp_deferred_locals,
++ struct task_struct, scx.dsq_list.node))) {
++ struct scx_dispatch_q *dsq;
++
++ list_del_init(&p->scx.dsq_list.node);
++
++ dsq = find_dsq_for_dispatch(rq, p->scx.ddsp_dsq_id, p);
++ if (!WARN_ON_ONCE(dsq->id != SCX_DSQ_LOCAL))
++ dispatch_to_local_dsq(rq, dsq, p, p->scx.ddsp_enq_flags);
++ }
++}
+
+static void set_next_task_scx(struct rq *rq, struct task_struct *p, bool first)
+{
@@ -4187,62 +4711,71 @@ index 000000000000..0dac88d0e578
+ }
+}
+
-+static void process_ddsp_deferred_locals(struct rq *rq)
++static enum scx_cpu_preempt_reason
++preempt_reason_from_class(const struct sched_class *class)
++{
++#ifdef CONFIG_SMP
++ if (class == &stop_sched_class)
++ return SCX_CPU_PREEMPT_STOP;
++#endif
++ if (class == &dl_sched_class)
++ return SCX_CPU_PREEMPT_DL;
++ if (class == &rt_sched_class)
++ return SCX_CPU_PREEMPT_RT;
++ return SCX_CPU_PREEMPT_UNKNOWN;
++}
++
++static void switch_class_scx(struct rq *rq, struct task_struct *next)
+{
-+ struct task_struct *p, *tmp;
++ const struct sched_class *next_class = next->sched_class;
+
-+ lockdep_assert_rq_held(rq);
++ if (!scx_enabled())
++ return;
++#ifdef CONFIG_SMP
++ /*
++ * Pairs with the smp_load_acquire() issued by a CPU in
++ * kick_cpus_irq_workfn() who is waiting for this CPU to perform a
++ * resched.
++ */
++ smp_store_release(&rq->scx.pnt_seq, rq->scx.pnt_seq + 1);
++#endif
++ if (!static_branch_unlikely(&scx_ops_cpu_preempt))
++ return;
+
+ /*
-+ * Now that @rq can be unlocked, execute the deferred enqueueing of
-+ * tasks directly dispatched to the local DSQs of other CPUs. See
-+ * direct_dispatch().
++ * The callback is conceptually meant to convey that the CPU is no
++ * longer under the control of SCX. Therefore, don't invoke the callback
++ * if the next class is below SCX (in which case the BPF scheduler has
++ * actively decided not to schedule any tasks on the CPU).
+ */
-+ list_for_each_entry_safe(p, tmp, &rq->scx.ddsp_deferred_locals,
-+ scx.dsq_list.node) {
-+ s32 ret;
++ if (sched_class_above(&ext_sched_class, next_class))
++ return;
+
-+ list_del_init(&p->scx.dsq_list.node);
++ /*
++ * At this point we know that SCX was preempted by a higher priority
++ * sched_class, so invoke the ->cpu_release() callback if we have not
++ * done so already. We only send the callback once between SCX being
++ * preempted, and it regaining control of the CPU.
++ *
++ * ->cpu_release() complements ->cpu_acquire(), which is emitted the
++ * next time that balance_scx() is invoked.
++ */
++ if (!rq->scx.cpu_released) {
++ if (SCX_HAS_OP(cpu_release)) {
++ struct scx_cpu_release_args args = {
++ .reason = preempt_reason_from_class(next_class),
++ .task = next,
++ };
+
-+ ret = dispatch_to_local_dsq(rq, p->scx.ddsp_dsq_id, p,
-+ p->scx.ddsp_enq_flags);
-+ WARN_ON_ONCE(ret == DTL_NOT_LOCAL);
++ SCX_CALL_OP(SCX_KF_CPU_RELEASE,
++ cpu_release, cpu_of(rq), &args);
++ }
++ rq->scx.cpu_released = true;
+ }
+}
+
+static void put_prev_task_scx(struct rq *rq, struct task_struct *p)
+{
-+#ifndef CONFIG_SMP
-+ /*
-+ * UP workaround.
-+ *
-+ * Because SCX may transfer tasks across CPUs during dispatch, dispatch
-+ * is performed from its balance operation which isn't called in UP.
-+ * Let's work around by calling it from the operations which come right
-+ * after.
-+ *
-+ * 1. If the prev task is on SCX, pick_next_task() calls
-+ * .put_prev_task() right after. As .put_prev_task() is also called
-+ * from other places, we need to distinguish the calls which can be
-+ * done by looking at the previous task's state - if still queued or
-+ * dequeued with %SCX_DEQ_SLEEP, the caller must be pick_next_task().
-+ * This case is handled here.
-+ *
-+ * 2. If the prev task is not on SCX, the first following call into SCX
-+ * will be .pick_next_task(), which is covered by calling
-+ * balance_scx() from pick_next_task_scx().
-+ *
-+ * Note that we can't merge the first case into the second as
-+ * balance_scx() must be called before the previous SCX task goes
-+ * through put_prev_task_scx().
-+ *
-+ * @rq is pinned and can't be unlocked. As UP doesn't transfer tasks
-+ * around, balance_one() doesn't need to.
-+ */
-+ if (p->scx.flags & (SCX_TASK_QUEUED | SCX_TASK_DEQD_FOR_SLEEP))
-+ balance_one(rq, p, true);
-+#endif
-+
+ update_curr_scx(rq);
+
+ /* see dequeue_task_scx() on why we skip when !QUEUED */
@@ -4269,7 +4802,7 @@ index 000000000000..0dac88d0e578
+ * scheduler class or core-sched forcing a different task. Leave
+ * it at the head of the local DSQ.
+ */
-+ if (p->scx.slice && !scx_ops_bypassing()) {
++ if (p->scx.slice && !scx_rq_bypassing(rq)) {
+ dispatch_enqueue(&rq->scx.local_dsq, p, SCX_ENQ_HEAD);
+ return;
+ }
@@ -4300,12 +4833,6 @@ index 000000000000..0dac88d0e578
+{
+ struct task_struct *p;
+
-+#ifndef CONFIG_SMP
-+ /* UP workaround - see the comment at the head of put_prev_task_scx() */
-+ if (unlikely(rq->curr->sched_class != &ext_sched_class))
-+ balance_one(rq, rq->curr, true);
-+#endif
-+
+ p = first_local_task(rq);
+ if (!p)
+ return NULL;
@@ -4313,7 +4840,7 @@ index 000000000000..0dac88d0e578
+ set_next_task_scx(rq, p, true);
+
+ if (unlikely(!p->scx.slice)) {
-+ if (!scx_ops_bypassing() && !scx_warned_zero_slice) {
++ if (!scx_rq_bypassing(rq) && !scx_warned_zero_slice) {
+ printk_deferred(KERN_WARNING "sched_ext: %s[%d] has zero slice in pick_next_task_scx()\n",
+ p->comm, p->pid);
+ scx_warned_zero_slice = true;
@@ -4350,7 +4877,7 @@ index 000000000000..0dac88d0e578
+ * calling ops.core_sched_before(). Accesses are controlled by the
+ * verifier.
+ */
-+ if (SCX_HAS_OP(core_sched_before) && !scx_ops_bypassing())
++ if (SCX_HAS_OP(core_sched_before) && !scx_rq_bypassing(task_rq(a)))
+ return SCX_CALL_OP_2TASKS_RET(SCX_KF_REST, core_sched_before,
+ (struct task_struct *)a,
+ (struct task_struct *)b);
@@ -4402,69 +4929,6 @@ index 000000000000..0dac88d0e578
+}
+#endif /* CONFIG_SCHED_CORE */
+
-+static enum scx_cpu_preempt_reason
-+preempt_reason_from_class(const struct sched_class *class)
-+{
-+#ifdef CONFIG_SMP
-+ if (class == &stop_sched_class)
-+ return SCX_CPU_PREEMPT_STOP;
-+#endif
-+ if (class == &dl_sched_class)
-+ return SCX_CPU_PREEMPT_DL;
-+ if (class == &rt_sched_class)
-+ return SCX_CPU_PREEMPT_RT;
-+ return SCX_CPU_PREEMPT_UNKNOWN;
-+}
-+
-+static void switch_class_scx(struct rq *rq, struct task_struct *next)
-+{
-+ const struct sched_class *next_class = next->sched_class;
-+
-+ if (!scx_enabled())
-+ return;
-+#ifdef CONFIG_SMP
-+ /*
-+ * Pairs with the smp_load_acquire() issued by a CPU in
-+ * kick_cpus_irq_workfn() who is waiting for this CPU to perform a
-+ * resched.
-+ */
-+ smp_store_release(&rq->scx.pnt_seq, rq->scx.pnt_seq + 1);
-+#endif
-+ if (!static_branch_unlikely(&scx_ops_cpu_preempt))
-+ return;
-+
-+ /*
-+ * The callback is conceptually meant to convey that the CPU is no
-+ * longer under the control of SCX. Therefore, don't invoke the callback
-+ * if the next class is below SCX (in which case the BPF scheduler has
-+ * actively decided not to schedule any tasks on the CPU).
-+ */
-+ if (sched_class_above(&ext_sched_class, next_class))
-+ return;
-+
-+ /*
-+ * At this point we know that SCX was preempted by a higher priority
-+ * sched_class, so invoke the ->cpu_release() callback if we have not
-+ * done so already. We only send the callback once between SCX being
-+ * preempted, and it regaining control of the CPU.
-+ *
-+ * ->cpu_release() complements ->cpu_acquire(), which is emitted the
-+ * next time that balance_scx() is invoked.
-+ */
-+ if (!rq->scx.cpu_released) {
-+ if (SCX_HAS_OP(cpu_release)) {
-+ struct scx_cpu_release_args args = {
-+ .reason = preempt_reason_from_class(next_class),
-+ .task = next,
-+ };
-+
-+ SCX_CALL_OP(SCX_KF_CPU_RELEASE,
-+ cpu_release, cpu_of(rq), &args);
-+ }
-+ rq->scx.cpu_released = true;
-+ }
-+}
-+
+#ifdef CONFIG_SMP
+
+static bool test_and_clear_cpu_idle(int cpu)
@@ -4815,7 +5279,7 @@ index 000000000000..0dac88d0e578
+ * While disabling, always resched and refresh core-sched timestamp as
+ * we can't trust the slice management or ops.core_sched_before().
+ */
-+ if (scx_ops_bypassing()) {
++ if (scx_rq_bypassing(rq)) {
+ curr->scx.slice = 0;
+ touch_core_sched(rq, curr);
+ } else if (SCX_HAS_OP(tick)) {
@@ -4826,6 +5290,28 @@ index 000000000000..0dac88d0e578
+ resched_curr(rq);
+}
+
++#ifdef CONFIG_EXT_GROUP_SCHED
++static struct cgroup *tg_cgrp(struct task_group *tg)
++{
++ /*
++ * If CGROUP_SCHED is disabled, @tg is NULL. If @tg is an autogroup,
++ * @tg->css.cgroup is NULL. In both cases, @tg can be treated as the
++ * root cgroup.
++ */
++ if (tg && tg->css.cgroup)
++ return tg->css.cgroup;
++ else
++ return &cgrp_dfl_root.cgrp;
++}
++
++#define SCX_INIT_TASK_ARGS_CGROUP(tg) .cgroup = tg_cgrp(tg),
++
++#else /* CONFIG_EXT_GROUP_SCHED */
++
++#define SCX_INIT_TASK_ARGS_CGROUP(tg)
++
++#endif /* CONFIG_EXT_GROUP_SCHED */
++
+static enum scx_task_state scx_get_task_state(const struct task_struct *p)
+{
+ return (p->scx.flags & SCX_TASK_STATE_MASK) >> SCX_TASK_STATE_SHIFT;
@@ -4870,6 +5356,7 @@ index 000000000000..0dac88d0e578
+
+ if (SCX_HAS_OP(init_task)) {
+ struct scx_init_task_args args = {
++ SCX_INIT_TASK_ARGS_CGROUP(tg)
+ .fork = fork,
+ };
+
@@ -4883,24 +5370,29 @@ index 000000000000..0dac88d0e578
+ scx_set_task_state(p, SCX_TASK_INIT);
+
+ if (p->scx.disallow) {
-+ struct rq *rq;
-+ struct rq_flags rf;
++ if (!fork) {
++ struct rq *rq;
++ struct rq_flags rf;
+
-+ rq = task_rq_lock(p, &rf);
++ rq = task_rq_lock(p, &rf);
+
-+ /*
-+ * We're either in fork or load path and @p->policy will be
-+ * applied right after. Reverting @p->policy here and rejecting
-+ * %SCHED_EXT transitions from scx_check_setscheduler()
-+ * guarantees that if ops.init_task() sets @p->disallow, @p can
-+ * never be in SCX.
-+ */
-+ if (p->policy == SCHED_EXT) {
-+ p->policy = SCHED_NORMAL;
-+ atomic_long_inc(&scx_nr_rejected);
-+ }
++ /*
++ * We're in the load path and @p->policy will be applied
++ * right after. Reverting @p->policy here and rejecting
++ * %SCHED_EXT transitions from scx_check_setscheduler()
++ * guarantees that if ops.init_task() sets @p->disallow,
++ * @p can never be in SCX.
++ */
++ if (p->policy == SCHED_EXT) {
++ p->policy = SCHED_NORMAL;
++ atomic_long_inc(&scx_nr_rejected);
++ }
+
-+ task_rq_unlock(rq, p, &rf);
++ task_rq_unlock(rq, p, &rf);
++ } else if (p->policy == SCHED_EXT) {
++ scx_ops_error("ops.init_task() set task->scx.disallow for %s[%d] during fork",
++ p->comm, p->pid);
++ }
+ }
+
+ p->scx.flags |= SCX_TASK_RESET_RUNNABLE_AT;
@@ -4929,7 +5421,7 @@ index 000000000000..0dac88d0e578
+ scx_set_task_state(p, SCX_TASK_ENABLED);
+
+ if (SCX_HAS_OP(set_weight))
-+ SCX_CALL_OP(SCX_KF_REST, set_weight, p, p->scx.weight);
++ SCX_CALL_OP_TASK(SCX_KF_REST, set_weight, p, p->scx.weight);
+}
+
+static void scx_ops_disable_task(struct task_struct *p)
@@ -5004,7 +5496,7 @@ index 000000000000..0dac88d0e578
+{
+ percpu_rwsem_assert_held(&scx_fork_rwsem);
+
-+ if (scx_enabled())
++ if (scx_ops_init_task_enabled)
+ return scx_ops_init_task(p, task_group(p), true);
+ else
+ return 0;
@@ -5012,7 +5504,7 @@ index 000000000000..0dac88d0e578
+
+void scx_post_fork(struct task_struct *p)
+{
-+ if (scx_enabled()) {
++ if (scx_ops_init_task_enabled) {
+ scx_set_task_state(p, SCX_TASK_READY);
+
+ /*
@@ -5126,7 +5618,7 @@ index 000000000000..0dac88d0e578
+{
+ struct task_struct *p = rq->curr;
+
-+ if (scx_ops_bypassing())
++ if (scx_rq_bypassing(rq))
+ return false;
+
+ if (p->sched_class != &ext_sched_class)
@@ -5141,6 +5633,222 @@ index 000000000000..0dac88d0e578
+}
+#endif
+
++#ifdef CONFIG_EXT_GROUP_SCHED
++
++DEFINE_STATIC_PERCPU_RWSEM(scx_cgroup_rwsem);
++static bool scx_cgroup_enabled;
++static bool cgroup_warned_missing_weight;
++static bool cgroup_warned_missing_idle;
++
++static void scx_cgroup_warn_missing_weight(struct task_group *tg)
++{
++ if (scx_ops_enable_state() == SCX_OPS_DISABLED ||
++ cgroup_warned_missing_weight)
++ return;
++
++ if ((scx_ops.flags & SCX_OPS_HAS_CGROUP_WEIGHT) || !tg->css.parent)
++ return;
++
++ pr_warn("sched_ext: \"%s\" does not implement cgroup cpu.weight\n",
++ scx_ops.name);
++ cgroup_warned_missing_weight = true;
++}
++
++static void scx_cgroup_warn_missing_idle(struct task_group *tg)
++{
++ if (!scx_cgroup_enabled || cgroup_warned_missing_idle)
++ return;
++
++ if (!tg->idle)
++ return;
++
++ pr_warn("sched_ext: \"%s\" does not implement cgroup cpu.idle\n",
++ scx_ops.name);
++ cgroup_warned_missing_idle = true;
++}
++
++int scx_tg_online(struct task_group *tg)
++{
++ int ret = 0;
++
++ WARN_ON_ONCE(tg->scx_flags & (SCX_TG_ONLINE | SCX_TG_INITED));
++
++ percpu_down_read(&scx_cgroup_rwsem);
++
++ scx_cgroup_warn_missing_weight(tg);
++
++ if (scx_cgroup_enabled) {
++ if (SCX_HAS_OP(cgroup_init)) {
++ struct scx_cgroup_init_args args =
++ { .weight = tg->scx_weight };
++
++ ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, cgroup_init,
++ tg->css.cgroup, &args);
++ if (ret)
++ ret = ops_sanitize_err("cgroup_init", ret);
++ }
++ if (ret == 0)
++ tg->scx_flags |= SCX_TG_ONLINE | SCX_TG_INITED;
++ } else {
++ tg->scx_flags |= SCX_TG_ONLINE;
++ }
++
++ percpu_up_read(&scx_cgroup_rwsem);
++ return ret;
++}
++
++void scx_tg_offline(struct task_group *tg)
++{
++ WARN_ON_ONCE(!(tg->scx_flags & SCX_TG_ONLINE));
++
++ percpu_down_read(&scx_cgroup_rwsem);
++
++ if (SCX_HAS_OP(cgroup_exit) && (tg->scx_flags & SCX_TG_INITED))
++ SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_exit, tg->css.cgroup);
++ tg->scx_flags &= ~(SCX_TG_ONLINE | SCX_TG_INITED);
++
++ percpu_up_read(&scx_cgroup_rwsem);
++}
++
++int scx_cgroup_can_attach(struct cgroup_taskset *tset)
++{
++ struct cgroup_subsys_state *css;
++ struct task_struct *p;
++ int ret;
++
++ /* released in scx_finish/cancel_attach() */
++ percpu_down_read(&scx_cgroup_rwsem);
++
++ if (!scx_cgroup_enabled)
++ return 0;
++
++ cgroup_taskset_for_each(p, css, tset) {
++ struct cgroup *from = tg_cgrp(task_group(p));
++ struct cgroup *to = tg_cgrp(css_tg(css));
++
++ WARN_ON_ONCE(p->scx.cgrp_moving_from);
++
++ /*
++ * sched_move_task() omits identity migrations. Let's match the
++ * behavior so that ops.cgroup_prep_move() and ops.cgroup_move()
++ * always match one-to-one.
++ */
++ if (from == to)
++ continue;
++
++ if (SCX_HAS_OP(cgroup_prep_move)) {
++ ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, cgroup_prep_move,
++ p, from, css->cgroup);
++ if (ret)
++ goto err;
++ }
++
++ p->scx.cgrp_moving_from = from;
++ }
++
++ return 0;
++
++err:
++ cgroup_taskset_for_each(p, css, tset) {
++ if (SCX_HAS_OP(cgroup_cancel_move) && p->scx.cgrp_moving_from)
++ SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_cancel_move, p,
++ p->scx.cgrp_moving_from, css->cgroup);
++ p->scx.cgrp_moving_from = NULL;
++ }
++
++ percpu_up_read(&scx_cgroup_rwsem);
++ return ops_sanitize_err("cgroup_prep_move", ret);
++}
++
++void scx_move_task(struct task_struct *p)
++{
++ if (!scx_cgroup_enabled)
++ return;
++
++ /*
++ * We're called from sched_move_task() which handles both cgroup and
++ * autogroup moves. Ignore the latter.
++ *
++ * Also ignore exiting tasks, because in the exit path tasks transition
++ * from the autogroup to the root group, so task_group_is_autogroup()
++ * alone isn't able to catch exiting autogroup tasks. This is safe for
++ * cgroup_move(), because cgroup migrations never happen for PF_EXITING
++ * tasks.
++ */
++ if (task_group_is_autogroup(task_group(p)) || (p->flags & PF_EXITING))
++ return;
++
++ /*
++ * @p must have ops.cgroup_prep_move() called on it and thus
++ * cgrp_moving_from set.
++ */
++ if (SCX_HAS_OP(cgroup_move) && !WARN_ON_ONCE(!p->scx.cgrp_moving_from))
++ SCX_CALL_OP_TASK(SCX_KF_UNLOCKED, cgroup_move, p,
++ p->scx.cgrp_moving_from, tg_cgrp(task_group(p)));
++ p->scx.cgrp_moving_from = NULL;
++}
++
++void scx_cgroup_finish_attach(void)
++{
++ percpu_up_read(&scx_cgroup_rwsem);
++}
++
++void scx_cgroup_cancel_attach(struct cgroup_taskset *tset)
++{
++ struct cgroup_subsys_state *css;
++ struct task_struct *p;
++
++ if (!scx_cgroup_enabled)
++ goto out_unlock;
++
++ cgroup_taskset_for_each(p, css, tset) {
++ if (SCX_HAS_OP(cgroup_cancel_move) && p->scx.cgrp_moving_from)
++ SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_cancel_move, p,
++ p->scx.cgrp_moving_from, css->cgroup);
++ p->scx.cgrp_moving_from = NULL;
++ }
++out_unlock:
++ percpu_up_read(&scx_cgroup_rwsem);
++}
++
++void scx_group_set_weight(struct task_group *tg, unsigned long weight)
++{
++ percpu_down_read(&scx_cgroup_rwsem);
++
++ if (scx_cgroup_enabled && tg->scx_weight != weight) {
++ if (SCX_HAS_OP(cgroup_set_weight))
++ SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_set_weight,
++ tg_cgrp(tg), weight);
++ tg->scx_weight = weight;
++ }
++
++ percpu_up_read(&scx_cgroup_rwsem);
++}
++
++void scx_group_set_idle(struct task_group *tg, bool idle)
++{
++ percpu_down_read(&scx_cgroup_rwsem);
++ scx_cgroup_warn_missing_idle(tg);
++ percpu_up_read(&scx_cgroup_rwsem);
++}
++
++static void scx_cgroup_lock(void)
++{
++ percpu_down_write(&scx_cgroup_rwsem);
++}
++
++static void scx_cgroup_unlock(void)
++{
++ percpu_up_write(&scx_cgroup_rwsem);
++}
++
++#else /* CONFIG_EXT_GROUP_SCHED */
++
++static inline void scx_cgroup_lock(void) {}
++static inline void scx_cgroup_unlock(void) {}
++
++#endif /* CONFIG_EXT_GROUP_SCHED */
++
+/*
+ * Omitted operations:
+ *
@@ -5161,6 +5869,7 @@ index 000000000000..0dac88d0e578
+
+ .wakeup_preempt = wakeup_preempt_scx,
+
++ .balance = balance_scx,
+ .pick_next_task = pick_next_task_scx,
+
+ .put_prev_task = put_prev_task_scx,
@@ -5169,7 +5878,6 @@ index 000000000000..0dac88d0e578
+ .switch_class = switch_class_scx,
+
+#ifdef CONFIG_SMP
-+ .balance = balance_scx,
+ .select_task_rq = select_task_rq_scx,
+ .task_woken = task_woken_scx,
+ .set_cpus_allowed = set_cpus_allowed_scx,
@@ -5278,6 +5986,102 @@ index 000000000000..0dac88d0e578
+ rcu_read_unlock();
+}
+
++#ifdef CONFIG_EXT_GROUP_SCHED
++static void scx_cgroup_exit(void)
++{
++ struct cgroup_subsys_state *css;
++
++ percpu_rwsem_assert_held(&scx_cgroup_rwsem);
++
++ WARN_ON_ONCE(!scx_cgroup_enabled);
++ scx_cgroup_enabled = false;
++
++ /*
++ * scx_tg_on/offline() are excluded through scx_cgroup_rwsem. If we walk
++ * cgroups and exit all the inited ones, all online cgroups are exited.
++ */
++ rcu_read_lock();
++ css_for_each_descendant_post(css, &root_task_group.css) {
++ struct task_group *tg = css_tg(css);
++
++ if (!(tg->scx_flags & SCX_TG_INITED))
++ continue;
++ tg->scx_flags &= ~SCX_TG_INITED;
++
++ if (!scx_ops.cgroup_exit)
++ continue;
++
++ if (WARN_ON_ONCE(!css_tryget(css)))
++ continue;
++ rcu_read_unlock();
++
++ SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_exit, css->cgroup);
++
++ rcu_read_lock();
++ css_put(css);
++ }
++ rcu_read_unlock();
++}
++
++static int scx_cgroup_init(void)
++{
++ struct cgroup_subsys_state *css;
++ int ret;
++
++ percpu_rwsem_assert_held(&scx_cgroup_rwsem);
++
++ cgroup_warned_missing_weight = false;
++ cgroup_warned_missing_idle = false;
++
++ /*
++ * scx_tg_on/offline() are excluded thorugh scx_cgroup_rwsem. If we walk
++ * cgroups and init, all online cgroups are initialized.
++ */
++ rcu_read_lock();
++ css_for_each_descendant_pre(css, &root_task_group.css) {
++ struct task_group *tg = css_tg(css);
++ struct scx_cgroup_init_args args = { .weight = tg->scx_weight };
++
++ scx_cgroup_warn_missing_weight(tg);
++ scx_cgroup_warn_missing_idle(tg);
++
++ if ((tg->scx_flags &
++ (SCX_TG_ONLINE | SCX_TG_INITED)) != SCX_TG_ONLINE)
++ continue;
++
++ if (!scx_ops.cgroup_init) {
++ tg->scx_flags |= SCX_TG_INITED;
++ continue;
++ }
++
++ if (WARN_ON_ONCE(!css_tryget(css)))
++ continue;
++ rcu_read_unlock();
++
++ ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, cgroup_init,
++ css->cgroup, &args);
++ if (ret) {
++ css_put(css);
++ return ret;
++ }
++ tg->scx_flags |= SCX_TG_INITED;
++
++ rcu_read_lock();
++ css_put(css);
++ }
++ rcu_read_unlock();
++
++ WARN_ON_ONCE(scx_cgroup_enabled);
++ scx_cgroup_enabled = true;
++
++ return 0;
++}
++
++#else
++static void scx_cgroup_exit(void) {}
++static int scx_cgroup_init(void) { return 0; }
++#endif
++
+
+/********************************************************************************
+ * Sysfs interface and ops enable/disable.
@@ -5318,11 +6122,19 @@ index 000000000000..0dac88d0e578
+}
+SCX_ATTR(hotplug_seq);
+
++static ssize_t scx_attr_enable_seq_show(struct kobject *kobj,
++ struct kobj_attribute *ka, char *buf)
++{
++ return sysfs_emit(buf, "%ld\n", atomic_long_read(&scx_enable_seq));
++}
++SCX_ATTR(enable_seq);
++
+static struct attribute *scx_global_attrs[] = {
+ &scx_attr_state.attr,
+ &scx_attr_switch_all.attr,
+ &scx_attr_nr_rejected.attr,
+ &scx_attr_hotplug_seq.attr,
++ &scx_attr_enable_seq.attr,
+ NULL,
+};
+
@@ -5421,16 +6233,8 @@ index 000000000000..0dac88d0e578
+ }
+
+ /*
-+ * We need to guarantee that no tasks are on the BPF scheduler while
-+ * bypassing. Either we see enabled or the enable path sees the
-+ * increased bypass_depth before moving tasks to SCX.
-+ */
-+ if (!scx_enabled())
-+ return;
-+
-+ /*
+ * No task property is changing. We just need to make sure all currently
-+ * queued tasks are re-queued according to the new scx_ops_bypassing()
++ * queued tasks are re-queued according to the new scx_rq_bypassing()
+ * state. As an optimization, walk each rq's runnable_list instead of
+ * the scx_tasks list.
+ *
@@ -5444,6 +6248,24 @@ index 000000000000..0dac88d0e578
+
+ rq_lock_irqsave(rq, &rf);
+
++ if (bypass) {
++ WARN_ON_ONCE(rq->scx.flags & SCX_RQ_BYPASSING);
++ rq->scx.flags |= SCX_RQ_BYPASSING;
++ } else {
++ WARN_ON_ONCE(!(rq->scx.flags & SCX_RQ_BYPASSING));
++ rq->scx.flags &= ~SCX_RQ_BYPASSING;
++ }
++
++ /*
++ * We need to guarantee that no tasks are on the BPF scheduler
++ * while bypassing. Either we see enabled or the enable path
++ * sees scx_rq_bypassing() before moving tasks to SCX.
++ */
++ if (!scx_enabled()) {
++ rq_unlock_irqrestore(rq, &rf);
++ continue;
++ }
++
+ /*
+ * The use of list_for_each_entry_safe_reverse() is required
+ * because each task is going to be removed from and added back
@@ -5499,11 +6321,11 @@ index 000000000000..0dac88d0e578
+{
+ switch (kind) {
+ case SCX_EXIT_UNREG:
-+ return "Scheduler unregistered from user space";
++ return "unregistered from user space";
+ case SCX_EXIT_UNREG_BPF:
-+ return "Scheduler unregistered from BPF";
++ return "unregistered from BPF";
+ case SCX_EXIT_UNREG_KERN:
-+ return "Scheduler unregistered from the main kernel";
++ return "unregistered from the main kernel";
+ case SCX_EXIT_SYSRQ:
+ return "disabled by sysrq-S";
+ case SCX_EXIT_ERROR:
@@ -5569,66 +6391,64 @@ index 000000000000..0dac88d0e578
+ WRITE_ONCE(scx_switching_all, false);
+
+ /*
-+ * Avoid racing against fork. See scx_ops_enable() for explanation on
-+ * the locking order.
++ * Shut down cgroup support before tasks so that the cgroup attach path
++ * doesn't race against scx_ops_exit_task().
++ */
++ scx_cgroup_lock();
++ scx_cgroup_exit();
++ scx_cgroup_unlock();
++
++ /*
++ * The BPF scheduler is going away. All tasks including %TASK_DEAD ones
++ * must be switched out and exited synchronously.
+ */
+ percpu_down_write(&scx_fork_rwsem);
-+ cpus_read_lock();
++
++ scx_ops_init_task_enabled = false;
+
+ spin_lock_irq(&scx_tasks_lock);
+ scx_task_iter_init(&sti);
-+ /*
-+ * Invoke scx_ops_exit_task() on all non-idle tasks, including
-+ * TASK_DEAD tasks. Because dead tasks may have a nonzero refcount,
-+ * we may not have invoked sched_ext_free() on them by the time a
-+ * scheduler is disabled. We must therefore exit the task here, or we'd
-+ * fail to invoke ops.exit_task(), as the scheduler will have been
-+ * unloaded by the time the task is subsequently exited on the
-+ * sched_ext_free() path.
-+ */
-+ while ((p = scx_task_iter_next_locked(&sti, true))) {
++ while ((p = scx_task_iter_next_locked(&sti))) {
+ const struct sched_class *old_class = p->sched_class;
+ struct sched_enq_and_set_ctx ctx;
+
-+ if (READ_ONCE(p->__state) != TASK_DEAD) {
-+ sched_deq_and_put_task(p, DEQUEUE_SAVE | DEQUEUE_MOVE,
-+ &ctx);
++ sched_deq_and_put_task(p, DEQUEUE_SAVE | DEQUEUE_MOVE, &ctx);
+
-+ p->scx.slice = min_t(u64, p->scx.slice, SCX_SLICE_DFL);
-+ __setscheduler_prio(p, p->prio);
-+ check_class_changing(task_rq(p), p, old_class);
++ p->scx.slice = min_t(u64, p->scx.slice, SCX_SLICE_DFL);
++ __setscheduler_prio(p, p->prio);
++ check_class_changing(task_rq(p), p, old_class);
+
-+ sched_enq_and_set_task(&ctx);
++ sched_enq_and_set_task(&ctx);
+
-+ check_class_changed(task_rq(p), p, old_class, p->prio);
-+ }
++ check_class_changed(task_rq(p), p, old_class, p->prio);
+ scx_ops_exit_task(p);
+ }
+ scx_task_iter_exit(&sti);
+ spin_unlock_irq(&scx_tasks_lock);
++ percpu_up_write(&scx_fork_rwsem);
+
+ /* no task is on scx, turn off all the switches and flush in-progress calls */
-+ static_branch_disable_cpuslocked(&__scx_ops_enabled);
++ static_branch_disable(&__scx_ops_enabled);
+ for (i = SCX_OPI_BEGIN; i < SCX_OPI_END; i++)
-+ static_branch_disable_cpuslocked(&scx_has_op[i]);
-+ static_branch_disable_cpuslocked(&scx_ops_enq_last);
-+ static_branch_disable_cpuslocked(&scx_ops_enq_exiting);
-+ static_branch_disable_cpuslocked(&scx_ops_cpu_preempt);
-+ static_branch_disable_cpuslocked(&scx_builtin_idle_enabled);
++ static_branch_disable(&scx_has_op[i]);
++ static_branch_disable(&scx_ops_enq_last);
++ static_branch_disable(&scx_ops_enq_exiting);
++ static_branch_disable(&scx_ops_cpu_preempt);
++ static_branch_disable(&scx_builtin_idle_enabled);
+ synchronize_rcu();
+
-+ cpus_read_unlock();
-+ percpu_up_write(&scx_fork_rwsem);
-+
+ if (ei->kind >= SCX_EXIT_ERROR) {
-+ printk(KERN_ERR "sched_ext: BPF scheduler \"%s\" errored, disabling\n", scx_ops.name);
-+
-+ if (ei->msg[0] == '\0')
-+ printk(KERN_ERR "sched_ext: %s\n", ei->reason);
-+ else
-+ printk(KERN_ERR "sched_ext: %s (%s)\n", ei->reason, ei->msg);
++ pr_err("sched_ext: BPF scheduler \"%s\" disabled (%s)\n",
++ scx_ops.name, ei->reason);
+
++ if (ei->msg[0] != '\0')
++ pr_err("sched_ext: %s: %s\n", scx_ops.name, ei->msg);
++#ifdef CONFIG_STACKTRACE
+ stack_trace_print(ei->bt, ei->bt_len, 2);
++#endif
++ } else {
++ pr_info("sched_ext: BPF scheduler \"%s\" disabled (%s)\n",
++ scx_ops.name, ei->reason);
+ }
+
+ if (scx_ops.exit)
@@ -5817,7 +6637,7 @@ index 000000000000..0dac88d0e578
+ static unsigned long bt[SCX_EXIT_BT_LEN];
+ char dsq_id_buf[19] = "(n/a)";
+ unsigned long ops_state = atomic_long_read(&p->scx.ops_state);
-+ unsigned int bt_len;
++ unsigned int bt_len = 0;
+
+ if (p->scx.dsq)
+ scnprintf(dsq_id_buf, sizeof(dsq_id_buf), "0x%llx",
@@ -5842,7 +6662,9 @@ index 000000000000..0dac88d0e578
+ ops_dump_exit();
+ }
+
++#ifdef CONFIG_STACKTRACE
+ bt_len = stack_trace_save_tsk(p, bt, SCX_EXIT_BT_LEN, 1);
++#endif
+ if (bt_len) {
+ dump_newline(s);
+ dump_stack_trace(s, " ", bt, bt_len);
@@ -6000,10 +6822,10 @@ index 000000000000..0dac88d0e578
+ return;
+
+ ei->exit_code = exit_code;
-+
++#ifdef CONFIG_STACKTRACE
+ if (kind >= SCX_EXIT_ERROR)
+ ei->bt_len = stack_trace_save(ei->bt, SCX_EXIT_BT_LEN, 1);
-+
++#endif
+ va_start(args, fmt);
+ vscnprintf(ei->msg, SCX_EXIT_MSG_LEN, fmt, args);
+ va_end(args);
@@ -6061,12 +6883,12 @@ index 000000000000..0dac88d0e578
+ return 0;
+}
+
-+static int scx_ops_enable(struct sched_ext_ops *ops)
++static int scx_ops_enable(struct sched_ext_ops *ops, struct bpf_link *link)
+{
+ struct scx_task_iter sti;
+ struct task_struct *p;
+ unsigned long timeout;
-+ int i, cpu, ret;
++ int i, cpu, node, ret;
+
+ if (!cpumask_equal(housekeeping_cpumask(HK_TYPE_DOMAIN),
+ cpu_possible_mask)) {
@@ -6085,6 +6907,34 @@ index 000000000000..0dac88d0e578
+ }
+ }
+
++ if (!global_dsqs) {
++ struct scx_dispatch_q **dsqs;
++
++ dsqs = kcalloc(nr_node_ids, sizeof(dsqs[0]), GFP_KERNEL);
++ if (!dsqs) {
++ ret = -ENOMEM;
++ goto err_unlock;
++ }
++
++ for_each_node_state(node, N_POSSIBLE) {
++ struct scx_dispatch_q *dsq;
++
++ dsq = kzalloc_node(sizeof(*dsq), GFP_KERNEL, node);
++ if (!dsq) {
++ for_each_node_state(node, N_POSSIBLE)
++ kfree(dsqs[node]);
++ kfree(dsqs);
++ ret = -ENOMEM;
++ goto err_unlock;
++ }
++
++ init_dsq(dsq, SCX_DSQ_GLOBAL);
++ dsqs[node] = dsq;
++ }
++
++ global_dsqs = dsqs;
++ }
++
+ if (scx_ops_enable_state() != SCX_OPS_DISABLED) {
+ ret = -EBUSY;
+ goto err_unlock;
@@ -6108,12 +6958,12 @@ index 000000000000..0dac88d0e578
+ }
+
+ /*
-+ * Set scx_ops, transition to PREPPING and clear exit info to arm the
++ * Set scx_ops, transition to ENABLING and clear exit info to arm the
+ * disable path. Failure triggers full disabling from here on.
+ */
+ scx_ops = *ops;
+
-+ WARN_ON_ONCE(scx_ops_set_enable_state(SCX_OPS_PREPPING) !=
++ WARN_ON_ONCE(scx_ops_set_enable_state(SCX_OPS_ENABLING) !=
+ SCX_OPS_DISABLED);
+
+ atomic_set(&scx_exit_kind, SCX_EXIT_NONE);
@@ -6134,7 +6984,8 @@ index 000000000000..0dac88d0e578
+ ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, init);
+ if (ret) {
+ ret = ops_sanitize_err("init", ret);
-+ goto err_disable_unlock_cpus;
++ cpus_read_unlock();
++ goto err_disable;
+ }
+ }
+
@@ -6142,6 +6993,7 @@ index 000000000000..0dac88d0e578
+ if (((void (**)(void))ops)[i])
+ static_branch_enable_cpuslocked(&scx_has_op[i]);
+
++ check_hotplug_seq(ops);
+ cpus_read_unlock();
+
+ ret = validate_ops(ops);
@@ -6169,42 +7021,40 @@ index 000000000000..0dac88d0e578
+ scx_watchdog_timeout / 2);
+
+ /*
-+ * Lock out forks before opening the floodgate so that they don't wander
-+ * into the operations prematurely.
-+ *
-+ * We don't need to keep the CPUs stable but grab cpus_read_lock() to
-+ * ease future locking changes for cgroup suport.
-+ *
-+ * Note that cpu_hotplug_lock must nest inside scx_fork_rwsem due to the
-+ * following dependency chain:
-+ *
-+ * scx_fork_rwsem --> pernet_ops_rwsem --> cpu_hotplug_lock
++ * Once __scx_ops_enabled is set, %current can be switched to SCX
++ * anytime. This can lead to stalls as some BPF schedulers (e.g.
++ * userspace scheduling) may not function correctly before all tasks are
++ * switched. Init in bypass mode to guarantee forward progress.
+ */
-+ percpu_down_write(&scx_fork_rwsem);
-+ cpus_read_lock();
-+
-+ check_hotplug_seq(ops);
++ scx_ops_bypass(true);
+
+ for (i = SCX_OPI_NORMAL_BEGIN; i < SCX_OPI_NORMAL_END; i++)
+ if (((void (**)(void))ops)[i])
-+ static_branch_enable_cpuslocked(&scx_has_op[i]);
++ static_branch_enable(&scx_has_op[i]);
+
+ if (ops->flags & SCX_OPS_ENQ_LAST)
-+ static_branch_enable_cpuslocked(&scx_ops_enq_last);
++ static_branch_enable(&scx_ops_enq_last);
+
+ if (ops->flags & SCX_OPS_ENQ_EXITING)
-+ static_branch_enable_cpuslocked(&scx_ops_enq_exiting);
++ static_branch_enable(&scx_ops_enq_exiting);
+ if (scx_ops.cpu_acquire || scx_ops.cpu_release)
-+ static_branch_enable_cpuslocked(&scx_ops_cpu_preempt);
++ static_branch_enable(&scx_ops_cpu_preempt);
+
+ if (!ops->update_idle || (ops->flags & SCX_OPS_KEEP_BUILTIN_IDLE)) {
+ reset_idle_masks();
-+ static_branch_enable_cpuslocked(&scx_builtin_idle_enabled);
++ static_branch_enable(&scx_builtin_idle_enabled);
+ } else {
-+ static_branch_disable_cpuslocked(&scx_builtin_idle_enabled);
++ static_branch_disable(&scx_builtin_idle_enabled);
+ }
+
-+ static_branch_enable_cpuslocked(&__scx_ops_enabled);
++ /*
++ * Lock out forks, cgroup on/offlining and moves before opening the
++ * floodgate so that they don't wander into the operations prematurely.
++ */
++ percpu_down_write(&scx_fork_rwsem);
++
++ WARN_ON_ONCE(scx_ops_init_task_enabled);
++ scx_ops_init_task_enabled = true;
+
+ /*
+ * Enable ops for every task. Fork is excluded by scx_fork_rwsem
@@ -6212,12 +7062,29 @@ index 000000000000..0dac88d0e578
+ * leaving as sched_ext_free() can handle both prepped and enabled
+ * tasks. Prep all tasks first and then enable them with preemption
+ * disabled.
++ *
++ * All cgroups should be initialized before scx_ops_init_task() so that
++ * the BPF scheduler can reliably track each task's cgroup membership
++ * from scx_ops_init_task(). Lock out cgroup on/offlining and task
++ * migrations while tasks are being initialized so that
++ * scx_cgroup_can_attach() never sees uninitialized tasks.
+ */
-+ spin_lock_irq(&scx_tasks_lock);
++ scx_cgroup_lock();
++ ret = scx_cgroup_init();
++ if (ret)
++ goto err_disable_unlock_all;
+
++ spin_lock_irq(&scx_tasks_lock);
+ scx_task_iter_init(&sti);
-+ while ((p = scx_task_iter_next_locked(&sti, false))) {
-+ get_task_struct(p);
++ while ((p = scx_task_iter_next_locked(&sti))) {
++ /*
++ * @p may already be dead, have lost all its usages counts and
++ * be waiting for RCU grace period before being freed. @p can't
++ * be initialized for SCX in such cases and should be ignored.
++ */
++ if (!tryget_task_struct(p))
++ continue;
++
+ scx_task_iter_rq_unlock(&sti);
+ spin_unlock_irq(&scx_tasks_lock);
+
@@ -6232,51 +7099,37 @@ index 000000000000..0dac88d0e578
+ goto err_disable_unlock_all;
+ }
+
++ scx_set_task_state(p, SCX_TASK_READY);
++
+ put_task_struct(p);
+ spin_lock_irq(&scx_tasks_lock);
+ }
+ scx_task_iter_exit(&sti);
++ spin_unlock_irq(&scx_tasks_lock);
++ scx_cgroup_unlock();
++ percpu_up_write(&scx_fork_rwsem);
+
+ /*
-+ * All tasks are prepped but are still ops-disabled. Ensure that
-+ * %current can't be scheduled out and switch everyone.
-+ * preempt_disable() is necessary because we can't guarantee that
-+ * %current won't be starved if scheduled out while switching.
-+ */
-+ preempt_disable();
-+
-+ /*
-+ * From here on, the disable path must assume that tasks have ops
-+ * enabled and need to be recovered.
-+ *
-+ * Transition to ENABLING fails iff the BPF scheduler has already
-+ * triggered scx_bpf_error(). Returning an error code here would lose
-+ * the recorded error information. Exit indicating success so that the
-+ * error is notified through ops.exit() with all the details.
++ * All tasks are READY. It's safe to turn on scx_enabled() and switch
++ * all eligible tasks.
+ */
-+ if (!scx_ops_tryset_enable_state(SCX_OPS_ENABLING, SCX_OPS_PREPPING)) {
-+ preempt_enable();
-+ spin_unlock_irq(&scx_tasks_lock);
-+ WARN_ON_ONCE(atomic_read(&scx_exit_kind) == SCX_EXIT_NONE);
-+ ret = 0;
-+ goto err_disable_unlock_all;
-+ }
++ WRITE_ONCE(scx_switching_all, !(ops->flags & SCX_OPS_SWITCH_PARTIAL));
++ static_branch_enable(&__scx_ops_enabled);
+
+ /*
-+ * We're fully committed and can't fail. The PREPPED -> ENABLED
++ * We're fully committed and can't fail. The task READY -> ENABLED
+ * transitions here are synchronized against sched_ext_free() through
+ * scx_tasks_lock.
+ */
-+ WRITE_ONCE(scx_switching_all, !(ops->flags & SCX_OPS_SWITCH_PARTIAL));
-+
++ percpu_down_write(&scx_fork_rwsem);
++ spin_lock_irq(&scx_tasks_lock);
+ scx_task_iter_init(&sti);
-+ while ((p = scx_task_iter_next_locked(&sti, false))) {
++ while ((p = scx_task_iter_next_locked(&sti))) {
+ const struct sched_class *old_class = p->sched_class;
+ struct sched_enq_and_set_ctx ctx;
+
+ sched_deq_and_put_task(p, DEQUEUE_SAVE | DEQUEUE_MOVE, &ctx);
+
-+ scx_set_task_state(p, SCX_TASK_READY);
+ __setscheduler_prio(p, p->prio);
+ check_class_changing(task_rq(p), p, old_class);
+
@@ -6285,13 +7138,16 @@ index 000000000000..0dac88d0e578
+ check_class_changed(task_rq(p), p, old_class, p->prio);
+ }
+ scx_task_iter_exit(&sti);
-+
+ spin_unlock_irq(&scx_tasks_lock);
-+ preempt_enable();
-+ cpus_read_unlock();
+ percpu_up_write(&scx_fork_rwsem);
+
-+ /* see above ENABLING transition for the explanation on exiting with 0 */
++ scx_ops_bypass(false);
++
++ /*
++ * Returning an error code here would lose the recorded error
++ * information. Exit indicating success so that the error is notified
++ * through ops.exit() with all the details.
++ */
+ if (!scx_ops_tryset_enable_state(SCX_OPS_ENABLED, SCX_OPS_ENABLING)) {
+ WARN_ON_ONCE(atomic_read(&scx_exit_kind) == SCX_EXIT_NONE);
+ ret = 0;
@@ -6301,9 +7157,13 @@ index 000000000000..0dac88d0e578
+ if (!(ops->flags & SCX_OPS_SWITCH_PARTIAL))
+ static_branch_enable(&__scx_switched_all);
+
++ pr_info("sched_ext: BPF scheduler \"%s\" enabled%s\n",
++ scx_ops.name, scx_switched_all() ? "" : " (partial)");
+ kobject_uevent(scx_root_kobj, KOBJ_ADD);
+ mutex_unlock(&scx_ops_enable_mutex);
+
++ atomic_long_inc(&scx_enable_seq);
++
+ return 0;
+
+err_del:
@@ -6320,9 +7180,9 @@ index 000000000000..0dac88d0e578
+ return ret;
+
+err_disable_unlock_all:
++ scx_cgroup_unlock();
+ percpu_up_write(&scx_fork_rwsem);
-+err_disable_unlock_cpus:
-+ cpus_read_unlock();
++ scx_ops_bypass(false);
+err_disable:
+ mutex_unlock(&scx_ops_enable_mutex);
+ /* must be fully disabled before returning */
@@ -6514,6 +7374,11 @@ index 000000000000..0dac88d0e578
+
+ switch (moff) {
+ case offsetof(struct sched_ext_ops, init_task):
++#ifdef CONFIG_EXT_GROUP_SCHED
++ case offsetof(struct sched_ext_ops, cgroup_init):
++ case offsetof(struct sched_ext_ops, cgroup_exit):
++ case offsetof(struct sched_ext_ops, cgroup_prep_move):
++#endif
+ case offsetof(struct sched_ext_ops, cpu_online):
+ case offsetof(struct sched_ext_ops, cpu_offline):
+ case offsetof(struct sched_ext_ops, init):
@@ -6527,12 +7392,12 @@ index 000000000000..0dac88d0e578
+ return 0;
+}
+
-+static int bpf_scx_reg(void *kdata)
++static int bpf_scx_reg(void *kdata, struct bpf_link *link)
+{
-+ return scx_ops_enable(kdata);
++ return scx_ops_enable(kdata, link);
+}
+
-+static void bpf_scx_unreg(void *kdata)
++static void bpf_scx_unreg(void *kdata, struct bpf_link *link)
+{
+ scx_ops_disable(SCX_EXIT_UNREG);
+ kthread_flush_work(&scx_ops_disable_work);
@@ -6551,7 +7416,7 @@ index 000000000000..0dac88d0e578
+ return 0;
+}
+
-+static int bpf_scx_update(void *kdata, void *old_kdata)
++static int bpf_scx_update(void *kdata, void *old_kdata, struct bpf_link *link)
+{
+ /*
+ * sched_ext does not support updating the actively-loaded BPF
@@ -6572,6 +7437,7 @@ index 000000000000..0dac88d0e578
+static void enqueue_stub(struct task_struct *p, u64 enq_flags) {}
+static void dequeue_stub(struct task_struct *p, u64 enq_flags) {}
+static void dispatch_stub(s32 prev_cpu, struct task_struct *p) {}
++static void tick_stub(struct task_struct *p) {}
+static void runnable_stub(struct task_struct *p, u64 enq_flags) {}
+static void running_stub(struct task_struct *p) {}
+static void stopping_stub(struct task_struct *p, bool runnable) {}
@@ -6587,16 +7453,28 @@ index 000000000000..0dac88d0e578
+static void exit_task_stub(struct task_struct *p, struct scx_exit_task_args *args) {}
+static void enable_stub(struct task_struct *p) {}
+static void disable_stub(struct task_struct *p) {}
++#ifdef CONFIG_EXT_GROUP_SCHED
++static s32 cgroup_init_stub(struct cgroup *cgrp, struct scx_cgroup_init_args *args) { return -EINVAL; }
++static void cgroup_exit_stub(struct cgroup *cgrp) {}
++static s32 cgroup_prep_move_stub(struct task_struct *p, struct cgroup *from, struct cgroup *to) { return -EINVAL; }
++static void cgroup_move_stub(struct task_struct *p, struct cgroup *from, struct cgroup *to) {}
++static void cgroup_cancel_move_stub(struct task_struct *p, struct cgroup *from, struct cgroup *to) {}
++static void cgroup_set_weight_stub(struct cgroup *cgrp, u32 weight) {}
++#endif
+static void cpu_online_stub(s32 cpu) {}
+static void cpu_offline_stub(s32 cpu) {}
+static s32 init_stub(void) { return -EINVAL; }
+static void exit_stub(struct scx_exit_info *info) {}
++static void dump_stub(struct scx_dump_ctx *ctx) {}
++static void dump_cpu_stub(struct scx_dump_ctx *ctx, s32 cpu, bool idle) {}
++static void dump_task_stub(struct scx_dump_ctx *ctx, struct task_struct *p) {}
+
+static struct sched_ext_ops __bpf_ops_sched_ext_ops = {
+ .select_cpu = select_cpu_stub,
+ .enqueue = enqueue_stub,
+ .dequeue = dequeue_stub,
+ .dispatch = dispatch_stub,
++ .tick = tick_stub,
+ .runnable = runnable_stub,
+ .running = running_stub,
+ .stopping = stopping_stub,
@@ -6612,10 +7490,21 @@ index 000000000000..0dac88d0e578
+ .exit_task = exit_task_stub,
+ .enable = enable_stub,
+ .disable = disable_stub,
++#ifdef CONFIG_EXT_GROUP_SCHED
++ .cgroup_init = cgroup_init_stub,
++ .cgroup_exit = cgroup_exit_stub,
++ .cgroup_prep_move = cgroup_prep_move_stub,
++ .cgroup_move = cgroup_move_stub,
++ .cgroup_cancel_move = cgroup_cancel_move_stub,
++ .cgroup_set_weight = cgroup_set_weight_stub,
++#endif
+ .cpu_online = cpu_online_stub,
+ .cpu_offline = cpu_offline_stub,
+ .init = init_stub,
+ .exit = exit_stub,
++ .dump = dump_stub,
++ .dump_cpu = dump_cpu_stub,
++ .dump_task = dump_task_stub,
+};
+
+static struct bpf_struct_ops bpf_sched_ext_ops = {
@@ -6858,10 +7747,10 @@ index 000000000000..0dac88d0e578
+ * definitions so that BPF scheduler implementations can use them
+ * through the generated vmlinux.h.
+ */
-+ WRITE_ONCE(v, SCX_ENQ_WAKEUP | SCX_DEQ_SLEEP | SCX_KICK_PREEMPT);
++ WRITE_ONCE(v, SCX_ENQ_WAKEUP | SCX_DEQ_SLEEP | SCX_KICK_PREEMPT |
++ SCX_TG_ONLINE);
+
+ BUG_ON(rhashtable_init(&dsq_hash, &dsq_hash_params));
-+ init_dsq(&scx_dsq_global, SCX_DSQ_GLOBAL);
+#ifdef CONFIG_SMP
+ BUG_ON(!alloc_cpumask_var(&idle_masks.cpu, GFP_KERNEL));
+ BUG_ON(!alloc_cpumask_var(&idle_masks.smt, GFP_KERNEL));
@@ -6903,35 +7792,6 @@ index 000000000000..0dac88d0e578
+__bpf_kfunc_start_defs();
+
+/**
-+ * scx_bpf_create_dsq - Create a custom DSQ
-+ * @dsq_id: DSQ to create
-+ * @node: NUMA node to allocate from
-+ *
-+ * Create a custom DSQ identified by @dsq_id. Can be called from any sleepable
-+ * scx callback, and any BPF_PROG_TYPE_SYSCALL prog.
-+ */
-+__bpf_kfunc s32 scx_bpf_create_dsq(u64 dsq_id, s32 node)
-+{
-+ if (unlikely(node >= (int)nr_node_ids ||
-+ (node < 0 && node != NUMA_NO_NODE)))
-+ return -EINVAL;
-+ return PTR_ERR_OR_ZERO(create_dsq(dsq_id, node));
-+}
-+
-+__bpf_kfunc_end_defs();
-+
-+BTF_KFUNCS_START(scx_kfunc_ids_sleepable)
-+BTF_ID_FLAGS(func, scx_bpf_create_dsq, KF_SLEEPABLE)
-+BTF_KFUNCS_END(scx_kfunc_ids_sleepable)
-+
-+static const struct btf_kfunc_id_set scx_kfunc_set_sleepable = {
-+ .owner = THIS_MODULE,
-+ .set = &scx_kfunc_ids_sleepable,
-+};
-+
-+__bpf_kfunc_start_defs();
-+
-+/**
+ * scx_bpf_select_cpu_dfl - The default implementation of ops.select_cpu()
+ * @p: task_struct to select a CPU for
+ * @prev_cpu: CPU @p was on previously
@@ -7021,7 +7881,7 @@ index 000000000000..0dac88d0e578
+ * scx_bpf_dispatch - Dispatch a task into the FIFO queue of a DSQ
+ * @p: task_struct to dispatch
+ * @dsq_id: DSQ to dispatch to
-+ * @slice: duration @p can run for in nsecs
++ * @slice: duration @p can run for in nsecs, 0 to keep the current value
+ * @enq_flags: SCX_ENQ_*
+ *
+ * Dispatch @p into the FIFO queue of the DSQ identified by @dsq_id. It is safe
@@ -7071,7 +7931,7 @@ index 000000000000..0dac88d0e578
+ * scx_bpf_dispatch_vtime - Dispatch a task into the vtime priority queue of a DSQ
+ * @p: task_struct to dispatch
+ * @dsq_id: DSQ to dispatch to
-+ * @slice: duration @p can run for in nsecs
++ * @slice: duration @p can run for in nsecs, 0 to keep the current value
+ * @vtime: @p's ordering inside the vtime-sorted queue of the target DSQ
+ * @enq_flags: SCX_ENQ_*
+ *
@@ -7112,6 +7972,118 @@ index 000000000000..0dac88d0e578
+ .set = &scx_kfunc_ids_enqueue_dispatch,
+};
+
++static bool scx_dispatch_from_dsq(struct bpf_iter_scx_dsq_kern *kit,
++ struct task_struct *p, u64 dsq_id,
++ u64 enq_flags)
++{
++ struct scx_dispatch_q *src_dsq = kit->dsq, *dst_dsq;
++ struct rq *this_rq, *src_rq, *dst_rq, *locked_rq;
++ bool dispatched = false;
++ bool in_balance;
++ unsigned long flags;
++
++ if (!scx_kf_allowed_if_unlocked() && !scx_kf_allowed(SCX_KF_DISPATCH))
++ return false;
++
++ /*
++ * Can be called from either ops.dispatch() locking this_rq() or any
++ * context where no rq lock is held. If latter, lock @p's task_rq which
++ * we'll likely need anyway.
++ */
++ src_rq = task_rq(p);
++
++ local_irq_save(flags);
++ this_rq = this_rq();
++ in_balance = this_rq->scx.flags & SCX_RQ_IN_BALANCE;
++
++ if (in_balance) {
++ if (this_rq != src_rq) {
++ raw_spin_rq_unlock(this_rq);
++ raw_spin_rq_lock(src_rq);
++ }
++ } else {
++ raw_spin_rq_lock(src_rq);
++ }
++
++ locked_rq = src_rq;
++ raw_spin_lock(&src_dsq->lock);
++
++ /*
++ * Did someone else get to it? @p could have already left $src_dsq, got
++ * re-enqueud, or be in the process of being consumed by someone else.
++ */
++ if (unlikely(p->scx.dsq != src_dsq ||
++ u32_before(kit->cursor.priv, p->scx.dsq_seq) ||
++ p->scx.holding_cpu >= 0) ||
++ WARN_ON_ONCE(src_rq != task_rq(p))) {
++ raw_spin_unlock(&src_dsq->lock);
++ goto out;
++ }
++
++ /* @p is still on $src_dsq and stable, determine the destination */
++ dst_dsq = find_dsq_for_dispatch(this_rq, dsq_id, p);
++
++ if (dst_dsq->id == SCX_DSQ_LOCAL) {
++ dst_rq = container_of(dst_dsq, struct rq, scx.local_dsq);
++ if (!task_can_run_on_remote_rq(p, dst_rq, true)) {
++ dst_dsq = find_global_dsq(p);
++ dst_rq = src_rq;
++ }
++ } else {
++ /* no need to migrate if destination is a non-local DSQ */
++ dst_rq = src_rq;
++ }
++
++ /*
++ * Move @p into $dst_dsq. If $dst_dsq is the local DSQ of a different
++ * CPU, @p will be migrated.
++ */
++ if (dst_dsq->id == SCX_DSQ_LOCAL) {
++ /* @p is going from a non-local DSQ to a local DSQ */
++ if (src_rq == dst_rq) {
++ task_unlink_from_dsq(p, src_dsq);
++ move_local_task_to_local_dsq(p, enq_flags,
++ src_dsq, dst_rq);
++ raw_spin_unlock(&src_dsq->lock);
++ } else {
++ raw_spin_unlock(&src_dsq->lock);
++ move_remote_task_to_local_dsq(p, enq_flags,
++ src_rq, dst_rq);
++ locked_rq = dst_rq;
++ }
++ } else {
++ /*
++ * @p is going from a non-local DSQ to a non-local DSQ. As
++ * $src_dsq is already locked, do an abbreviated dequeue.
++ */
++ task_unlink_from_dsq(p, src_dsq);
++ p->scx.dsq = NULL;
++ raw_spin_unlock(&src_dsq->lock);
++
++ if (kit->cursor.flags & __SCX_DSQ_ITER_HAS_VTIME)
++ p->scx.dsq_vtime = kit->vtime;
++ dispatch_enqueue(dst_dsq, p, enq_flags);
++ }
++
++ if (kit->cursor.flags & __SCX_DSQ_ITER_HAS_SLICE)
++ p->scx.slice = kit->slice;
++
++ dispatched = true;
++out:
++ if (in_balance) {
++ if (this_rq != locked_rq) {
++ raw_spin_rq_unlock(locked_rq);
++ raw_spin_rq_lock(this_rq);
++ }
++ } else {
++ raw_spin_rq_unlock_irqrestore(locked_rq, flags);
++ }
++
++ kit->cursor.flags &= ~(__SCX_DSQ_ITER_HAS_SLICE |
++ __SCX_DSQ_ITER_HAS_VTIME);
++ return dispatched;
++}
++
+__bpf_kfunc_start_defs();
+
+/**
@@ -7171,7 +8143,7 @@ index 000000000000..0dac88d0e578
+
+ flush_dispatch_buf(dspc->rq);
+
-+ dsq = find_non_local_dsq(dsq_id);
++ dsq = find_user_dsq(dsq_id);
+ if (unlikely(!dsq)) {
+ scx_ops_error("invalid DSQ ID 0x%016llx", dsq_id);
+ return false;
@@ -7191,12 +8163,112 @@ index 000000000000..0dac88d0e578
+ }
+}
+
++/**
++ * scx_bpf_dispatch_from_dsq_set_slice - Override slice when dispatching from DSQ
++ * @it__iter: DSQ iterator in progress
++ * @slice: duration the dispatched task can run for in nsecs
++ *
++ * Override the slice of the next task that will be dispatched from @it__iter
++ * using scx_bpf_dispatch_from_dsq[_vtime](). If this function is not called,
++ * the previous slice duration is kept.
++ */
++__bpf_kfunc void scx_bpf_dispatch_from_dsq_set_slice(
++ struct bpf_iter_scx_dsq *it__iter, u64 slice)
++{
++ struct bpf_iter_scx_dsq_kern *kit = (void *)it__iter;
++
++ kit->slice = slice;
++ kit->cursor.flags |= __SCX_DSQ_ITER_HAS_SLICE;
++}
++
++/**
++ * scx_bpf_dispatch_from_dsq_set_vtime - Override vtime when dispatching from DSQ
++ * @it__iter: DSQ iterator in progress
++ * @vtime: task's ordering inside the vtime-sorted queue of the target DSQ
++ *
++ * Override the vtime of the next task that will be dispatched from @it__iter
++ * using scx_bpf_dispatch_from_dsq_vtime(). If this function is not called, the
++ * previous slice vtime is kept. If scx_bpf_dispatch_from_dsq() is used to
++ * dispatch the next task, the override is ignored and cleared.
++ */
++__bpf_kfunc void scx_bpf_dispatch_from_dsq_set_vtime(
++ struct bpf_iter_scx_dsq *it__iter, u64 vtime)
++{
++ struct bpf_iter_scx_dsq_kern *kit = (void *)it__iter;
++
++ kit->vtime = vtime;
++ kit->cursor.flags |= __SCX_DSQ_ITER_HAS_VTIME;
++}
++
++/**
++ * scx_bpf_dispatch_from_dsq - Move a task from DSQ iteration to a DSQ
++ * @it__iter: DSQ iterator in progress
++ * @p: task to transfer
++ * @dsq_id: DSQ to move @p to
++ * @enq_flags: SCX_ENQ_*
++ *
++ * Transfer @p which is on the DSQ currently iterated by @it__iter to the DSQ
++ * specified by @dsq_id. All DSQs - local DSQs, global DSQ and user DSQs - can
++ * be the destination.
++ *
++ * For the transfer to be successful, @p must still be on the DSQ and have been
++ * queued before the DSQ iteration started. This function doesn't care whether
++ * @p was obtained from the DSQ iteration. @p just has to be on the DSQ and have
++ * been queued before the iteration started.
++ *
++ * @p's slice is kept by default. Use scx_bpf_dispatch_from_dsq_set_slice() to
++ * update.
++ *
++ * Can be called from ops.dispatch() or any BPF context which doesn't hold a rq
++ * lock (e.g. BPF timers or SYSCALL programs).
++ *
++ * Returns %true if @p has been consumed, %false if @p had already been consumed
++ * or dequeued.
++ */
++__bpf_kfunc bool scx_bpf_dispatch_from_dsq(struct bpf_iter_scx_dsq *it__iter,
++ struct task_struct *p, u64 dsq_id,
++ u64 enq_flags)
++{
++ return scx_dispatch_from_dsq((struct bpf_iter_scx_dsq_kern *)it__iter,
++ p, dsq_id, enq_flags);
++}
++
++/**
++ * scx_bpf_dispatch_vtime_from_dsq - Move a task from DSQ iteration to a PRIQ DSQ
++ * @it__iter: DSQ iterator in progress
++ * @p: task to transfer
++ * @dsq_id: DSQ to move @p to
++ * @enq_flags: SCX_ENQ_*
++ *
++ * Transfer @p which is on the DSQ currently iterated by @it__iter to the
++ * priority queue of the DSQ specified by @dsq_id. The destination must be a
++ * user DSQ as only user DSQs support priority queue.
++ *
++ * @p's slice and vtime are kept by default. Use
++ * scx_bpf_dispatch_from_dsq_set_slice() and
++ * scx_bpf_dispatch_from_dsq_set_vtime() to update.
++ *
++ * All other aspects are identical to scx_bpf_dispatch_from_dsq(). See
++ * scx_bpf_dispatch_vtime() for more information on @vtime.
++ */
++__bpf_kfunc bool scx_bpf_dispatch_vtime_from_dsq(struct bpf_iter_scx_dsq *it__iter,
++ struct task_struct *p, u64 dsq_id,
++ u64 enq_flags)
++{
++ return scx_dispatch_from_dsq((struct bpf_iter_scx_dsq_kern *)it__iter,
++ p, dsq_id, enq_flags | SCX_ENQ_DSQ_PRIQ);
++}
++
+__bpf_kfunc_end_defs();
+
+BTF_KFUNCS_START(scx_kfunc_ids_dispatch)
+BTF_ID_FLAGS(func, scx_bpf_dispatch_nr_slots)
+BTF_ID_FLAGS(func, scx_bpf_dispatch_cancel)
+BTF_ID_FLAGS(func, scx_bpf_consume)
++BTF_ID_FLAGS(func, scx_bpf_dispatch_from_dsq_set_slice)
++BTF_ID_FLAGS(func, scx_bpf_dispatch_from_dsq_set_vtime)
++BTF_ID_FLAGS(func, scx_bpf_dispatch_from_dsq, KF_RCU)
++BTF_ID_FLAGS(func, scx_bpf_dispatch_vtime_from_dsq, KF_RCU)
+BTF_KFUNCS_END(scx_kfunc_ids_dispatch)
+
+static const struct btf_kfunc_id_set scx_kfunc_set_dispatch = {
@@ -7274,6 +8346,37 @@ index 000000000000..0dac88d0e578
+__bpf_kfunc_start_defs();
+
+/**
++ * scx_bpf_create_dsq - Create a custom DSQ
++ * @dsq_id: DSQ to create
++ * @node: NUMA node to allocate from
++ *
++ * Create a custom DSQ identified by @dsq_id. Can be called from any sleepable
++ * scx callback, and any BPF_PROG_TYPE_SYSCALL prog.
++ */
++__bpf_kfunc s32 scx_bpf_create_dsq(u64 dsq_id, s32 node)
++{
++ if (unlikely(node >= (int)nr_node_ids ||
++ (node < 0 && node != NUMA_NO_NODE)))
++ return -EINVAL;
++ return PTR_ERR_OR_ZERO(create_dsq(dsq_id, node));
++}
++
++__bpf_kfunc_end_defs();
++
++BTF_KFUNCS_START(scx_kfunc_ids_unlocked)
++BTF_ID_FLAGS(func, scx_bpf_create_dsq, KF_SLEEPABLE)
++BTF_ID_FLAGS(func, scx_bpf_dispatch_from_dsq, KF_RCU)
++BTF_ID_FLAGS(func, scx_bpf_dispatch_vtime_from_dsq, KF_RCU)
++BTF_KFUNCS_END(scx_kfunc_ids_unlocked)
++
++static const struct btf_kfunc_id_set scx_kfunc_set_unlocked = {
++ .owner = THIS_MODULE,
++ .set = &scx_kfunc_ids_unlocked,
++};
++
++__bpf_kfunc_start_defs();
++
++/**
+ * scx_bpf_kick_cpu - Trigger reschedule on a CPU
+ * @cpu: cpu to kick
+ * @flags: %SCX_KICK_* flags
@@ -7291,17 +8394,17 @@ index 000000000000..0dac88d0e578
+ if (!ops_cpu_valid(cpu, NULL))
+ return;
+
++ local_irq_save(irq_flags);
++
++ this_rq = this_rq();
++
+ /*
+ * While bypassing for PM ops, IRQ handling may not be online which can
+ * lead to irq_work_queue() malfunction such as infinite busy wait for
+ * IRQ status update. Suppress kicking.
+ */
-+ if (scx_ops_bypassing())
-+ return;
-+
-+ local_irq_save(irq_flags);
-+
-+ this_rq = this_rq();
++ if (scx_rq_bypassing(this_rq))
++ goto out;
+
+ /*
+ * Actual kicking is bounced to kick_cpus_irq_workfn() to avoid nesting
@@ -7361,7 +8464,7 @@ index 000000000000..0dac88d0e578
+ goto out;
+ }
+ } else {
-+ dsq = find_non_local_dsq(dsq_id);
++ dsq = find_user_dsq(dsq_id);
+ if (dsq) {
+ ret = READ_ONCE(dsq->nr);
+ goto out;
@@ -7407,17 +8510,16 @@ index 000000000000..0dac88d0e578
+ BUILD_BUG_ON(__alignof__(struct bpf_iter_scx_dsq_kern) !=
+ __alignof__(struct bpf_iter_scx_dsq));
+
-+ if (flags & ~__SCX_DSQ_ITER_ALL_FLAGS)
++ if (flags & ~__SCX_DSQ_ITER_USER_FLAGS)
+ return -EINVAL;
+
-+ kit->dsq = find_non_local_dsq(dsq_id);
++ kit->dsq = find_user_dsq(dsq_id);
+ if (!kit->dsq)
+ return -ENOENT;
+
+ INIT_LIST_HEAD(&kit->cursor.node);
-+ kit->cursor.is_bpf_iter_cursor = true;
-+ kit->dsq_seq = READ_ONCE(kit->dsq->seq);
-+ kit->flags = flags;
++ kit->cursor.flags |= SCX_DSQ_LNODE_ITER_CURSOR | flags;
++ kit->cursor.priv = READ_ONCE(kit->dsq->seq);
+
+ return 0;
+}
@@ -7431,7 +8533,7 @@ index 000000000000..0dac88d0e578
+__bpf_kfunc struct task_struct *bpf_iter_scx_dsq_next(struct bpf_iter_scx_dsq *it)
+{
+ struct bpf_iter_scx_dsq_kern *kit = (void *)it;
-+ bool rev = kit->flags & SCX_DSQ_ITER_REV;
++ bool rev = kit->cursor.flags & SCX_DSQ_ITER_REV;
+ struct task_struct *p;
+ unsigned long flags;
+
@@ -7452,7 +8554,7 @@ index 000000000000..0dac88d0e578
+ */
+ do {
+ p = nldsq_next_task(kit->dsq, p, rev);
-+ } while (p && unlikely(u32_before(kit->dsq_seq, p->scx.dsq_seq)));
++ } while (p && unlikely(u32_before(kit->cursor.priv, p->scx.dsq_seq)));
+
+ if (p) {
+ if (rev)
@@ -7918,6 +9020,41 @@ index 000000000000..0dac88d0e578
+ return cpu_rq(cpu);
+}
+
++/**
++ * scx_bpf_task_cgroup - Return the sched cgroup of a task
++ * @p: task of interest
++ *
++ * @p->sched_task_group->css.cgroup represents the cgroup @p is associated with
++ * from the scheduler's POV. SCX operations should use this function to
++ * determine @p's current cgroup as, unlike following @p->cgroups,
++ * @p->sched_task_group is protected by @p's rq lock and thus atomic w.r.t. all
++ * rq-locked operations. Can be called on the parameter tasks of rq-locked
++ * operations. The restriction guarantees that @p's rq is locked by the caller.
++ */
++#ifdef CONFIG_CGROUP_SCHED
++__bpf_kfunc struct cgroup *scx_bpf_task_cgroup(struct task_struct *p)
++{
++ struct task_group *tg = p->sched_task_group;
++ struct cgroup *cgrp = &cgrp_dfl_root.cgrp;
++
++ if (!scx_kf_allowed_on_arg_tasks(__SCX_KF_RQ_LOCKED, p))
++ goto out;
++
++ /*
++ * A task_group may either be a cgroup or an autogroup. In the latter
++ * case, @tg->css.cgroup is %NULL. A task_group can't become the other
++ * kind once created.
++ */
++ if (tg && tg->css.cgroup)
++ cgrp = tg->css.cgroup;
++ else
++ cgrp = &cgrp_dfl_root.cgrp;
++out:
++ cgroup_get(cgrp);
++ return cgrp;
++}
++#endif
++
+__bpf_kfunc_end_defs();
+
+BTF_KFUNCS_START(scx_kfunc_ids_any)
@@ -7946,6 +9083,9 @@ index 000000000000..0dac88d0e578
+BTF_ID_FLAGS(func, scx_bpf_task_running, KF_RCU)
+BTF_ID_FLAGS(func, scx_bpf_task_cpu, KF_RCU)
+BTF_ID_FLAGS(func, scx_bpf_cpu_rq)
++#ifdef CONFIG_CGROUP_SCHED
++BTF_ID_FLAGS(func, scx_bpf_task_cgroup, KF_RCU | KF_ACQUIRE)
++#endif
+BTF_KFUNCS_END(scx_kfunc_ids_any)
+
+static const struct btf_kfunc_id_set scx_kfunc_set_any = {
@@ -7969,10 +9109,6 @@ index 000000000000..0dac88d0e578
+ * check using scx_kf_allowed().
+ */
+ if ((ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS,
-+ &scx_kfunc_set_sleepable)) ||
-+ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_SYSCALL,
-+ &scx_kfunc_set_sleepable)) ||
-+ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS,
+ &scx_kfunc_set_select_cpu)) ||
+ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS,
+ &scx_kfunc_set_enqueue_dispatch)) ||
@@ -7981,6 +9117,10 @@ index 000000000000..0dac88d0e578
+ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS,
+ &scx_kfunc_set_cpu_release)) ||
+ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS,
++ &scx_kfunc_set_unlocked)) ||
++ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_SYSCALL,
++ &scx_kfunc_set_unlocked)) ||
++ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS,
+ &scx_kfunc_set_any)) ||
+ (ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_TRACING,
+ &scx_kfunc_set_any)) ||
@@ -8019,10 +9159,10 @@ index 000000000000..0dac88d0e578
+__initcall(scx_init);
diff --git a/kernel/sched/ext.h b/kernel/sched/ext.h
new file mode 100644
-index 000000000000..32d3a51f591a
+index 000000000000..246019519231
--- /dev/null
+++ b/kernel/sched/ext.h
-@@ -0,0 +1,69 @@
+@@ -0,0 +1,91 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * BPF extensible scheduler class: Documentation/scheduler/sched-ext.rst
@@ -8092,11 +9232,33 @@ index 000000000000..32d3a51f591a
+#else
+static inline void scx_update_idle(struct rq *rq, bool idle) {}
+#endif
++
++#ifdef CONFIG_CGROUP_SCHED
++#ifdef CONFIG_EXT_GROUP_SCHED
++int scx_tg_online(struct task_group *tg);
++void scx_tg_offline(struct task_group *tg);
++int scx_cgroup_can_attach(struct cgroup_taskset *tset);
++void scx_move_task(struct task_struct *p);
++void scx_cgroup_finish_attach(void);
++void scx_cgroup_cancel_attach(struct cgroup_taskset *tset);
++void scx_group_set_weight(struct task_group *tg, unsigned long cgrp_weight);
++void scx_group_set_idle(struct task_group *tg, bool idle);
++#else /* CONFIG_EXT_GROUP_SCHED */
++static inline int scx_tg_online(struct task_group *tg) { return 0; }
++static inline void scx_tg_offline(struct task_group *tg) {}
++static inline int scx_cgroup_can_attach(struct cgroup_taskset *tset) { return 0; }
++static inline void scx_move_task(struct task_struct *p) {}
++static inline void scx_cgroup_finish_attach(void) {}
++static inline void scx_cgroup_cancel_attach(struct cgroup_taskset *tset) {}
++static inline void scx_group_set_weight(struct task_group *tg, unsigned long cgrp_weight) {}
++static inline void scx_group_set_idle(struct task_group *tg, bool idle) {}
++#endif /* CONFIG_EXT_GROUP_SCHED */
++#endif /* CONFIG_CGROUP_SCHED */
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
-index 483c137b9d3d..ab17954001ae 100644
+index 91b242e47db7..a36e37a674e8 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
-@@ -3835,7 +3835,8 @@ static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
+@@ -3857,7 +3857,8 @@ static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
}
}
@@ -8106,16 +9268,7 @@ index 483c137b9d3d..ab17954001ae 100644
{
struct sched_entity *se = &p->se;
struct cfs_rq *cfs_rq = cfs_rq_of(se);
-@@ -8697,7 +8697,7 @@
- /*
- * BATCH and IDLE tasks do not preempt others.
- */
-- if (unlikely(p->policy != SCHED_NORMAL))
-+ if (unlikely(!normal_policy(p->policy)))
- return;
-
- cfs_rq = cfs_rq_of(se);
-@@ -9647,29 +9647,18 @@
+@@ -9365,29 +9366,18 @@ static inline void update_blocked_load_status(struct rq *rq, bool has_blocked) {
static bool __update_blocked_others(struct rq *rq, bool *done)
{
@@ -8148,7 +9301,7 @@ index 483c137b9d3d..ab17954001ae 100644
}
#ifdef CONFIG_FAIR_GROUP_SCHED
-@@ -13207,6 +13198,7 @@ DEFINE_SCHED_CLASS(fair) = {
+@@ -13233,6 +13223,7 @@ DEFINE_SCHED_CLASS(fair) = {
.task_tick = task_tick_fair,
.task_fork = task_fork_fair,
@@ -8157,10 +9310,10 @@ index 483c137b9d3d..ab17954001ae 100644
.switched_from = switched_from_fair,
.switched_to = switched_to_fair,
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
-index 6135fbe83d68..3b6540cc436a 100644
+index 6e78d071beb5..c7a218123b7a 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
-@@ -458,11 +458,13 @@ static void wakeup_preempt_idle(struct rq *rq, struct task_struct *p, int flags)
+@@ -452,11 +452,13 @@ static void wakeup_preempt_idle(struct rq *rq, struct task_struct *p, int flags)
static void put_prev_task_idle(struct rq *rq, struct task_struct *prev)
{
@@ -8175,14 +9328,13 @@ index 6135fbe83d68..3b6540cc436a 100644
}
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
-index 38aeedd8a6cc..f952a4b99ead 100644
+index 432b43aa091c..48d893de632b 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
-@@ -187,9 +187,19 @@ static inline int idle_policy(int policy)
- {
+@@ -192,9 +192,18 @@ static inline int idle_policy(int policy)
return policy == SCHED_IDLE;
}
-+
+
+static inline int normal_policy(int policy)
+{
+#ifdef CONFIG_SCHED_CLASS_EXT
@@ -8199,7 +9351,7 @@ index 38aeedd8a6cc..f952a4b99ead 100644
}
static inline int rt_policy(int policy)
-@@ -237,6 +247,24 @@ static inline void update_avg(u64 *avg, u64 sample)
+@@ -244,6 +253,24 @@ static inline void update_avg(u64 *avg, u64 sample)
#define shr_bound(val, shift) \
(val >> min_t(typeof(shift), shift, BITS_PER_TYPE(typeof(val)) - 1))
@@ -8224,7 +9376,50 @@ index 38aeedd8a6cc..f952a4b99ead 100644
/*
* !! For sched_setattr_nocheck() (kernel) only !!
*
-@@ -475,6 +503,11 @@ static inline int walk_tg_tree(tg_visitor down, tg_visitor up, void *data)
+@@ -397,16 +424,17 @@ struct cfs_bandwidth {
+ struct task_group {
+ struct cgroup_subsys_state css;
+
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
++ /* A positive value indicates that this is a SCHED_IDLE group. */
++ int idle;
++#endif
++
+ #ifdef CONFIG_FAIR_GROUP_SCHED
+ /* schedulable entities of this group on each CPU */
+ struct sched_entity **se;
+ /* runqueue "owned" by this group on each CPU */
+ struct cfs_rq **cfs_rq;
+ unsigned long shares;
+-
+- /* A positive value indicates that this is a SCHED_IDLE group. */
+- int idle;
+-
+ #ifdef CONFIG_SMP
+ /*
+ * load_avg can be heavily contended at clock tick time, so put
+@@ -424,6 +452,11 @@ struct task_group {
+ struct rt_bandwidth rt_bandwidth;
+ #endif
+
++#ifdef CONFIG_EXT_GROUP_SCHED
++ u32 scx_flags; /* SCX_TG_* */
++ u32 scx_weight;
++#endif
++
+ struct rcu_head rcu;
+ struct list_head list;
+
+@@ -448,7 +481,7 @@ struct task_group {
+
+ };
+
+-#ifdef CONFIG_FAIR_GROUP_SCHED
++#ifdef CONFIG_GROUP_SCHED_WEIGHT
+ #define ROOT_TASK_GROUP_LOAD NICE_0_LOAD
+
+ /*
+@@ -479,6 +512,11 @@ static inline int walk_tg_tree(tg_visitor down, tg_visitor up, void *data)
return walk_tg_tree_from(&root_task_group, down, up, data);
}
@@ -8236,11 +9431,20 @@ index 38aeedd8a6cc..f952a4b99ead 100644
extern int tg_nop(struct task_group *tg, void *data);
#ifdef CONFIG_FAIR_GROUP_SCHED
-@@ -583,6 +616,12 @@ do { \
- # define u64_u32_load(var) u64_u32_load_copy(var, var##_copy)
- # define u64_u32_store(var, val) u64_u32_store_copy(var, var##_copy, val)
+@@ -535,6 +573,9 @@ extern void set_task_rq_fair(struct sched_entity *se,
+ static inline void set_task_rq_fair(struct sched_entity *se,
+ struct cfs_rq *prev, struct cfs_rq *next) { }
+ #endif /* CONFIG_SMP */
++#else /* !CONFIG_FAIR_GROUP_SCHED */
++static inline int sched_group_set_shares(struct task_group *tg, unsigned long shares) { return 0; }
++static inline int sched_group_set_idle(struct task_group *tg, long idle) { return 0; }
+ #endif /* CONFIG_FAIR_GROUP_SCHED */
+
+ #else /* CONFIG_CGROUP_SCHED */
+@@ -588,6 +629,11 @@ do { \
+ # define u64_u32_load(var) u64_u32_load_copy(var, var##_copy)
+ # define u64_u32_store(var, val) u64_u32_store_copy(var, var##_copy, val)
-+struct rq;
+struct balance_callback {
+ struct balance_callback *next;
+ void (*func)(struct rq *rq);
@@ -8249,7 +9453,7 @@ index 38aeedd8a6cc..f952a4b99ead 100644
/* CFS-related fields in a runqueue */
struct cfs_rq {
struct load_weight load;
-@@ -691,6 +730,42 @@ struct cfs_rq {
+@@ -696,6 +742,43 @@ struct cfs_rq {
#endif /* CONFIG_FAIR_GROUP_SCHED */
};
@@ -8263,6 +9467,7 @@ index 38aeedd8a6cc..f952a4b99ead 100644
+ */
+ SCX_RQ_ONLINE = 1 << 0,
+ SCX_RQ_CAN_STOP_TICK = 1 << 1,
++ SCX_RQ_BYPASSING = 1 << 3,
+
+ SCX_RQ_IN_WAKEUP = 1 << 16,
+ SCX_RQ_IN_BALANCE = 1 << 17,
@@ -8292,11 +9497,10 @@ index 38aeedd8a6cc..f952a4b99ead 100644
static inline int rt_bandwidth_enabled(void)
{
return sysctl_sched_rt_runtime >= 0;
-@@ -988,12 +1063,6 @@ struct uclamp_rq {
+@@ -996,11 +1079,6 @@ struct uclamp_rq {
DECLARE_STATIC_KEY_FALSE(sched_uclamp_used);
#endif /* CONFIG_UCLAMP_TASK */
--struct rq;
-struct balance_callback {
- struct balance_callback *next;
- void (*func)(struct rq *rq);
@@ -8305,7 +9509,7 @@ index 38aeedd8a6cc..f952a4b99ead 100644
/*
* This is the main, per-CPU runqueue data structure.
*
-@@ -1036,6 +1105,9 @@ struct rq {
+@@ -1043,6 +1121,9 @@ struct rq {
struct cfs_rq cfs;
struct rt_rq rt;
struct dl_rq dl;
@@ -8315,16 +9519,24 @@ index 38aeedd8a6cc..f952a4b99ead 100644
#ifdef CONFIG_FAIR_GROUP_SCHED
/* list of leaf cfs_rq on this CPU: */
-@@ -2278,6 +2350,8 @@ struct sched_class {
+@@ -2291,13 +2372,15 @@ struct sched_class {
+
+ void (*wakeup_preempt)(struct rq *rq, struct task_struct *p, int flags);
+
++ int (*balance)(struct rq *rq, struct task_struct *prev, struct rq_flags *rf);
+ struct task_struct *(*pick_next_task)(struct rq *rq);
+
void (*put_prev_task)(struct rq *rq, struct task_struct *p);
void (*set_next_task)(struct rq *rq, struct task_struct *p, bool first);
+ void (*switch_class)(struct rq *rq, struct task_struct *next);
+
#ifdef CONFIG_SMP
- int (*balance)(struct rq *rq, struct task_struct *prev, struct rq_flags *rf);
+- int (*balance)(struct rq *rq, struct task_struct *prev, struct rq_flags *rf);
int (*select_task_rq)(struct task_struct *p, int task_cpu, int flags);
-@@ -2305,8 +2379,11 @@ struct sched_class {
+
+ struct task_struct * (*pick_task)(struct rq *rq);
+@@ -2323,8 +2406,11 @@ struct sched_class {
* cannot assume the switched_from/switched_to pair is serialized by
* rq->lock. They are however serialized by p->pi_lock.
*/
@@ -8336,7 +9548,7 @@ index 38aeedd8a6cc..f952a4b99ead 100644
void (*prio_changed) (struct rq *this_rq, struct task_struct *task,
int oldprio);
-@@ -2355,19 +2432,54 @@ const struct sched_class name##_sched_class \
+@@ -2373,19 +2459,54 @@ const struct sched_class name##_sched_class \
extern struct sched_class __sched_class_highest[];
extern struct sched_class __sched_class_lowest[];
@@ -8397,50 +9609,77 @@ index 38aeedd8a6cc..f952a4b99ead 100644
static inline bool sched_stop_runnable(struct rq *rq)
{
-@@ -2464,7 +2576,7 @@ extern void init_sched_dl_class(void);
+@@ -2424,6 +2545,19 @@ extern void sched_balance_trigger(struct rq *rq);
+ extern int __set_cpus_allowed_ptr(struct task_struct *p, struct affinity_context *ctx);
+ extern void set_cpus_allowed_common(struct task_struct *p, struct affinity_context *ctx);
+
++static inline bool task_allowed_on_cpu(struct task_struct *p, int cpu)
++{
++ /* When not in the task's cpumask, no point in looking further. */
++ if (!cpumask_test_cpu(cpu, p->cpus_ptr))
++ return false;
++
++ /* Can @cpu run a user thread? */
++ if (!(p->flags & PF_KTHREAD) && !task_cpu_possible(cpu, p))
++ return false;
++
++ return true;
++}
++
+ static inline cpumask_t *alloc_user_cpus_ptr(int node)
+ {
+ /*
+@@ -2457,6 +2591,11 @@ extern int push_cpu_stop(void *arg);
+
+ #else /* !CONFIG_SMP: */
+
++static inline bool task_allowed_on_cpu(struct task_struct *p, int cpu)
++{
++ return true;
++}
++
+ static inline int __set_cpus_allowed_ptr(struct task_struct *p,
+ struct affinity_context *ctx)
+ {
+@@ -2510,8 +2649,6 @@ extern void init_sched_dl_class(void);
extern void init_sched_rt_class(void);
extern void init_sched_fair_class(void);
-extern void reweight_task(struct task_struct *p, const struct load_weight *lw);
-+extern void __setscheduler_prio(struct task_struct *p, int prio);
-
+-
extern void resched_curr(struct rq *rq);
extern void resched_cpu(int cpu);
-@@ -2542,6 +2654,12 @@ static inline void sub_nr_running(struct rq *rq, unsigned count)
- extern void activate_task(struct rq *rq, struct task_struct *p, int flags);
- extern void deactivate_task(struct rq *rq, struct task_struct *p, int flags);
-+extern void check_class_changing(struct rq *rq, struct task_struct *p,
-+ const struct sched_class *prev_class);
-+extern void check_class_changed(struct rq *rq, struct task_struct *p,
-+ const struct sched_class *prev_class,
-+ int oldprio);
-+
- extern void wakeup_preempt(struct rq *rq, struct task_struct *p, int flags);
-
- #ifdef CONFIG_PREEMPT_RT
-@@ -3007,6 +3125,9 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {}
- #endif
+@@ -3056,6 +3193,8 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) { }
#ifdef CONFIG_SMP
-+
+
+bool update_other_load_avgs(struct rq *rq);
+
unsigned long effective_cpu_util(int cpu, unsigned long util_cfs,
unsigned long *min,
unsigned long *max);
-@@ -3049,6 +3170,8 @@ static inline unsigned long cpu_util_rt(struct rq *rq)
- {
+@@ -3099,6 +3238,8 @@ static inline unsigned long cpu_util_rt(struct rq *rq)
return READ_ONCE(rq->avg_rt.util_avg);
}
+
+#else /* !CONFIG_SMP */
+static inline bool update_other_load_avgs(struct rq *rq) { return false; }
- #endif
+ #endif /* CONFIG_SMP */
#ifdef CONFIG_UCLAMP_TASK
-@@ -3481,4 +3604,24 @@ static inline void init_sched_mm_cid(struct task_struct *t) { }
- extern u64 avg_vruntime(struct cfs_rq *cfs_rq);
- extern int entity_eligible(struct cfs_rq *cfs_rq, struct sched_entity *se);
+@@ -3609,6 +3750,8 @@ extern void set_load_weight(struct task_struct *p, bool update_load);
+ extern void enqueue_task(struct rq *rq, struct task_struct *p, int flags);
+ extern void dequeue_task(struct rq *rq, struct task_struct *p, int flags);
+
++extern void check_class_changing(struct rq *rq, struct task_struct *p,
++ const struct sched_class *prev_class);
+ extern void check_class_changed(struct rq *rq, struct task_struct *p,
+ const struct sched_class *prev_class,
+ int oldprio);
+@@ -3629,4 +3772,24 @@ static inline void balance_callbacks(struct rq *rq, struct balance_callback *hea
+
+ #endif
+#ifdef CONFIG_SCHED_CLASS_EXT
+/*
@@ -8463,11 +9702,76 @@ index 38aeedd8a6cc..f952a4b99ead 100644
+#include "ext.h"
+
#endif /* _KERNEL_SCHED_SCHED_H */
+diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c
+index ae1b42775ef9..4fa59c9f69ac 100644
+--- a/kernel/sched/syscalls.c
++++ b/kernel/sched/syscalls.c
+@@ -259,6 +259,25 @@ int sched_core_idle_cpu(int cpu)
+ #endif
+
+ #ifdef CONFIG_SMP
++/*
++ * Load avg and utiliztion metrics need to be updated periodically and before
++ * consumption. This function updates the metrics for all subsystems except for
++ * the fair class. @rq must be locked and have its clock updated.
++ */
++bool update_other_load_avgs(struct rq *rq)
++{
++ u64 now = rq_clock_pelt(rq);
++ const struct sched_class *curr_class = rq->curr->sched_class;
++ unsigned long hw_pressure = arch_scale_hw_pressure(cpu_of(rq));
++
++ lockdep_assert_rq_held(rq);
++
++ return update_rt_rq_load_avg(now, rq, curr_class == &rt_sched_class) |
++ update_dl_rq_load_avg(now, rq, curr_class == &dl_sched_class) |
++ update_hw_load_avg(now, rq, hw_pressure) |
++ update_irq_load_avg(rq, 0);
++}
++
+ /*
+ * This function computes an effective utilization for the given CPU, to be
+ * used for frequency selection given the linear relation: f = u * f_max.
+@@ -695,6 +714,10 @@ int __sched_setscheduler(struct task_struct *p,
+ goto unlock;
+ }
+
++ retval = scx_check_setscheduler(p, policy);
++ if (retval)
++ goto unlock;
++
+ /*
+ * If not changing anything there's no need to proceed further,
+ * but store a possible modification of reset_on_fork.
+@@ -797,6 +820,7 @@ int __sched_setscheduler(struct task_struct *p,
+ __setscheduler_prio(p, newprio);
+ }
+ __setscheduler_uclamp(p, attr);
++ check_class_changing(rq, p, prev_class);
+
+ if (queued) {
+ /*
+@@ -1602,6 +1626,7 @@ SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
+ case SCHED_NORMAL:
+ case SCHED_BATCH:
+ case SCHED_IDLE:
++ case SCHED_EXT:
+ ret = 0;
+ break;
+ }
+@@ -1629,6 +1654,7 @@ SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
+ case SCHED_NORMAL:
+ case SCHED_BATCH:
+ case SCHED_IDLE:
++ case SCHED_EXT:
+ ret = 0;
+ }
+ return ret;
diff --git a/lib/dump_stack.c b/lib/dump_stack.c
-index 222c6d6c8281..9581ef4efec5 100644
+index 1a996fbbf50a..388da1aea14a 100644
--- a/lib/dump_stack.c
+++ b/lib/dump_stack.c
-@@ -68,6 +68,7 @@ void dump_stack_print_info(const char *log_lvl)
+@@ -73,6 +73,7 @@ void dump_stack_print_info(const char *log_lvl)
print_worker_info(log_lvl, current);
print_stop_info(log_lvl, current);
@@ -8479,7 +9783,7 @@ diff --git a/tools/Makefile b/tools/Makefile
index 276f5d0d53a4..278d24723b74 100644
--- a/tools/Makefile
+++ b/tools/Makefile
-@@ -28,6 +28,7 @@ include scripts/Makefile.include
+@@ -28,6 +28,7 @@ help:
@echo ' pci - PCI tools'
@echo ' perf - Linux performance measurement and analysis tool'
@echo ' selftests - various kernel selftests'
@@ -8497,7 +9801,7 @@ index 276f5d0d53a4..278d24723b74 100644
selftests: FORCE
$(call descend,testing/$@)
-@@ -184,6 +188,9 @@ install: acpi_install counter_install cpupower_install gpio_install \
+@@ -184,6 +188,9 @@ perf_clean:
$(Q)mkdir -p $(PERF_O) .
$(Q)$(MAKE) --no-print-directory -C perf O=$(PERF_O) subdir= clean
@@ -8526,7 +9830,7 @@ index 000000000000..d6264fe1c8cd
+build/
diff --git a/tools/sched_ext/Makefile b/tools/sched_ext/Makefile
new file mode 100644
-index 000000000000..bf7e108f5ae1
+index 000000000000..ca3815e572d8
--- /dev/null
+++ b/tools/sched_ext/Makefile
@@ -0,0 +1,246 @@
@@ -8708,7 +10012,7 @@ index 000000000000..bf7e108f5ae1
+
+SCX_COMMON_DEPS := include/scx/common.h include/scx/user_exit_info.h | $(BINDIR)
+
-+c-sched-targets = scx_simple scx_qmap scx_central
++c-sched-targets = scx_simple scx_qmap scx_central scx_flatcg
+
+$(addprefix $(BINDIR)/,$(c-sched-targets)): \
+ $(BINDIR)/%: \
@@ -8778,10 +10082,10 @@ index 000000000000..bf7e108f5ae1
+.SECONDARY:
diff --git a/tools/sched_ext/README.md b/tools/sched_ext/README.md
new file mode 100644
-index 000000000000..8efe70cc4363
+index 000000000000..16a42e4060f6
--- /dev/null
+++ b/tools/sched_ext/README.md
-@@ -0,0 +1,258 @@
+@@ -0,0 +1,270 @@
+SCHED_EXT EXAMPLE SCHEDULERS
+============================
+
@@ -8976,6 +10280,18 @@ index 000000000000..8efe70cc4363
+infinite slices and no timer ticks allows the VM to avoid unnecessary expensive
+vmexits.
+
++## scx_flatcg
++
++A flattened cgroup hierarchy scheduler. This scheduler implements hierarchical
++weight-based cgroup CPU control by flattening the cgroup hierarchy into a single
++layer, by compounding the active weight share at each level. The effect of this
++is a much more performant CPU controller, which does not need to descend down
++cgroup trees in order to properly compute a cgroup's share.
++
++Similar to scx_simple, in limited scenarios, this scheduler can perform
++reasonably well on single socket-socket systems with a unified L3 cache and show
++significantly lowered hierarchical scheduling overhead.
++
+
+# Troubleshooting
+
@@ -9059,10 +10375,10 @@ index 000000000000..ad7d139ce907
+ */
diff --git a/tools/sched_ext/include/scx/common.bpf.h b/tools/sched_ext/include/scx/common.bpf.h
new file mode 100644
-index 000000000000..20280df62857
+index 000000000000..225f61f9bfca
--- /dev/null
+++ b/tools/sched_ext/include/scx/common.bpf.h
-@@ -0,0 +1,401 @@
+@@ -0,0 +1,427 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2022 Meta Platforms, Inc. and affiliates.
@@ -9072,7 +10388,13 @@ index 000000000000..20280df62857
+#ifndef __SCX_COMMON_BPF_H
+#define __SCX_COMMON_BPF_H
+
++#ifdef LSP
++#define __bpf__
++#include "../vmlinux/vmlinux.h"
++#else
+#include "vmlinux.h"
++#endif
++
+#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_tracing.h>
+#include <asm-generic/errno.h>
@@ -9100,6 +10422,10 @@ index 000000000000..20280df62857
+u32 scx_bpf_dispatch_nr_slots(void) __ksym;
+void scx_bpf_dispatch_cancel(void) __ksym;
+bool scx_bpf_consume(u64 dsq_id) __ksym;
++void scx_bpf_dispatch_from_dsq_set_slice(struct bpf_iter_scx_dsq *it__iter, u64 slice) __ksym;
++void scx_bpf_dispatch_from_dsq_set_vtime(struct bpf_iter_scx_dsq *it__iter, u64 vtime) __ksym;
++bool scx_bpf_dispatch_from_dsq(struct bpf_iter_scx_dsq *it__iter, struct task_struct *p, u64 dsq_id, u64 enq_flags) __ksym __weak;
++bool scx_bpf_dispatch_vtime_from_dsq(struct bpf_iter_scx_dsq *it__iter, struct task_struct *p, u64 dsq_id, u64 enq_flags) __ksym __weak;
+u32 scx_bpf_reenqueue_local(void) __ksym;
+void scx_bpf_kick_cpu(s32 cpu, u64 flags) __ksym;
+s32 scx_bpf_dsq_nr_queued(u64 dsq_id) __ksym;
@@ -9126,6 +10452,13 @@ index 000000000000..20280df62857
+bool scx_bpf_task_running(const struct task_struct *p) __ksym;
+s32 scx_bpf_task_cpu(const struct task_struct *p) __ksym;
+struct rq *scx_bpf_cpu_rq(s32 cpu) __ksym;
++struct cgroup *scx_bpf_task_cgroup(struct task_struct *p) __ksym;
++
++/*
++ * Use the following as @it__iter when calling
++ * scx_bpf_dispatch[_vtime]_from_dsq() from within bpf_for_each() loops.
++ */
++#define BPF_FOR_EACH_ITER (&___it)
+
+static inline __attribute__((format(printf, 1, 2)))
+void ___scx_bpf_bstr_format_checker(const char *fmt, ...) {}
@@ -9363,6 +10696,15 @@ index 000000000000..20280df62857
+u32 bpf_cpumask_any_distribute(const struct cpumask *cpumask) __ksym;
+u32 bpf_cpumask_any_and_distribute(const struct cpumask *src1,
+ const struct cpumask *src2) __ksym;
++u32 bpf_cpumask_weight(const struct cpumask *cpumask) __ksym;
++
++/*
++ * Access a cpumask in read-only mode (typically to check bits).
++ */
++const struct cpumask *cast_mask(struct bpf_cpumask *mask)
++{
++ return (const struct cpumask *)mask;
++}
+
+/* rcu */
+void bpf_rcu_read_lock(void) __ksym;
@@ -9547,10 +10889,10 @@ index 000000000000..5b0f90152152
+#endif /* __SCHED_EXT_COMMON_H */
diff --git a/tools/sched_ext/include/scx/compat.bpf.h b/tools/sched_ext/include/scx/compat.bpf.h
new file mode 100644
-index 000000000000..3d2fe1208900
+index 000000000000..e5afe9efd3f3
--- /dev/null
+++ b/tools/sched_ext/include/scx/compat.bpf.h
-@@ -0,0 +1,28 @@
+@@ -0,0 +1,47 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2024 Meta Platforms, Inc. and affiliates.
@@ -9568,6 +10910,25 @@ index 000000000000..3d2fe1208900
+ __ret; \
+})
+
++/* v6.12: 819513666966 ("sched_ext: Add cgroup support") */
++#define __COMPAT_scx_bpf_task_cgroup(p) \
++ (bpf_ksym_exists(scx_bpf_task_cgroup) ? \
++ scx_bpf_task_cgroup((p)) : NULL)
++
++/* v6.12: 4c30f5ce4f7a ("sched_ext: Implement scx_bpf_dispatch[_vtime]_from_dsq()") */
++#define __COMPAT_scx_bpf_dispatch_from_dsq_set_slice(it, slice) \
++ (bpf_ksym_exists(scx_bpf_dispatch_from_dsq_set_slice) ? \
++ scx_bpf_dispatch_from_dsq_set_slice((it), (slice)) : (void)0)
++#define __COMPAT_scx_bpf_dispatch_from_dsq_set_vtime(it, vtime) \
++ (bpf_ksym_exists(scx_bpf_dispatch_from_dsq_set_vtime) ? \
++ scx_bpf_dispatch_from_dsq_set_vtime((it), (vtime)) : (void)0)
++#define __COMPAT_scx_bpf_dispatch_from_dsq(it, p, dsq_id, enq_flags) \
++ (bpf_ksym_exists(scx_bpf_dispatch_from_dsq) ? \
++ scx_bpf_dispatch_from_dsq((it), (p), (dsq_id), (enq_flags)) : false)
++#define __COMPAT_scx_bpf_dispatch_vtime_from_dsq(it, p, dsq_id, enq_flags) \
++ (bpf_ksym_exists(scx_bpf_dispatch_vtime_from_dsq) ? \
++ scx_bpf_dispatch_vtime_from_dsq((it), (p), (dsq_id), (enq_flags)) : false)
++
+/*
+ * Define sched_ext_ops. This may be expanded to define multiple variants for
+ * backward compatibility. See compat.h::SCX_OPS_LOAD/ATTACH().
@@ -9581,10 +10942,10 @@ index 000000000000..3d2fe1208900
+#endif /* __SCX_COMPAT_BPF_H */
diff --git a/tools/sched_ext/include/scx/compat.h b/tools/sched_ext/include/scx/compat.h
new file mode 100644
-index 000000000000..1bf8eddf20c2
+index 000000000000..cc56ff9aa252
--- /dev/null
+++ b/tools/sched_ext/include/scx/compat.h
-@@ -0,0 +1,187 @@
+@@ -0,0 +1,186 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2024 Meta Platforms, Inc. and affiliates.
@@ -9753,14 +11114,13 @@ index 000000000000..1bf8eddf20c2
+ * To maintain compatibility with older libbpf while avoiding trying to attach
+ * twice, disable the autoattach feature on newer libbpf.
+ */
-+/* BACKPORT - bpf_mpa__set_autoattach() not available yet, commented out */
-+/*#if LIBBPF_MAJOR_VERSION > 1 || \
++#if LIBBPF_MAJOR_VERSION > 1 || \
+ (LIBBPF_MAJOR_VERSION == 1 && LIBBPF_MINOR_VERSION >= 5)
+#define __SCX_OPS_DISABLE_AUTOATTACH(__skel, __ops_name) \
+ bpf_map__set_autoattach((__skel)->maps.__ops_name, false)
-+#else*/
++#else
+#define __SCX_OPS_DISABLE_AUTOATTACH(__skel, __ops_name) do {} while (0)
-+/*#endif*/
++#endif
+
+#define SCX_OPS_ATTACH(__skel, __ops_name, __scx_name) ({ \
+ struct bpf_link *__link; \
@@ -9774,10 +11134,10 @@ index 000000000000..1bf8eddf20c2
+#endif /* __SCX_COMPAT_H */
diff --git a/tools/sched_ext/include/scx/user_exit_info.h b/tools/sched_ext/include/scx/user_exit_info.h
new file mode 100644
-index 000000000000..891693ee604e
+index 000000000000..8ce2734402e1
--- /dev/null
+++ b/tools/sched_ext/include/scx/user_exit_info.h
-@@ -0,0 +1,111 @@
+@@ -0,0 +1,115 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Define struct user_exit_info which is shared between BPF and userspace parts
@@ -9805,7 +11165,11 @@ index 000000000000..891693ee604e
+
+#ifdef __bpf__
+
++#ifdef LSP
++#include "../vmlinux/vmlinux.h"
++#else
+#include "vmlinux.h"
++#endif
+#include <bpf/bpf_core_read.h>
+
+#define UEI_DEFINE(__name) \
@@ -9891,7 +11255,7 @@ index 000000000000..891693ee604e
+#endif /* __USER_EXIT_INFO_H */
diff --git a/tools/sched_ext/scx_central.bpf.c b/tools/sched_ext/scx_central.bpf.c
new file mode 100644
-index 000000000000..1d8fd570eaa7
+index 000000000000..8dd8eb73b6b8
--- /dev/null
+++ b/tools/sched_ext/scx_central.bpf.c
@@ -0,0 +1,361 @@
@@ -10095,7 +11459,7 @@ index 000000000000..1d8fd570eaa7
+
+ /* central's gimme is never set */
+ gimme = ARRAY_ELEM_PTR(cpu_gimme_task, cpu, nr_cpu_ids);
-+ if (gimme && !*gimme)
++ if (!gimme || !*gimme)
+ continue;
+
+ if (dispatch_to_cpu(cpu))
@@ -10397,12 +11761,1271 @@ index 000000000000..21deea320bd7
+ goto restart;
+ return 0;
+}
+diff --git a/tools/sched_ext/scx_flatcg.bpf.c b/tools/sched_ext/scx_flatcg.bpf.c
+new file mode 100644
+index 000000000000..b722baf6da4b
+--- /dev/null
++++ b/tools/sched_ext/scx_flatcg.bpf.c
+@@ -0,0 +1,957 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++/*
++ * A demo sched_ext flattened cgroup hierarchy scheduler. It implements
++ * hierarchical weight-based cgroup CPU control by flattening the cgroup
++ * hierarchy into a single layer by compounding the active weight share at each
++ * level. Consider the following hierarchy with weights in parentheses:
++ *
++ * R + A (100) + B (100)
++ * | \ C (100)
++ * \ D (200)
++ *
++ * Ignoring the root and threaded cgroups, only B, C and D can contain tasks.
++ * Let's say all three have runnable tasks. The total share that each of these
++ * three cgroups is entitled to can be calculated by compounding its share at
++ * each level.
++ *
++ * For example, B is competing against C and in that competition its share is
++ * 100/(100+100) == 1/2. At its parent level, A is competing against D and A's
++ * share in that competition is 100/(200+100) == 1/3. B's eventual share in the
++ * system can be calculated by multiplying the two shares, 1/2 * 1/3 == 1/6. C's
++ * eventual shaer is the same at 1/6. D is only competing at the top level and
++ * its share is 200/(100+200) == 2/3.
++ *
++ * So, instead of hierarchically scheduling level-by-level, we can consider it
++ * as B, C and D competing each other with respective share of 1/6, 1/6 and 2/3
++ * and keep updating the eventual shares as the cgroups' runnable states change.
++ *
++ * This flattening of hierarchy can bring a substantial performance gain when
++ * the cgroup hierarchy is nested multiple levels. in a simple benchmark using
++ * wrk[8] on apache serving a CGI script calculating sha1sum of a small file, it
++ * outperforms CFS by ~3% with CPU controller disabled and by ~10% with two
++ * apache instances competing with 2:1 weight ratio nested four level deep.
++ *
++ * However, the gain comes at the cost of not being able to properly handle
++ * thundering herd of cgroups. For example, if many cgroups which are nested
++ * behind a low priority parent cgroup wake up around the same time, they may be
++ * able to consume more CPU cycles than they are entitled to. In many use cases,
++ * this isn't a real concern especially given the performance gain. Also, there
++ * are ways to mitigate the problem further by e.g. introducing an extra
++ * scheduling layer on cgroup delegation boundaries.
++ *
++ * The scheduler first picks the cgroup to run and then schedule the tasks
++ * within by using nested weighted vtime scheduling by default. The
++ * cgroup-internal scheduling can be switched to FIFO with the -f option.
++ */
++#include <scx/common.bpf.h>
++#include "scx_flatcg.h"
++
++/*
++ * Maximum amount of retries to find a valid cgroup.
++ */
++enum {
++ FALLBACK_DSQ = 0,
++ CGROUP_MAX_RETRIES = 1024,
++};
++
++char _license[] SEC("license") = "GPL";
++
++const volatile u32 nr_cpus = 32; /* !0 for veristat, set during init */
++const volatile u64 cgrp_slice_ns = SCX_SLICE_DFL;
++const volatile bool fifo_sched;
++
++u64 cvtime_now;
++UEI_DEFINE(uei);
++
++struct {
++ __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
++ __type(key, u32);
++ __type(value, u64);
++ __uint(max_entries, FCG_NR_STATS);
++} stats SEC(".maps");
++
++static void stat_inc(enum fcg_stat_idx idx)
++{
++ u32 idx_v = idx;
++
++ u64 *cnt_p = bpf_map_lookup_elem(&stats, &idx_v);
++ if (cnt_p)
++ (*cnt_p)++;
++}
++
++struct fcg_cpu_ctx {
++ u64 cur_cgid;
++ u64 cur_at;
++};
++
++struct {
++ __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
++ __type(key, u32);
++ __type(value, struct fcg_cpu_ctx);
++ __uint(max_entries, 1);
++} cpu_ctx SEC(".maps");
++
++struct {
++ __uint(type, BPF_MAP_TYPE_CGRP_STORAGE);
++ __uint(map_flags, BPF_F_NO_PREALLOC);
++ __type(key, int);
++ __type(value, struct fcg_cgrp_ctx);
++} cgrp_ctx SEC(".maps");
++
++struct cgv_node {
++ struct bpf_rb_node rb_node;
++ __u64 cvtime;
++ __u64 cgid;
++};
++
++private(CGV_TREE) struct bpf_spin_lock cgv_tree_lock;
++private(CGV_TREE) struct bpf_rb_root cgv_tree __contains(cgv_node, rb_node);
++
++struct cgv_node_stash {
++ struct cgv_node __kptr *node;
++};
++
++struct {
++ __uint(type, BPF_MAP_TYPE_HASH);
++ __uint(max_entries, 16384);
++ __type(key, __u64);
++ __type(value, struct cgv_node_stash);
++} cgv_node_stash SEC(".maps");
++
++struct fcg_task_ctx {
++ u64 bypassed_at;
++};
++
++struct {
++ __uint(type, BPF_MAP_TYPE_TASK_STORAGE);
++ __uint(map_flags, BPF_F_NO_PREALLOC);
++ __type(key, int);
++ __type(value, struct fcg_task_ctx);
++} task_ctx SEC(".maps");
++
++/* gets inc'd on weight tree changes to expire the cached hweights */
++u64 hweight_gen = 1;
++
++static u64 div_round_up(u64 dividend, u64 divisor)
++{
++ return (dividend + divisor - 1) / divisor;
++}
++
++static bool vtime_before(u64 a, u64 b)
++{
++ return (s64)(a - b) < 0;
++}
++
++static bool cgv_node_less(struct bpf_rb_node *a, const struct bpf_rb_node *b)
++{
++ struct cgv_node *cgc_a, *cgc_b;
++
++ cgc_a = container_of(a, struct cgv_node, rb_node);
++ cgc_b = container_of(b, struct cgv_node, rb_node);
++
++ return cgc_a->cvtime < cgc_b->cvtime;
++}
++
++static struct fcg_cpu_ctx *find_cpu_ctx(void)
++{
++ struct fcg_cpu_ctx *cpuc;
++ u32 idx = 0;
++
++ cpuc = bpf_map_lookup_elem(&cpu_ctx, &idx);
++ if (!cpuc) {
++ scx_bpf_error("cpu_ctx lookup failed");
++ return NULL;
++ }
++ return cpuc;
++}
++
++static struct fcg_cgrp_ctx *find_cgrp_ctx(struct cgroup *cgrp)
++{
++ struct fcg_cgrp_ctx *cgc;
++
++ cgc = bpf_cgrp_storage_get(&cgrp_ctx, cgrp, 0, 0);
++ if (!cgc) {
++ scx_bpf_error("cgrp_ctx lookup failed for cgid %llu", cgrp->kn->id);
++ return NULL;
++ }
++ return cgc;
++}
++
++static struct fcg_cgrp_ctx *find_ancestor_cgrp_ctx(struct cgroup *cgrp, int level)
++{
++ struct fcg_cgrp_ctx *cgc;
++
++ cgrp = bpf_cgroup_ancestor(cgrp, level);
++ if (!cgrp) {
++ scx_bpf_error("ancestor cgroup lookup failed");
++ return NULL;
++ }
++
++ cgc = find_cgrp_ctx(cgrp);
++ if (!cgc)
++ scx_bpf_error("ancestor cgrp_ctx lookup failed");
++ bpf_cgroup_release(cgrp);
++ return cgc;
++}
++
++static void cgrp_refresh_hweight(struct cgroup *cgrp, struct fcg_cgrp_ctx *cgc)
++{
++ int level;
++
++ if (!cgc->nr_active) {
++ stat_inc(FCG_STAT_HWT_SKIP);
++ return;
++ }
++
++ if (cgc->hweight_gen == hweight_gen) {
++ stat_inc(FCG_STAT_HWT_CACHE);
++ return;
++ }
++
++ stat_inc(FCG_STAT_HWT_UPDATES);
++ bpf_for(level, 0, cgrp->level + 1) {
++ struct fcg_cgrp_ctx *cgc;
++ bool is_active;
++
++ cgc = find_ancestor_cgrp_ctx(cgrp, level);
++ if (!cgc)
++ break;
++
++ if (!level) {
++ cgc->hweight = FCG_HWEIGHT_ONE;
++ cgc->hweight_gen = hweight_gen;
++ } else {
++ struct fcg_cgrp_ctx *pcgc;
++
++ pcgc = find_ancestor_cgrp_ctx(cgrp, level - 1);
++ if (!pcgc)
++ break;
++
++ /*
++ * We can be opportunistic here and not grab the
++ * cgv_tree_lock and deal with the occasional races.
++ * However, hweight updates are already cached and
++ * relatively low-frequency. Let's just do the
++ * straightforward thing.
++ */
++ bpf_spin_lock(&cgv_tree_lock);
++ is_active = cgc->nr_active;
++ if (is_active) {
++ cgc->hweight_gen = pcgc->hweight_gen;
++ cgc->hweight =
++ div_round_up(pcgc->hweight * cgc->weight,
++ pcgc->child_weight_sum);
++ }
++ bpf_spin_unlock(&cgv_tree_lock);
++
++ if (!is_active) {
++ stat_inc(FCG_STAT_HWT_RACE);
++ break;
++ }
++ }
++ }
++}
++
++static void cgrp_cap_budget(struct cgv_node *cgv_node, struct fcg_cgrp_ctx *cgc)
++{
++ u64 delta, cvtime, max_budget;
++
++ /*
++ * A node which is on the rbtree can't be pointed to from elsewhere yet
++ * and thus can't be updated and repositioned. Instead, we collect the
++ * vtime deltas separately and apply it asynchronously here.
++ */
++ delta = __sync_fetch_and_sub(&cgc->cvtime_delta, cgc->cvtime_delta);
++ cvtime = cgv_node->cvtime + delta;
++
++ /*
++ * Allow a cgroup to carry the maximum budget proportional to its
++ * hweight such that a full-hweight cgroup can immediately take up half
++ * of the CPUs at the most while staying at the front of the rbtree.
++ */
++ max_budget = (cgrp_slice_ns * nr_cpus * cgc->hweight) /
++ (2 * FCG_HWEIGHT_ONE);
++ if (vtime_before(cvtime, cvtime_now - max_budget))
++ cvtime = cvtime_now - max_budget;
++
++ cgv_node->cvtime = cvtime;
++}
++
++static void cgrp_enqueued(struct cgroup *cgrp, struct fcg_cgrp_ctx *cgc)
++{
++ struct cgv_node_stash *stash;
++ struct cgv_node *cgv_node;
++ u64 cgid = cgrp->kn->id;
++
++ /* paired with cmpxchg in try_pick_next_cgroup() */
++ if (__sync_val_compare_and_swap(&cgc->queued, 0, 1)) {
++ stat_inc(FCG_STAT_ENQ_SKIP);
++ return;
++ }
++
++ stash = bpf_map_lookup_elem(&cgv_node_stash, &cgid);
++ if (!stash) {
++ scx_bpf_error("cgv_node lookup failed for cgid %llu", cgid);
++ return;
++ }
++
++ /* NULL if the node is already on the rbtree */
++ cgv_node = bpf_kptr_xchg(&stash->node, NULL);
++ if (!cgv_node) {
++ stat_inc(FCG_STAT_ENQ_RACE);
++ return;
++ }
++
++ bpf_spin_lock(&cgv_tree_lock);
++ cgrp_cap_budget(cgv_node, cgc);
++ bpf_rbtree_add(&cgv_tree, &cgv_node->rb_node, cgv_node_less);
++ bpf_spin_unlock(&cgv_tree_lock);
++}
++
++static void set_bypassed_at(struct task_struct *p, struct fcg_task_ctx *taskc)
++{
++ /*
++ * Tell fcg_stopping() that this bypassed the regular scheduling path
++ * and should be force charged to the cgroup. 0 is used to indicate that
++ * the task isn't bypassing, so if the current runtime is 0, go back by
++ * one nanosecond.
++ */
++ taskc->bypassed_at = p->se.sum_exec_runtime ?: (u64)-1;
++}
++
++s32 BPF_STRUCT_OPS(fcg_select_cpu, struct task_struct *p, s32 prev_cpu, u64 wake_flags)
++{
++ struct fcg_task_ctx *taskc;
++ bool is_idle = false;
++ s32 cpu;
++
++ cpu = scx_bpf_select_cpu_dfl(p, prev_cpu, wake_flags, &is_idle);
++
++ taskc = bpf_task_storage_get(&task_ctx, p, 0, 0);
++ if (!taskc) {
++ scx_bpf_error("task_ctx lookup failed");
++ return cpu;
++ }
++
++ /*
++ * If select_cpu_dfl() is recommending local enqueue, the target CPU is
++ * idle. Follow it and charge the cgroup later in fcg_stopping() after
++ * the fact.
++ */
++ if (is_idle) {
++ set_bypassed_at(p, taskc);
++ stat_inc(FCG_STAT_LOCAL);
++ scx_bpf_dispatch(p, SCX_DSQ_LOCAL, SCX_SLICE_DFL, 0);
++ }
++
++ return cpu;
++}
++
++void BPF_STRUCT_OPS(fcg_enqueue, struct task_struct *p, u64 enq_flags)
++{
++ struct fcg_task_ctx *taskc;
++ struct cgroup *cgrp;
++ struct fcg_cgrp_ctx *cgc;
++
++ taskc = bpf_task_storage_get(&task_ctx, p, 0, 0);
++ if (!taskc) {
++ scx_bpf_error("task_ctx lookup failed");
++ return;
++ }
++
++ /*
++ * Use the direct dispatching and force charging to deal with tasks with
++ * custom affinities so that we don't have to worry about per-cgroup
++ * dq's containing tasks that can't be executed from some CPUs.
++ */
++ if (p->nr_cpus_allowed != nr_cpus) {
++ set_bypassed_at(p, taskc);
++
++ /*
++ * The global dq is deprioritized as we don't want to let tasks
++ * to boost themselves by constraining its cpumask. The
++ * deprioritization is rather severe, so let's not apply that to
++ * per-cpu kernel threads. This is ham-fisted. We probably wanna
++ * implement per-cgroup fallback dq's instead so that we have
++ * more control over when tasks with custom cpumask get issued.
++ */
++ if (p->nr_cpus_allowed == 1 && (p->flags & PF_KTHREAD)) {
++ stat_inc(FCG_STAT_LOCAL);
++ scx_bpf_dispatch(p, SCX_DSQ_LOCAL, SCX_SLICE_DFL, enq_flags);
++ } else {
++ stat_inc(FCG_STAT_GLOBAL);
++ scx_bpf_dispatch(p, FALLBACK_DSQ, SCX_SLICE_DFL, enq_flags);
++ }
++ return;
++ }
++
++ cgrp = __COMPAT_scx_bpf_task_cgroup(p);
++ cgc = find_cgrp_ctx(cgrp);
++ if (!cgc)
++ goto out_release;
++
++ if (fifo_sched) {
++ scx_bpf_dispatch(p, cgrp->kn->id, SCX_SLICE_DFL, enq_flags);
++ } else {
++ u64 tvtime = p->scx.dsq_vtime;
++
++ /*
++ * Limit the amount of budget that an idling task can accumulate
++ * to one slice.
++ */
++ if (vtime_before(tvtime, cgc->tvtime_now - SCX_SLICE_DFL))
++ tvtime = cgc->tvtime_now - SCX_SLICE_DFL;
++
++ scx_bpf_dispatch_vtime(p, cgrp->kn->id, SCX_SLICE_DFL,
++ tvtime, enq_flags);
++ }
++
++ cgrp_enqueued(cgrp, cgc);
++out_release:
++ bpf_cgroup_release(cgrp);
++}
++
++/*
++ * Walk the cgroup tree to update the active weight sums as tasks wake up and
++ * sleep. The weight sums are used as the base when calculating the proportion a
++ * given cgroup or task is entitled to at each level.
++ */
++static void update_active_weight_sums(struct cgroup *cgrp, bool runnable)
++{
++ struct fcg_cgrp_ctx *cgc;
++ bool updated = false;
++ int idx;
++
++ cgc = find_cgrp_ctx(cgrp);
++ if (!cgc)
++ return;
++
++ /*
++ * In most cases, a hot cgroup would have multiple threads going to
++ * sleep and waking up while the whole cgroup stays active. In leaf
++ * cgroups, ->nr_runnable which is updated with __sync operations gates
++ * ->nr_active updates, so that we don't have to grab the cgv_tree_lock
++ * repeatedly for a busy cgroup which is staying active.
++ */
++ if (runnable) {
++ if (__sync_fetch_and_add(&cgc->nr_runnable, 1))
++ return;
++ stat_inc(FCG_STAT_ACT);
++ } else {
++ if (__sync_sub_and_fetch(&cgc->nr_runnable, 1))
++ return;
++ stat_inc(FCG_STAT_DEACT);
++ }
++
++ /*
++ * If @cgrp is becoming runnable, its hweight should be refreshed after
++ * it's added to the weight tree so that enqueue has the up-to-date
++ * value. If @cgrp is becoming quiescent, the hweight should be
++ * refreshed before it's removed from the weight tree so that the usage
++ * charging which happens afterwards has access to the latest value.
++ */
++ if (!runnable)
++ cgrp_refresh_hweight(cgrp, cgc);
++
++ /* propagate upwards */
++ bpf_for(idx, 0, cgrp->level) {
++ int level = cgrp->level - idx;
++ struct fcg_cgrp_ctx *cgc, *pcgc = NULL;
++ bool propagate = false;
++
++ cgc = find_ancestor_cgrp_ctx(cgrp, level);
++ if (!cgc)
++ break;
++ if (level) {
++ pcgc = find_ancestor_cgrp_ctx(cgrp, level - 1);
++ if (!pcgc)
++ break;
++ }
++
++ /*
++ * We need the propagation protected by a lock to synchronize
++ * against weight changes. There's no reason to drop the lock at
++ * each level but bpf_spin_lock() doesn't want any function
++ * calls while locked.
++ */
++ bpf_spin_lock(&cgv_tree_lock);
++
++ if (runnable) {
++ if (!cgc->nr_active++) {
++ updated = true;
++ if (pcgc) {
++ propagate = true;
++ pcgc->child_weight_sum += cgc->weight;
++ }
++ }
++ } else {
++ if (!--cgc->nr_active) {
++ updated = true;
++ if (pcgc) {
++ propagate = true;
++ pcgc->child_weight_sum -= cgc->weight;
++ }
++ }
++ }
++
++ bpf_spin_unlock(&cgv_tree_lock);
++
++ if (!propagate)
++ break;
++ }
++
++ if (updated)
++ __sync_fetch_and_add(&hweight_gen, 1);
++
++ if (runnable)
++ cgrp_refresh_hweight(cgrp, cgc);
++}
++
++void BPF_STRUCT_OPS(fcg_runnable, struct task_struct *p, u64 enq_flags)
++{
++ struct cgroup *cgrp;
++
++ cgrp = __COMPAT_scx_bpf_task_cgroup(p);
++ update_active_weight_sums(cgrp, true);
++ bpf_cgroup_release(cgrp);
++}
++
++void BPF_STRUCT_OPS(fcg_running, struct task_struct *p)
++{
++ struct cgroup *cgrp;
++ struct fcg_cgrp_ctx *cgc;
++
++ if (fifo_sched)
++ return;
++
++ cgrp = __COMPAT_scx_bpf_task_cgroup(p);
++ cgc = find_cgrp_ctx(cgrp);
++ if (cgc) {
++ /*
++ * @cgc->tvtime_now always progresses forward as tasks start
++ * executing. The test and update can be performed concurrently
++ * from multiple CPUs and thus racy. Any error should be
++ * contained and temporary. Let's just live with it.
++ */
++ if (vtime_before(cgc->tvtime_now, p->scx.dsq_vtime))
++ cgc->tvtime_now = p->scx.dsq_vtime;
++ }
++ bpf_cgroup_release(cgrp);
++}
++
++void BPF_STRUCT_OPS(fcg_stopping, struct task_struct *p, bool runnable)
++{
++ struct fcg_task_ctx *taskc;
++ struct cgroup *cgrp;
++ struct fcg_cgrp_ctx *cgc;
++
++ /*
++ * Scale the execution time by the inverse of the weight and charge.
++ *
++ * Note that the default yield implementation yields by setting
++ * @p->scx.slice to zero and the following would treat the yielding task
++ * as if it has consumed all its slice. If this penalizes yielding tasks
++ * too much, determine the execution time by taking explicit timestamps
++ * instead of depending on @p->scx.slice.
++ */
++ if (!fifo_sched)
++ p->scx.dsq_vtime +=
++ (SCX_SLICE_DFL - p->scx.slice) * 100 / p->scx.weight;
++
++ taskc = bpf_task_storage_get(&task_ctx, p, 0, 0);
++ if (!taskc) {
++ scx_bpf_error("task_ctx lookup failed");
++ return;
++ }
++
++ if (!taskc->bypassed_at)
++ return;
++
++ cgrp = __COMPAT_scx_bpf_task_cgroup(p);
++ cgc = find_cgrp_ctx(cgrp);
++ if (cgc) {
++ __sync_fetch_and_add(&cgc->cvtime_delta,
++ p->se.sum_exec_runtime - taskc->bypassed_at);
++ taskc->bypassed_at = 0;
++ }
++ bpf_cgroup_release(cgrp);
++}
++
++void BPF_STRUCT_OPS(fcg_quiescent, struct task_struct *p, u64 deq_flags)
++{
++ struct cgroup *cgrp;
++
++ cgrp = __COMPAT_scx_bpf_task_cgroup(p);
++ update_active_weight_sums(cgrp, false);
++ bpf_cgroup_release(cgrp);
++}
++
++void BPF_STRUCT_OPS(fcg_cgroup_set_weight, struct cgroup *cgrp, u32 weight)
++{
++ struct fcg_cgrp_ctx *cgc, *pcgc = NULL;
++
++ cgc = find_cgrp_ctx(cgrp);
++ if (!cgc)
++ return;
++
++ if (cgrp->level) {
++ pcgc = find_ancestor_cgrp_ctx(cgrp, cgrp->level - 1);
++ if (!pcgc)
++ return;
++ }
++
++ bpf_spin_lock(&cgv_tree_lock);
++ if (pcgc && cgc->nr_active)
++ pcgc->child_weight_sum += (s64)weight - cgc->weight;
++ cgc->weight = weight;
++ bpf_spin_unlock(&cgv_tree_lock);
++}
++
++static bool try_pick_next_cgroup(u64 *cgidp)
++{
++ struct bpf_rb_node *rb_node;
++ struct cgv_node_stash *stash;
++ struct cgv_node *cgv_node;
++ struct fcg_cgrp_ctx *cgc;
++ struct cgroup *cgrp;
++ u64 cgid;
++
++ /* pop the front cgroup and wind cvtime_now accordingly */
++ bpf_spin_lock(&cgv_tree_lock);
++
++ rb_node = bpf_rbtree_first(&cgv_tree);
++ if (!rb_node) {
++ bpf_spin_unlock(&cgv_tree_lock);
++ stat_inc(FCG_STAT_PNC_NO_CGRP);
++ *cgidp = 0;
++ return true;
++ }
++
++ rb_node = bpf_rbtree_remove(&cgv_tree, rb_node);
++ bpf_spin_unlock(&cgv_tree_lock);
++
++ if (!rb_node) {
++ /*
++ * This should never happen. bpf_rbtree_first() was called
++ * above while the tree lock was held, so the node should
++ * always be present.
++ */
++ scx_bpf_error("node could not be removed");
++ return true;
++ }
++
++ cgv_node = container_of(rb_node, struct cgv_node, rb_node);
++ cgid = cgv_node->cgid;
++
++ if (vtime_before(cvtime_now, cgv_node->cvtime))
++ cvtime_now = cgv_node->cvtime;
++
++ /*
++ * If lookup fails, the cgroup's gone. Free and move on. See
++ * fcg_cgroup_exit().
++ */
++ cgrp = bpf_cgroup_from_id(cgid);
++ if (!cgrp) {
++ stat_inc(FCG_STAT_PNC_GONE);
++ goto out_free;
++ }
++
++ cgc = bpf_cgrp_storage_get(&cgrp_ctx, cgrp, 0, 0);
++ if (!cgc) {
++ bpf_cgroup_release(cgrp);
++ stat_inc(FCG_STAT_PNC_GONE);
++ goto out_free;
++ }
++
++ if (!scx_bpf_consume(cgid)) {
++ bpf_cgroup_release(cgrp);
++ stat_inc(FCG_STAT_PNC_EMPTY);
++ goto out_stash;
++ }
++
++ /*
++ * Successfully consumed from the cgroup. This will be our current
++ * cgroup for the new slice. Refresh its hweight.
++ */
++ cgrp_refresh_hweight(cgrp, cgc);
++
++ bpf_cgroup_release(cgrp);
++
++ /*
++ * As the cgroup may have more tasks, add it back to the rbtree. Note
++ * that here we charge the full slice upfront and then exact later
++ * according to the actual consumption. This prevents lowpri thundering
++ * herd from saturating the machine.
++ */
++ bpf_spin_lock(&cgv_tree_lock);
++ cgv_node->cvtime += cgrp_slice_ns * FCG_HWEIGHT_ONE / (cgc->hweight ?: 1);
++ cgrp_cap_budget(cgv_node, cgc);
++ bpf_rbtree_add(&cgv_tree, &cgv_node->rb_node, cgv_node_less);
++ bpf_spin_unlock(&cgv_tree_lock);
++
++ *cgidp = cgid;
++ stat_inc(FCG_STAT_PNC_NEXT);
++ return true;
++
++out_stash:
++ stash = bpf_map_lookup_elem(&cgv_node_stash, &cgid);
++ if (!stash) {
++ stat_inc(FCG_STAT_PNC_GONE);
++ goto out_free;
++ }
++
++ /*
++ * Paired with cmpxchg in cgrp_enqueued(). If they see the following
++ * transition, they'll enqueue the cgroup. If they are earlier, we'll
++ * see their task in the dq below and requeue the cgroup.
++ */
++ __sync_val_compare_and_swap(&cgc->queued, 1, 0);
++
++ if (scx_bpf_dsq_nr_queued(cgid)) {
++ bpf_spin_lock(&cgv_tree_lock);
++ bpf_rbtree_add(&cgv_tree, &cgv_node->rb_node, cgv_node_less);
++ bpf_spin_unlock(&cgv_tree_lock);
++ stat_inc(FCG_STAT_PNC_RACE);
++ } else {
++ cgv_node = bpf_kptr_xchg(&stash->node, cgv_node);
++ if (cgv_node) {
++ scx_bpf_error("unexpected !NULL cgv_node stash");
++ goto out_free;
++ }
++ }
++
++ return false;
++
++out_free:
++ bpf_obj_drop(cgv_node);
++ return false;
++}
++
++void BPF_STRUCT_OPS(fcg_dispatch, s32 cpu, struct task_struct *prev)
++{
++ struct fcg_cpu_ctx *cpuc;
++ struct fcg_cgrp_ctx *cgc;
++ struct cgroup *cgrp;
++ u64 now = bpf_ktime_get_ns();
++ bool picked_next = false;
++
++ cpuc = find_cpu_ctx();
++ if (!cpuc)
++ return;
++
++ if (!cpuc->cur_cgid)
++ goto pick_next_cgroup;
++
++ if (vtime_before(now, cpuc->cur_at + cgrp_slice_ns)) {
++ if (scx_bpf_consume(cpuc->cur_cgid)) {
++ stat_inc(FCG_STAT_CNS_KEEP);
++ return;
++ }
++ stat_inc(FCG_STAT_CNS_EMPTY);
++ } else {
++ stat_inc(FCG_STAT_CNS_EXPIRE);
++ }
++
++ /*
++ * The current cgroup is expiring. It was already charged a full slice.
++ * Calculate the actual usage and accumulate the delta.
++ */
++ cgrp = bpf_cgroup_from_id(cpuc->cur_cgid);
++ if (!cgrp) {
++ stat_inc(FCG_STAT_CNS_GONE);
++ goto pick_next_cgroup;
++ }
++
++ cgc = bpf_cgrp_storage_get(&cgrp_ctx, cgrp, 0, 0);
++ if (cgc) {
++ /*
++ * We want to update the vtime delta and then look for the next
++ * cgroup to execute but the latter needs to be done in a loop
++ * and we can't keep the lock held. Oh well...
++ */
++ bpf_spin_lock(&cgv_tree_lock);
++ __sync_fetch_and_add(&cgc->cvtime_delta,
++ (cpuc->cur_at + cgrp_slice_ns - now) *
++ FCG_HWEIGHT_ONE / (cgc->hweight ?: 1));
++ bpf_spin_unlock(&cgv_tree_lock);
++ } else {
++ stat_inc(FCG_STAT_CNS_GONE);
++ }
++
++ bpf_cgroup_release(cgrp);
++
++pick_next_cgroup:
++ cpuc->cur_at = now;
++
++ if (scx_bpf_consume(FALLBACK_DSQ)) {
++ cpuc->cur_cgid = 0;
++ return;
++ }
++
++ bpf_repeat(CGROUP_MAX_RETRIES) {
++ if (try_pick_next_cgroup(&cpuc->cur_cgid)) {
++ picked_next = true;
++ break;
++ }
++ }
++
++ /*
++ * This only happens if try_pick_next_cgroup() races against enqueue
++ * path for more than CGROUP_MAX_RETRIES times, which is extremely
++ * unlikely and likely indicates an underlying bug. There shouldn't be
++ * any stall risk as the race is against enqueue.
++ */
++ if (!picked_next)
++ stat_inc(FCG_STAT_PNC_FAIL);
++}
++
++s32 BPF_STRUCT_OPS(fcg_init_task, struct task_struct *p,
++ struct scx_init_task_args *args)
++{
++ struct fcg_task_ctx *taskc;
++ struct fcg_cgrp_ctx *cgc;
++
++ /*
++ * @p is new. Let's ensure that its task_ctx is available. We can sleep
++ * in this function and the following will automatically use GFP_KERNEL.
++ */
++ taskc = bpf_task_storage_get(&task_ctx, p, 0,
++ BPF_LOCAL_STORAGE_GET_F_CREATE);
++ if (!taskc)
++ return -ENOMEM;
++
++ taskc->bypassed_at = 0;
++
++ if (!(cgc = find_cgrp_ctx(args->cgroup)))
++ return -ENOENT;
++
++ p->scx.dsq_vtime = cgc->tvtime_now;
++
++ return 0;
++}
++
++int BPF_STRUCT_OPS_SLEEPABLE(fcg_cgroup_init, struct cgroup *cgrp,
++ struct scx_cgroup_init_args *args)
++{
++ struct fcg_cgrp_ctx *cgc;
++ struct cgv_node *cgv_node;
++ struct cgv_node_stash empty_stash = {}, *stash;
++ u64 cgid = cgrp->kn->id;
++ int ret;
++
++ /*
++ * Technically incorrect as cgroup ID is full 64bit while dsq ID is
++ * 63bit. Should not be a problem in practice and easy to spot in the
++ * unlikely case that it breaks.
++ */
++ ret = scx_bpf_create_dsq(cgid, -1);
++ if (ret)
++ return ret;
++
++ cgc = bpf_cgrp_storage_get(&cgrp_ctx, cgrp, 0,
++ BPF_LOCAL_STORAGE_GET_F_CREATE);
++ if (!cgc) {
++ ret = -ENOMEM;
++ goto err_destroy_dsq;
++ }
++
++ cgc->weight = args->weight;
++ cgc->hweight = FCG_HWEIGHT_ONE;
++
++ ret = bpf_map_update_elem(&cgv_node_stash, &cgid, &empty_stash,
++ BPF_NOEXIST);
++ if (ret) {
++ if (ret != -ENOMEM)
++ scx_bpf_error("unexpected stash creation error (%d)",
++ ret);
++ goto err_destroy_dsq;
++ }
++
++ stash = bpf_map_lookup_elem(&cgv_node_stash, &cgid);
++ if (!stash) {
++ scx_bpf_error("unexpected cgv_node stash lookup failure");
++ ret = -ENOENT;
++ goto err_destroy_dsq;
++ }
++
++ cgv_node = bpf_obj_new(struct cgv_node);
++ if (!cgv_node) {
++ ret = -ENOMEM;
++ goto err_del_cgv_node;
++ }
++
++ cgv_node->cgid = cgid;
++ cgv_node->cvtime = cvtime_now;
++
++ cgv_node = bpf_kptr_xchg(&stash->node, cgv_node);
++ if (cgv_node) {
++ scx_bpf_error("unexpected !NULL cgv_node stash");
++ ret = -EBUSY;
++ goto err_drop;
++ }
++
++ return 0;
++
++err_drop:
++ bpf_obj_drop(cgv_node);
++err_del_cgv_node:
++ bpf_map_delete_elem(&cgv_node_stash, &cgid);
++err_destroy_dsq:
++ scx_bpf_destroy_dsq(cgid);
++ return ret;
++}
++
++void BPF_STRUCT_OPS(fcg_cgroup_exit, struct cgroup *cgrp)
++{
++ u64 cgid = cgrp->kn->id;
++
++ /*
++ * For now, there's no way find and remove the cgv_node if it's on the
++ * cgv_tree. Let's drain them in the dispatch path as they get popped
++ * off the front of the tree.
++ */
++ bpf_map_delete_elem(&cgv_node_stash, &cgid);
++ scx_bpf_destroy_dsq(cgid);
++}
++
++void BPF_STRUCT_OPS(fcg_cgroup_move, struct task_struct *p,
++ struct cgroup *from, struct cgroup *to)
++{
++ struct fcg_cgrp_ctx *from_cgc, *to_cgc;
++ s64 vtime_delta;
++
++ /* find_cgrp_ctx() triggers scx_ops_error() on lookup failures */
++ if (!(from_cgc = find_cgrp_ctx(from)) || !(to_cgc = find_cgrp_ctx(to)))
++ return;
++
++ vtime_delta = p->scx.dsq_vtime - from_cgc->tvtime_now;
++ p->scx.dsq_vtime = to_cgc->tvtime_now + vtime_delta;
++}
++
++s32 BPF_STRUCT_OPS_SLEEPABLE(fcg_init)
++{
++ return scx_bpf_create_dsq(FALLBACK_DSQ, -1);
++}
++
++void BPF_STRUCT_OPS(fcg_exit, struct scx_exit_info *ei)
++{
++ UEI_RECORD(uei, ei);
++}
++
++SCX_OPS_DEFINE(flatcg_ops,
++ .select_cpu = (void *)fcg_select_cpu,
++ .enqueue = (void *)fcg_enqueue,
++ .dispatch = (void *)fcg_dispatch,
++ .runnable = (void *)fcg_runnable,
++ .running = (void *)fcg_running,
++ .stopping = (void *)fcg_stopping,
++ .quiescent = (void *)fcg_quiescent,
++ .init_task = (void *)fcg_init_task,
++ .cgroup_set_weight = (void *)fcg_cgroup_set_weight,
++ .cgroup_init = (void *)fcg_cgroup_init,
++ .cgroup_exit = (void *)fcg_cgroup_exit,
++ .cgroup_move = (void *)fcg_cgroup_move,
++ .init = (void *)fcg_init,
++ .exit = (void *)fcg_exit,
++ .flags = SCX_OPS_HAS_CGROUP_WEIGHT | SCX_OPS_ENQ_EXITING,
++ .name = "flatcg");
+diff --git a/tools/sched_ext/scx_flatcg.c b/tools/sched_ext/scx_flatcg.c
+new file mode 100644
+index 000000000000..5d24ca9c29d9
+--- /dev/null
++++ b/tools/sched_ext/scx_flatcg.c
+@@ -0,0 +1,233 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++/*
++ * Copyright (c) 2023 Meta Platforms, Inc. and affiliates.
++ * Copyright (c) 2023 Tejun Heo <tj@kernel.org>
++ * Copyright (c) 2023 David Vernet <dvernet@meta.com>
++ */
++#include <stdio.h>
++#include <signal.h>
++#include <unistd.h>
++#include <libgen.h>
++#include <limits.h>
++#include <inttypes.h>
++#include <fcntl.h>
++#include <time.h>
++#include <bpf/bpf.h>
++#include <scx/common.h>
++#include "scx_flatcg.h"
++#include "scx_flatcg.bpf.skel.h"
++
++#ifndef FILEID_KERNFS
++#define FILEID_KERNFS 0xfe
++#endif
++
++const char help_fmt[] =
++"A flattened cgroup hierarchy sched_ext scheduler.\n"
++"\n"
++"See the top-level comment in .bpf.c for more details.\n"
++"\n"
++"Usage: %s [-s SLICE_US] [-i INTERVAL] [-f] [-v]\n"
++"\n"
++" -s SLICE_US Override slice duration\n"
++" -i INTERVAL Report interval\n"
++" -f Use FIFO scheduling instead of weighted vtime scheduling\n"
++" -v Print libbpf debug messages\n"
++" -h Display this help and exit\n";
++
++static bool verbose;
++static volatile int exit_req;
++
++static int libbpf_print_fn(enum libbpf_print_level level, const char *format, va_list args)
++{
++ if (level == LIBBPF_DEBUG && !verbose)
++ return 0;
++ return vfprintf(stderr, format, args);
++}
++
++static void sigint_handler(int dummy)
++{
++ exit_req = 1;
++}
++
++static float read_cpu_util(__u64 *last_sum, __u64 *last_idle)
++{
++ FILE *fp;
++ char buf[4096];
++ char *line, *cur = NULL, *tok;
++ __u64 sum = 0, idle = 0;
++ __u64 delta_sum, delta_idle;
++ int idx;
++
++ fp = fopen("/proc/stat", "r");
++ if (!fp) {
++ perror("fopen(\"/proc/stat\")");
++ return 0.0;
++ }
++
++ if (!fgets(buf, sizeof(buf), fp)) {
++ perror("fgets(\"/proc/stat\")");
++ fclose(fp);
++ return 0.0;
++ }
++ fclose(fp);
++
++ line = buf;
++ for (idx = 0; (tok = strtok_r(line, " \n", &cur)); idx++) {
++ char *endp = NULL;
++ __u64 v;
++
++ if (idx == 0) {
++ line = NULL;
++ continue;
++ }
++ v = strtoull(tok, &endp, 0);
++ if (!endp || *endp != '\0') {
++ fprintf(stderr, "failed to parse %dth field of /proc/stat (\"%s\")\n",
++ idx, tok);
++ continue;
++ }
++ sum += v;
++ if (idx == 4)
++ idle = v;
++ }
++
++ delta_sum = sum - *last_sum;
++ delta_idle = idle - *last_idle;
++ *last_sum = sum;
++ *last_idle = idle;
++
++ return delta_sum ? (float)(delta_sum - delta_idle) / delta_sum : 0.0;
++}
++
++static void fcg_read_stats(struct scx_flatcg *skel, __u64 *stats)
++{
++ __u64 cnts[FCG_NR_STATS][skel->rodata->nr_cpus];
++ __u32 idx;
++
++ memset(stats, 0, sizeof(stats[0]) * FCG_NR_STATS);
++
++ for (idx = 0; idx < FCG_NR_STATS; idx++) {
++ int ret, cpu;
++
++ ret = bpf_map_lookup_elem(bpf_map__fd(skel->maps.stats),
++ &idx, cnts[idx]);
++ if (ret < 0)
++ continue;
++ for (cpu = 0; cpu < skel->rodata->nr_cpus; cpu++)
++ stats[idx] += cnts[idx][cpu];
++ }
++}
++
++int main(int argc, char **argv)
++{
++ struct scx_flatcg *skel;
++ struct bpf_link *link;
++ struct timespec intv_ts = { .tv_sec = 2, .tv_nsec = 0 };
++ bool dump_cgrps = false;
++ __u64 last_cpu_sum = 0, last_cpu_idle = 0;
++ __u64 last_stats[FCG_NR_STATS] = {};
++ unsigned long seq = 0;
++ __s32 opt;
++ __u64 ecode;
++
++ libbpf_set_print(libbpf_print_fn);
++ signal(SIGINT, sigint_handler);
++ signal(SIGTERM, sigint_handler);
++restart:
++ skel = SCX_OPS_OPEN(flatcg_ops, scx_flatcg);
++
++ skel->rodata->nr_cpus = libbpf_num_possible_cpus();
++
++ while ((opt = getopt(argc, argv, "s:i:dfvh")) != -1) {
++ double v;
++
++ switch (opt) {
++ case 's':
++ v = strtod(optarg, NULL);
++ skel->rodata->cgrp_slice_ns = v * 1000;
++ break;
++ case 'i':
++ v = strtod(optarg, NULL);
++ intv_ts.tv_sec = v;
++ intv_ts.tv_nsec = (v - (float)intv_ts.tv_sec) * 1000000000;
++ break;
++ case 'd':
++ dump_cgrps = true;
++ break;
++ case 'f':
++ skel->rodata->fifo_sched = true;
++ break;
++ case 'v':
++ verbose = true;
++ break;
++ case 'h':
++ default:
++ fprintf(stderr, help_fmt, basename(argv[0]));
++ return opt != 'h';
++ }
++ }
++
++ printf("slice=%.1lfms intv=%.1lfs dump_cgrps=%d",
++ (double)skel->rodata->cgrp_slice_ns / 1000000.0,
++ (double)intv_ts.tv_sec + (double)intv_ts.tv_nsec / 1000000000.0,
++ dump_cgrps);
++
++ SCX_OPS_LOAD(skel, flatcg_ops, scx_flatcg, uei);
++ link = SCX_OPS_ATTACH(skel, flatcg_ops, scx_flatcg);
++
++ while (!exit_req && !UEI_EXITED(skel, uei)) {
++ __u64 acc_stats[FCG_NR_STATS];
++ __u64 stats[FCG_NR_STATS];
++ float cpu_util;
++ int i;
++
++ cpu_util = read_cpu_util(&last_cpu_sum, &last_cpu_idle);
++
++ fcg_read_stats(skel, acc_stats);
++ for (i = 0; i < FCG_NR_STATS; i++)
++ stats[i] = acc_stats[i] - last_stats[i];
++
++ memcpy(last_stats, acc_stats, sizeof(acc_stats));
++
++ printf("\n[SEQ %6lu cpu=%5.1lf hweight_gen=%" PRIu64 "]\n",
++ seq++, cpu_util * 100.0, skel->data->hweight_gen);
++ printf(" act:%6llu deact:%6llu global:%6llu local:%6llu\n",
++ stats[FCG_STAT_ACT],
++ stats[FCG_STAT_DEACT],
++ stats[FCG_STAT_GLOBAL],
++ stats[FCG_STAT_LOCAL]);
++ printf("HWT cache:%6llu update:%6llu skip:%6llu race:%6llu\n",
++ stats[FCG_STAT_HWT_CACHE],
++ stats[FCG_STAT_HWT_UPDATES],
++ stats[FCG_STAT_HWT_SKIP],
++ stats[FCG_STAT_HWT_RACE]);
++ printf("ENQ skip:%6llu race:%6llu\n",
++ stats[FCG_STAT_ENQ_SKIP],
++ stats[FCG_STAT_ENQ_RACE]);
++ printf("CNS keep:%6llu expire:%6llu empty:%6llu gone:%6llu\n",
++ stats[FCG_STAT_CNS_KEEP],
++ stats[FCG_STAT_CNS_EXPIRE],
++ stats[FCG_STAT_CNS_EMPTY],
++ stats[FCG_STAT_CNS_GONE]);
++ printf("PNC next:%6llu empty:%6llu nocgrp:%6llu gone:%6llu race:%6llu fail:%6llu\n",
++ stats[FCG_STAT_PNC_NEXT],
++ stats[FCG_STAT_PNC_EMPTY],
++ stats[FCG_STAT_PNC_NO_CGRP],
++ stats[FCG_STAT_PNC_GONE],
++ stats[FCG_STAT_PNC_RACE],
++ stats[FCG_STAT_PNC_FAIL]);
++ printf("BAD remove:%6llu\n",
++ acc_stats[FCG_STAT_BAD_REMOVAL]);
++ fflush(stdout);
++
++ nanosleep(&intv_ts, NULL);
++ }
++
++ bpf_link__destroy(link);
++ ecode = UEI_REPORT(skel, uei);
++ scx_flatcg__destroy(skel);
++
++ if (UEI_ECODE_RESTART(ecode))
++ goto restart;
++ return 0;
++}
+diff --git a/tools/sched_ext/scx_flatcg.h b/tools/sched_ext/scx_flatcg.h
+new file mode 100644
+index 000000000000..6f2ea50acb1c
+--- /dev/null
++++ b/tools/sched_ext/scx_flatcg.h
+@@ -0,0 +1,51 @@
++#ifndef __SCX_EXAMPLE_FLATCG_H
++#define __SCX_EXAMPLE_FLATCG_H
++
++enum {
++ FCG_HWEIGHT_ONE = 1LLU << 16,
++};
++
++enum fcg_stat_idx {
++ FCG_STAT_ACT,
++ FCG_STAT_DEACT,
++ FCG_STAT_LOCAL,
++ FCG_STAT_GLOBAL,
++
++ FCG_STAT_HWT_UPDATES,
++ FCG_STAT_HWT_CACHE,
++ FCG_STAT_HWT_SKIP,
++ FCG_STAT_HWT_RACE,
++
++ FCG_STAT_ENQ_SKIP,
++ FCG_STAT_ENQ_RACE,
++
++ FCG_STAT_CNS_KEEP,
++ FCG_STAT_CNS_EXPIRE,
++ FCG_STAT_CNS_EMPTY,
++ FCG_STAT_CNS_GONE,
++
++ FCG_STAT_PNC_NO_CGRP,
++ FCG_STAT_PNC_NEXT,
++ FCG_STAT_PNC_EMPTY,
++ FCG_STAT_PNC_GONE,
++ FCG_STAT_PNC_RACE,
++ FCG_STAT_PNC_FAIL,
++
++ FCG_STAT_BAD_REMOVAL,
++
++ FCG_NR_STATS,
++};
++
++struct fcg_cgrp_ctx {
++ u32 nr_active;
++ u32 nr_runnable;
++ u32 queued;
++ u32 weight;
++ u32 hweight;
++ u64 child_weight_sum;
++ u64 hweight_gen;
++ s64 cvtime_delta;
++ u64 tvtime_now;
++};
++
++#endif /* __SCX_EXAMPLE_FLATCG_H */
diff --git a/tools/sched_ext/scx_qmap.bpf.c b/tools/sched_ext/scx_qmap.bpf.c
new file mode 100644
-index 000000000000..892278f12dce
+index 000000000000..5b39bee9eb23
--- /dev/null
+++ b/tools/sched_ext/scx_qmap.bpf.c
-@@ -0,0 +1,706 @@
+@@ -0,0 +1,813 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * A simple five-level FIFO queue scheduler.
@@ -10432,6 +13055,8 @@ index 000000000000..892278f12dce
+enum consts {
+ ONE_SEC_IN_NS = 1000000000,
+ SHARED_DSQ = 0,
++ HIGHPRI_DSQ = 1,
++ HIGHPRI_WEIGHT = 8668, /* this is what -20 maps to */
+};
+
+char _license[] SEC("license") = "GPL";
@@ -10441,10 +13066,12 @@ index 000000000000..892278f12dce
+const volatile u32 stall_kernel_nth;
+const volatile u32 dsp_inf_loop_after;
+const volatile u32 dsp_batch;
++const volatile bool highpri_boosting;
+const volatile bool print_shared_dsq;
+const volatile s32 disallow_tgid;
+const volatile bool suppress_dump;
+
++u64 nr_highpri_queued;
+u32 test_error_cnt;
+
+UEI_DEFINE(uei);
@@ -10500,6 +13127,7 @@ index 000000000000..892278f12dce
+/* Per-task scheduling context */
+struct task_ctx {
+ bool force_local; /* Dispatch directly to local_dsq */
++ bool highpri;
+ u64 core_sched_seq;
+};
+
@@ -10527,6 +13155,7 @@ index 000000000000..892278f12dce
+/* Statistics */
+u64 nr_enqueued, nr_dispatched, nr_reenqueued, nr_dequeued, nr_ddsp_from_enq;
+u64 nr_core_sched_execed;
++u64 nr_expedited_local, nr_expedited_remote, nr_expedited_lost, nr_expedited_from_timer;
+u32 cpuperf_min, cpuperf_avg, cpuperf_max;
+u32 cpuperf_target_min, cpuperf_target_avg, cpuperf_target_max;
+
@@ -10545,17 +13174,25 @@ index 000000000000..892278f12dce
+ return -1;
+}
+
++static struct task_ctx *lookup_task_ctx(struct task_struct *p)
++{
++ struct task_ctx *tctx;
++
++ if (!(tctx = bpf_task_storage_get(&task_ctx_stor, p, 0, 0))) {
++ scx_bpf_error("task_ctx lookup failed");
++ return NULL;
++ }
++ return tctx;
++}
++
+s32 BPF_STRUCT_OPS(qmap_select_cpu, struct task_struct *p,
+ s32 prev_cpu, u64 wake_flags)
+{
+ struct task_ctx *tctx;
+ s32 cpu;
+
-+ tctx = bpf_task_storage_get(&task_ctx_stor, p, 0, 0);
-+ if (!tctx) {
-+ scx_bpf_error("task_ctx lookup failed");
++ if (!(tctx = lookup_task_ctx(p)))
+ return -ESRCH;
-+ }
+
+ cpu = pick_direct_dispatch_cpu(p, prev_cpu);
+
@@ -10602,11 +13239,8 @@ index 000000000000..892278f12dce
+ if (test_error_cnt && !--test_error_cnt)
+ scx_bpf_error("test triggering error");
+
-+ tctx = bpf_task_storage_get(&task_ctx_stor, p, 0, 0);
-+ if (!tctx) {
-+ scx_bpf_error("task_ctx lookup failed");
++ if (!(tctx = lookup_task_ctx(p)))
+ return;
-+ }
+
+ /*
+ * All enqueued tasks must have their core_sched_seq updated for correct
@@ -10661,6 +13295,10 @@ index 000000000000..892278f12dce
+ return;
+ }
+
++ if (highpri_boosting && p->scx.weight >= HIGHPRI_WEIGHT) {
++ tctx->highpri = true;
++ __sync_fetch_and_add(&nr_highpri_queued, 1);
++ }
+ __sync_fetch_and_add(&nr_enqueued, 1);
+}
+
@@ -10677,13 +13315,80 @@ index 000000000000..892278f12dce
+
+static void update_core_sched_head_seq(struct task_struct *p)
+{
-+ struct task_ctx *tctx = bpf_task_storage_get(&task_ctx_stor, p, 0, 0);
+ int idx = weight_to_idx(p->scx.weight);
++ struct task_ctx *tctx;
+
-+ if (tctx)
++ if ((tctx = lookup_task_ctx(p)))
+ core_sched_head_seqs[idx] = tctx->core_sched_seq;
-+ else
-+ scx_bpf_error("task_ctx lookup failed");
++}
++
++/*
++ * To demonstrate the use of scx_bpf_dispatch_from_dsq(), implement silly
++ * selective priority boosting mechanism by scanning SHARED_DSQ looking for
++ * highpri tasks, moving them to HIGHPRI_DSQ and then consuming them first. This
++ * makes minor difference only when dsp_batch is larger than 1.
++ *
++ * scx_bpf_dispatch[_vtime]_from_dsq() are allowed both from ops.dispatch() and
++ * non-rq-lock holding BPF programs. As demonstration, this function is called
++ * from qmap_dispatch() and monitor_timerfn().
++ */
++static bool dispatch_highpri(bool from_timer)
++{
++ struct task_struct *p;
++ s32 this_cpu = bpf_get_smp_processor_id();
++
++ /* scan SHARED_DSQ and move highpri tasks to HIGHPRI_DSQ */
++ bpf_for_each(scx_dsq, p, SHARED_DSQ, 0) {
++ static u64 highpri_seq;
++ struct task_ctx *tctx;
++
++ if (!(tctx = lookup_task_ctx(p)))
++ return false;
++
++ if (tctx->highpri) {
++ /* exercise the set_*() and vtime interface too */
++ __COMPAT_scx_bpf_dispatch_from_dsq_set_slice(
++ BPF_FOR_EACH_ITER, slice_ns * 2);
++ __COMPAT_scx_bpf_dispatch_from_dsq_set_vtime(
++ BPF_FOR_EACH_ITER, highpri_seq++);
++ __COMPAT_scx_bpf_dispatch_vtime_from_dsq(
++ BPF_FOR_EACH_ITER, p, HIGHPRI_DSQ, 0);
++ }
++ }
++
++ /*
++ * Scan HIGHPRI_DSQ and dispatch until a task that can run on this CPU
++ * is found.
++ */
++ bpf_for_each(scx_dsq, p, HIGHPRI_DSQ, 0) {
++ bool dispatched = false;
++ s32 cpu;
++
++ if (bpf_cpumask_test_cpu(this_cpu, p->cpus_ptr))
++ cpu = this_cpu;
++ else
++ cpu = scx_bpf_pick_any_cpu(p->cpus_ptr, 0);
++
++ if (__COMPAT_scx_bpf_dispatch_from_dsq(BPF_FOR_EACH_ITER, p,
++ SCX_DSQ_LOCAL_ON | cpu,
++ SCX_ENQ_PREEMPT)) {
++ if (cpu == this_cpu) {
++ dispatched = true;
++ __sync_fetch_and_add(&nr_expedited_local, 1);
++ } else {
++ __sync_fetch_and_add(&nr_expedited_remote, 1);
++ }
++ if (from_timer)
++ __sync_fetch_and_add(&nr_expedited_from_timer, 1);
++ } else {
++ __sync_fetch_and_add(&nr_expedited_lost, 1);
++ }
++
++ if (dispatched)
++ return true;
++ }
++
++ return false;
+}
+
+void BPF_STRUCT_OPS(qmap_dispatch, s32 cpu, struct task_struct *prev)
@@ -10694,7 +13399,10 @@ index 000000000000..892278f12dce
+ void *fifo;
+ s32 i, pid;
+
-+ if (scx_bpf_consume(SHARED_DSQ))
++ if (dispatch_highpri(false))
++ return;
++
++ if (!nr_highpri_queued && scx_bpf_consume(SHARED_DSQ))
+ return;
+
+ if (dsp_inf_loop_after && nr_dispatched > dsp_inf_loop_after) {
@@ -10731,6 +13439,8 @@ index 000000000000..892278f12dce
+
+ /* Dispatch or advance. */
+ bpf_repeat(BPF_MAX_LOOPS) {
++ struct task_ctx *tctx;
++
+ if (bpf_map_pop_elem(fifo, &pid))
+ break;
+
@@ -10738,13 +13448,25 @@ index 000000000000..892278f12dce
+ if (!p)
+ continue;
+
++ if (!(tctx = lookup_task_ctx(p))) {
++ bpf_task_release(p);
++ return;
++ }
++
++ if (tctx->highpri)
++ __sync_fetch_and_sub(&nr_highpri_queued, 1);
++
+ update_core_sched_head_seq(p);
+ __sync_fetch_and_add(&nr_dispatched, 1);
++
+ scx_bpf_dispatch(p, SHARED_DSQ, slice_ns, 0);
+ bpf_task_release(p);
++
+ batch--;
+ cpuc->dsp_cnt--;
+ if (!batch || !scx_bpf_dispatch_nr_slots()) {
++ if (dispatch_highpri(false))
++ return;
+ scx_bpf_consume(SHARED_DSQ);
+ return;
+ }
@@ -11054,6 +13776,10 @@ index 000000000000..892278f12dce
+
+static int monitor_timerfn(void *map, int *key, struct bpf_timer *timer)
+{
++ bpf_rcu_read_lock();
++ dispatch_highpri(true);
++ bpf_rcu_read_unlock();
++
+ monitor_cpuperf();
+
+ if (print_shared_dsq)
@@ -11075,6 +13801,10 @@ index 000000000000..892278f12dce
+ if (ret)
+ return ret;
+
++ ret = scx_bpf_create_dsq(HIGHPRI_DSQ, -1);
++ if (ret)
++ return ret;
++
+ timer = bpf_map_lookup_elem(&monitor_timer, &key);
+ if (!timer)
+ return -ESRCH;
@@ -11111,10 +13841,10 @@ index 000000000000..892278f12dce
+ .name = "qmap");
diff --git a/tools/sched_ext/scx_qmap.c b/tools/sched_ext/scx_qmap.c
new file mode 100644
-index 000000000000..c9ca30d62b2b
+index 000000000000..ac45a02b4055
--- /dev/null
+++ b/tools/sched_ext/scx_qmap.c
-@@ -0,0 +1,144 @@
+@@ -0,0 +1,153 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2022 Meta Platforms, Inc. and affiliates.
@@ -11146,6 +13876,7 @@ index 000000000000..c9ca30d62b2b
+" -l COUNT Trigger dispatch infinite looping after COUNT dispatches\n"
+" -b COUNT Dispatch upto COUNT tasks together\n"
+" -P Print out DSQ content to trace_pipe every second, use with -b\n"
++" -H Boost nice -20 tasks in SHARED_DSQ, use with -b\n"
+" -d PID Disallow a process from switching into SCHED_EXT (-1 for self)\n"
+" -D LEN Set scx_exit_info.dump buffer length\n"
+" -S Suppress qmap-specific debug dump\n"
@@ -11180,7 +13911,7 @@ index 000000000000..c9ca30d62b2b
+
+ skel = SCX_OPS_OPEN(qmap_ops, scx_qmap);
+
-+ while ((opt = getopt(argc, argv, "s:e:t:T:l:b:Pd:D:Spvh")) != -1) {
++ while ((opt = getopt(argc, argv, "s:e:t:T:l:b:PHd:D:Spvh")) != -1) {
+ switch (opt) {
+ case 's':
+ skel->rodata->slice_ns = strtoull(optarg, NULL, 0) * 1000;
@@ -11203,6 +13934,9 @@ index 000000000000..c9ca30d62b2b
+ case 'P':
+ skel->rodata->print_shared_dsq = true;
+ break;
++ case 'H':
++ skel->rodata->highpri_boosting = true;
++ break;
+ case 'd':
+ skel->rodata->disallow_tgid = strtol(optarg, NULL, 0);
+ if (skel->rodata->disallow_tgid < 0)
@@ -11238,6 +13972,11 @@ index 000000000000..c9ca30d62b2b
+ skel->bss->nr_reenqueued, skel->bss->nr_dequeued,
+ skel->bss->nr_core_sched_execed,
+ skel->bss->nr_ddsp_from_enq);
++ printf(" exp_local=%"PRIu64" exp_remote=%"PRIu64" exp_timer=%"PRIu64" exp_lost=%"PRIu64"\n",
++ skel->bss->nr_expedited_local,
++ skel->bss->nr_expedited_remote,
++ skel->bss->nr_expedited_from_timer,
++ skel->bss->nr_expedited_lost);
+ if (__COMPAT_has_ksym("scx_bpf_cpuperf_cur"))
+ printf("cpuperf: cur min/avg/max=%u/%u/%u target min/avg/max=%u/%u/%u\n",
+ skel->bss->cpuperf_min,
@@ -11261,10 +14000,10 @@ index 000000000000..c9ca30d62b2b
+}
diff --git a/tools/sched_ext/scx_show_state.py b/tools/sched_ext/scx_show_state.py
new file mode 100644
-index 000000000000..d457d2a74e1e
+index 000000000000..8bc626ede1c4
--- /dev/null
+++ b/tools/sched_ext/scx_show_state.py
-@@ -0,0 +1,39 @@
+@@ -0,0 +1,40 @@
+#!/usr/bin/env drgn
+#
+# Copyright (C) 2024 Tejun Heo <tj@kernel.org>
@@ -11304,6 +14043,7 @@ index 000000000000..d457d2a74e1e
+print(f'enable_state : {ops_state_str(enable_state)} ({enable_state})')
+print(f'bypass_depth : {read_atomic("scx_ops_bypass_depth")}')
+print(f'nr_rejected : {read_atomic("scx_nr_rejected")}')
++print(f'enable_seq : {read_atomic("scx_enable_seq")}')
diff --git a/tools/sched_ext/scx_simple.bpf.c b/tools/sched_ext/scx_simple.bpf.c
new file mode 100644
index 000000000000..ed7e8d535fc5
@@ -13191,10 +15931,10 @@ index 000000000000..97d45f1e5597
+REGISTER_SCX_TEST(&init_enable_count)
diff --git a/tools/testing/selftests/sched_ext/maximal.bpf.c b/tools/testing/selftests/sched_ext/maximal.bpf.c
new file mode 100644
-index 000000000000..44612fdaf399
+index 000000000000..00bfa9cb95d3
--- /dev/null
+++ b/tools/testing/selftests/sched_ext/maximal.bpf.c
-@@ -0,0 +1,132 @@
+@@ -0,0 +1,164 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * A scheduler with every callback defined.
@@ -13292,6 +16032,32 @@ index 000000000000..44612fdaf399
+void BPF_STRUCT_OPS(maximal_disable, struct task_struct *p)
+{}
+
++s32 BPF_STRUCT_OPS(maximal_cgroup_init, struct cgroup *cgrp,
++ struct scx_cgroup_init_args *args)
++{
++ return 0;
++}
++
++void BPF_STRUCT_OPS(maximal_cgroup_exit, struct cgroup *cgrp)
++{}
++
++s32 BPF_STRUCT_OPS(maximal_cgroup_prep_move, struct task_struct *p,
++ struct cgroup *from, struct cgroup *to)
++{
++ return 0;
++}
++
++void BPF_STRUCT_OPS(maximal_cgroup_move, struct task_struct *p,
++ struct cgroup *from, struct cgroup *to)
++{}
++
++void BPF_STRUCT_OPS(maximal_cgroup_cancel_move, struct task_struct *p,
++ struct cgroup *from, struct cgroup *to)
++{}
++
++void BPF_STRUCT_OPS(maximal_cgroup_set_weight, struct cgroup *cgrp, u32 weight)
++{}
++
+s32 BPF_STRUCT_OPS_SLEEPABLE(maximal_init)
+{
+ return 0;
@@ -13323,6 +16089,12 @@ index 000000000000..44612fdaf399
+ .enable = maximal_enable,
+ .exit_task = maximal_exit_task,
+ .disable = maximal_disable,
++ .cgroup_init = maximal_cgroup_init,
++ .cgroup_exit = maximal_cgroup_exit,
++ .cgroup_prep_move = maximal_cgroup_prep_move,
++ .cgroup_move = maximal_cgroup_move,
++ .cgroup_cancel_move = maximal_cgroup_cancel_move,
++ .cgroup_set_weight = maximal_cgroup_set_weight,
+ .init = maximal_init,
+ .exit = maximal_exit,
+ .name = "maximal",
@@ -15130,3 +17902,6 @@ index 000000000000..bc13dfec1267
+int file_write_long(const char *path, long val);
+
+#endif // __SCX_TEST_H__
+--
+2.47.0.rc0
+
diff --git a/SOURCES/steam-deck.patch b/SOURCES/steam-deck.patch
index fb06952..03946df 100644
--- a/SOURCES/steam-deck.patch
+++ b/SOURCES/steam-deck.patch
@@ -225,10 +225,10 @@ diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 11d076cad8a2..d03c1e1d339f 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
-@@ -200,6 +200,7 @@
- obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
+@@ -207,6 +207,7 @@
obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
obj-$(CONFIG_SENSORS_SPARX5) += sparx5-temp.o
+ obj-$(CONFIG_SENSORS_SPD5118) += spd5118.o
+obj-$(CONFIG_SENSORS_STEAMDECK) += steamdeck-hwmon.o
obj-$(CONFIG_SENSORS_STTS751) += stts751.o
obj-$(CONFIG_SENSORS_SURFACE_FAN)+= surface_fan.o
diff --git a/SOURCES/tkg-misc-additions.patch b/SOURCES/tkg-misc-additions.patch
index 3056a1c..c6065b8 100644
--- a/SOURCES/tkg-misc-additions.patch
+++ b/SOURCES/tkg-misc-additions.patch
@@ -1,68 +1,3 @@
-From e5e77ad2223f662e1615266d8ef39a8db7e65a70 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Felix=20H=C3=A4dicke?= <felixhaedicke@web.de>
-Date: Thu, 19 Nov 2020 09:22:32 +0100
-Subject: HID: quirks: Add Apple Magic Trackpad 2 to hid_have_special_driver
- list
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The Apple Magic Trackpad 2 is handled by the magicmouse driver. And
-there were severe stability issues when both drivers (hid-generic and
-hid-magicmouse) were loaded for this device.
-
-Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=210241
-
-Signed-off-by: Felix Hädicke <felixhaedicke@web.de>
----
- drivers/hid/hid-quirks.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
-index bf7ecab5d9e5..142e9dae2837 100644
---- a/drivers/hid/hid-quirks.c
-+++ b/drivers/hid/hid-quirks.c
-@@ -478,6 +478,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
- #if IS_ENABLED(CONFIG_HID_MAGICMOUSE)
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
- { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) },
-+ { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
-+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
- #endif
- #if IS_ENABLED(CONFIG_HID_MAYFLASH)
- { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) },
---
-cgit v1.2.3-1-gf6bb5
-
-From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001
-From: Tk-Glitch <ti3nou@gmail.com>
-Date: Wed, 3 Feb 2021 11:20:12 +0200
-Subject: Revert "cpufreq: Avoid configuring old governors as default with intel_pstate"
-
-This is an undesirable behavior for us since our aggressive ondemand performs
-better than schedutil for gaming when using intel_pstate in passive mode.
-Also it interferes with the option to select the desired default governor we have.
-
-diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
-index 2c7171e0b0010..85de313ddec29 100644
---- a/drivers/cpufreq/Kconfig
-+++ b/drivers/cpufreq/Kconfig
-@@ -71,7 +71,6 @@ config CPU_FREQ_DEFAULT_GOV_USERSPACE
-
- config CPU_FREQ_DEFAULT_GOV_ONDEMAND
- bool "ondemand"
-- depends on !(X86_INTEL_PSTATE && SMP)
- select CPU_FREQ_GOV_ONDEMAND
- select CPU_FREQ_GOV_PERFORMANCE
- help
-@@ -83,7 +84,6 @@ config CPU_FREQ_DEFAULT_GOV_ONDEMAND
-
- config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
- bool "conservative"
-- depends on !(X86_INTEL_PSTATE && SMP)
- select CPU_FREQ_GOV_CONSERVATIVE
- select CPU_FREQ_GOV_PERFORMANCE
- help
From 3a88b77d3cb9f9cd8a8aee052ab479b73aeb2e80 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
@@ -98,125 +33,6 @@ index f4b210ab061291..837d0dbb28ea08 100644
help
This value can be used to select the number of bits to use to
-From 299b81f3e619aea3ceda77d7c42842a496b34a53 Mon Sep 17 00:00:00 2001
-From: Peter Jung <admin@ptr1337.dev>
-Date: Thu, 21 Mar 2024 19:00:50 +0100
-Subject: [PATCH] cachy: move AMD_PRIVATE_COLOR to Kconfig
-
-Co-authored-by: PedroHLC <root@pedrohlc.com>
-Signed-off-by: Peter Jung <admin@ptr1337.dev>
----
- drivers/gpu/drm/amd/display/Kconfig | 6 ++++++
- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 2 +-
- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 6 +++---
- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 6 +++---
- 5 files changed, 14 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig
-index 901d1961b73927..05c49141f5802f 100644
---- a/drivers/gpu/drm/amd/display/Kconfig
-+++ b/drivers/gpu/drm/amd/display/Kconfig
-@@ -51,4 +51,10 @@ config DRM_AMD_SECURE_DISPLAY
- This option enables the calculation of crc of specific region via
- debugfs. Cooperate with specific DMCU FW.
-
-+config AMD_PRIVATE_COLOR
-+ bool "Enable KMS color management by AMD for AMD"
-+ default n
-+ help
-+ This option extends the KMS color management API with AMD driver-specific properties to enhance the color management support on AMD Steam Deck.
-+
- endmenu
-diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-index 59d2eee72a3297..0a4e75de95c257 100644
---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -4078,7 +4078,7 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
- return r;
- }
-
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- if (amdgpu_dm_create_color_properties(adev)) {
- dc_state_release(state->context);
- kfree(state);
-diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
-index c87b64e464ed5c..6fe07243adc3d5 100644
---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
-+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
-@@ -97,7 +97,7 @@ static inline struct fixed31_32 amdgpu_dm_fixpt_from_s3132(__u64 x)
- return val;
- }
-
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- /* Pre-defined Transfer Functions (TF)
- *
- * AMD driver supports pre-defined mathematical functions for transferring
-diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
-index 6e715ef3a5566e..11c7199ec3b348 100644
---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
-+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
-@@ -290,7 +290,7 @@ static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
- }
- #endif
-
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- /**
- * dm_crtc_additional_color_mgmt - enable additional color properties
- * @crtc: DRM CRTC
-@@ -372,7 +372,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
- #if defined(CONFIG_DEBUG_FS)
- .late_register = amdgpu_dm_crtc_late_register,
- #endif
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- .atomic_set_property = amdgpu_dm_atomic_crtc_set_property,
- .atomic_get_property = amdgpu_dm_atomic_crtc_get_property,
- #endif
-@@ -551,7 +551,7 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
-
- drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LEGACY_LUT_ENTRIES);
-
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- dm_crtc_additional_color_mgmt(&acrtc->base);
- #endif
- return 0;
-diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
-index 8a4c40b4c27e4f..779880c6457553 100644
---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
-+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
-@@ -1468,7 +1468,7 @@ static void amdgpu_dm_plane_drm_plane_destroy_state(struct drm_plane *plane,
- drm_atomic_helper_plane_destroy_state(plane, state);
- }
-
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- static void
- dm_atomic_plane_attach_color_mgmt_properties(struct amdgpu_display_manager *dm,
- struct drm_plane *plane)
-@@ -1659,7 +1659,7 @@ static const struct drm_plane_funcs dm_plane_funcs = {
- .atomic_duplicate_state = amdgpu_dm_plane_drm_plane_duplicate_state,
- .atomic_destroy_state = amdgpu_dm_plane_drm_plane_destroy_state,
- .format_mod_supported = amdgpu_dm_plane_format_mod_supported,
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- .atomic_set_property = dm_atomic_plane_set_property,
- .atomic_get_property = dm_atomic_plane_get_property,
- #endif
-@@ -1742,7 +1742,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,
-
- drm_plane_helper_add(plane, &dm_plane_helper_funcs);
-
--#ifdef AMD_PRIVATE_COLOR
-+#ifdef CONFIG_AMD_PRIVATE_COLOR
- dm_atomic_plane_attach_color_mgmt_properties(dm, plane);
- #endif
- /* Create (reset) the plane state */
-
From f1807682de0edbff6c1e46b19642a517d2e15c57 Mon Sep 17 00:00:00 2001
From: Tk-Glitch <ti3nou@gmail.com>
Date: Sat, 13 Apr 2024 18:25:35 +0530
@@ -235,6 +51,222 @@ index a54663f2e2ab9f..7ffad3eb0a0150 100644
switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
case IP_VERSION(13, 0, 2):
- case IP_VERSION(13, 0, 6):
+ case IP_VERSION(13, 0, 14):
case IP_VERSION(11, 0, 7):
case IP_VERSION(11, 0, 11):
- case IP_VERSION(11, 0, 12):
+From 5863404999cd2cada56e454b1b3a33c43b3c0806 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Sun, 28 Jul 2024 13:06:10 +0200
+Subject: [PATCH] x86/apic: Remove logical destination mode for 64-bit
+
+Logical destination mode of the local APIC is used for systems with up to
+8 CPUs. It has an advantage over physical destination mode as it allows to
+target multiple CPUs at once with IPIs.
+
+That advantage was definitely worth it when systems with up to 8 CPUs
+were state of the art for servers and workstations, but that's history.
+
+Aside of that there are systems which fail to work with logical destination
+mode as the ACPI/DMI quirks show and there are AMD Zen1 systems out there
+which fail when interrupt remapping is enabled. The latter can be cured by
+firmware updates, but not all OEMs distribute the required changes.
+
+Physical destination mode is guaranteed to work because it is the only way
+to get a CPU up and running via the INIT/INIT/STARTUP sequence.
+
+As the number of CPUs keeps increasing, logical destination mode becomes a
+less used code path so there is no real good reason to keep it around.
+
+Therefore remove logical destination mode support for 64-bit and default to
+physical destination mode.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/issues/64
+---
+ arch/x86/include/asm/apic.h | 8 --
+ arch/x86/kernel/apic/apic_flat_64.c | 119 ++--------------------------
+ 2 files changed, 7 insertions(+), 120 deletions(-)
+
+diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
+index 9327eb00e96d09..be2045a18e69b9 100644
+--- a/arch/x86/include/asm/apic.h
++++ b/arch/x86/include/asm/apic.h
+@@ -345,20 +345,12 @@ extern struct apic *apic;
+ * APIC drivers are probed based on how they are listed in the .apicdrivers
+ * section. So the order is important and enforced by the ordering
+ * of different apic driver files in the Makefile.
+- *
+- * For the files having two apic drivers, we use apic_drivers()
+- * to enforce the order with in them.
+ */
+ #define apic_driver(sym) \
+ static const struct apic *__apicdrivers_##sym __used \
+ __aligned(sizeof(struct apic *)) \
+ __section(".apicdrivers") = { &sym }
+
+-#define apic_drivers(sym1, sym2) \
+- static struct apic *__apicdrivers_##sym1##sym2[2] __used \
+- __aligned(sizeof(struct apic *)) \
+- __section(".apicdrivers") = { &sym1, &sym2 }
+-
+ extern struct apic *__apicdrivers[], *__apicdrivers_end[];
+
+ /*
+diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
+index f37ad3392fec91..e0308d8c4e6c27 100644
+--- a/arch/x86/kernel/apic/apic_flat_64.c
++++ b/arch/x86/kernel/apic/apic_flat_64.c
+@@ -8,129 +8,25 @@
+ * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
+ * James Cleverdon.
+ */
+-#include <linux/cpumask.h>
+ #include <linux/export.h>
+-#include <linux/acpi.h>
+
+-#include <asm/jailhouse_para.h>
+ #include <asm/apic.h>
+
+ #include "local.h"
+
+-static struct apic apic_physflat;
+-static struct apic apic_flat;
+-
+-struct apic *apic __ro_after_init = &apic_flat;
+-EXPORT_SYMBOL_GPL(apic);
+-
+-static int flat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+-{
+- return 1;
+-}
+-
+-static void _flat_send_IPI_mask(unsigned long mask, int vector)
+-{
+- unsigned long flags;
+-
+- local_irq_save(flags);
+- __default_send_IPI_dest_field(mask, vector, APIC_DEST_LOGICAL);
+- local_irq_restore(flags);
+-}
+-
+-static void flat_send_IPI_mask(const struct cpumask *cpumask, int vector)
+-{
+- unsigned long mask = cpumask_bits(cpumask)[0];
+-
+- _flat_send_IPI_mask(mask, vector);
+-}
+-
+-static void
+-flat_send_IPI_mask_allbutself(const struct cpumask *cpumask, int vector)
+-{
+- unsigned long mask = cpumask_bits(cpumask)[0];
+- int cpu = smp_processor_id();
+-
+- if (cpu < BITS_PER_LONG)
+- __clear_bit(cpu, &mask);
+-
+- _flat_send_IPI_mask(mask, vector);
+-}
+-
+-static u32 flat_get_apic_id(u32 x)
++static u32 physflat_get_apic_id(u32 x)
+ {
+ return (x >> 24) & 0xFF;
+ }
+
+-static int flat_probe(void)
++static int physflat_probe(void)
+ {
+ return 1;
+ }
+
+-static struct apic apic_flat __ro_after_init = {
+- .name = "flat",
+- .probe = flat_probe,
+- .acpi_madt_oem_check = flat_acpi_madt_oem_check,
+-
+- .dest_mode_logical = true,
+-
+- .disable_esr = 0,
+-
+- .init_apic_ldr = default_init_apic_ldr,
+- .cpu_present_to_apicid = default_cpu_present_to_apicid,
+-
+- .max_apic_id = 0xFE,
+- .get_apic_id = flat_get_apic_id,
+-
+- .calc_dest_apicid = apic_flat_calc_apicid,
+-
+- .send_IPI = default_send_IPI_single,
+- .send_IPI_mask = flat_send_IPI_mask,
+- .send_IPI_mask_allbutself = flat_send_IPI_mask_allbutself,
+- .send_IPI_allbutself = default_send_IPI_allbutself,
+- .send_IPI_all = default_send_IPI_all,
+- .send_IPI_self = default_send_IPI_self,
+- .nmi_to_offline_cpu = true,
+-
+- .read = native_apic_mem_read,
+- .write = native_apic_mem_write,
+- .eoi = native_apic_mem_eoi,
+- .icr_read = native_apic_icr_read,
+- .icr_write = native_apic_icr_write,
+- .wait_icr_idle = apic_mem_wait_icr_idle,
+- .safe_wait_icr_idle = apic_mem_wait_icr_idle_timeout,
+-};
+-
+-/*
+- * Physflat mode is used when there are more than 8 CPUs on a system.
+- * We cannot use logical delivery in this case because the mask
+- * overflows, so use physical mode.
+- */
+ static int physflat_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+ {
+-#ifdef CONFIG_ACPI
+- /*
+- * Quirk: some x86_64 machines can only use physical APIC mode
+- * regardless of how many processors are present (x86_64 ES7000
+- * is an example).
+- */
+- if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
+- (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) {
+- printk(KERN_DEBUG "system APIC only can use physical flat");
+- return 1;
+- }
+-
+- if (!strncmp(oem_id, "IBM", 3) && !strncmp(oem_table_id, "EXA", 3)) {
+- printk(KERN_DEBUG "IBM Summit detected, will use apic physical");
+- return 1;
+- }
+-#endif
+-
+- return 0;
+-}
+-
+-static int physflat_probe(void)
+-{
+- return apic == &apic_physflat || num_possible_cpus() > 8 || jailhouse_paravirt();
++ return 1;
+ }
+
+ static struct apic apic_physflat __ro_after_init = {
+@@ -146,7 +42,7 @@ static struct apic apic_physflat __ro_after_init = {
+ .cpu_present_to_apicid = default_cpu_present_to_apicid,
+
+ .max_apic_id = 0xFE,
+- .get_apic_id = flat_get_apic_id,
++ .get_apic_id = physflat_get_apic_id,
+
+ .calc_dest_apicid = apic_default_calc_apicid,
+
+@@ -166,8 +62,7 @@ static struct apic apic_physflat __ro_after_init = {
+ .wait_icr_idle = apic_mem_wait_icr_idle,
+ .safe_wait_icr_idle = apic_mem_wait_icr_idle_timeout,
+ };
++apic_driver(apic_physflat);
+
+-/*
+- * We need to check for physflat first, so this order is important.
+- */
+-apic_drivers(apic_physflat, apic_flat);
++struct apic *apic __ro_after_init = &apic_physflat;
++EXPORT_SYMBOL_GPL(apic);
diff --git a/SOURCES/tkg-unprivileged-CLONE_NEWUSER.patch b/SOURCES/tkg-unprivileged-CLONE_NEWUSER.patch
deleted file mode 100644
index 4d8146c..0000000
--- a/SOURCES/tkg-unprivileged-CLONE_NEWUSER.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From d50977b164e708bf523a35ef53315355528c3ca6 Mon Sep 17 00:00:00 2001
-From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
-Date: Mon, 16 Sep 2019 04:53:20 +0200
-Subject: [PATCH] ZEN: Add sysctl and CONFIG to disallow unprivileged
- CLONE_NEWUSER
-
-Our default behavior continues to match the vanilla kernel.
----
- include/linux/user_namespace.h | 4 ++++
- init/Kconfig | 16 ++++++++++++++++
- kernel/fork.c | 14 ++++++++++++++
- kernel/sysctl.c | 12 ++++++++++++
- kernel/user_namespace.c | 7 +++++++
- 5 files changed, 53 insertions(+)
-
-diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
-index 45f09bec02c485..87b20e2ee27445 100644
---- a/include/linux/user_namespace.h
-+++ b/include/linux/user_namespace.h
-@@ -148,6 +148,8 @@ static inline void set_userns_rlimit_max(struct user_namespace *ns,
-
- #ifdef CONFIG_USER_NS
-
-+extern int unprivileged_userns_clone;
-+
- static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
- {
- if (ns)
-@@ -181,6 +183,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);
- struct ns_common *ns_get_owner(struct ns_common *ns);
- #else
-
-+#define unprivileged_userns_clone 0
-+
- static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
- {
- return &init_user_ns;
-diff --git a/init/Kconfig b/init/Kconfig
-index 94125d3b6893c7..9f7139b536f638 100644
---- a/init/Kconfig
-+++ b/init/Kconfig
-@@ -1247,6 +1247,22 @@ config USER_NS
-
- If unsure, say N.
-
-+config USER_NS_UNPRIVILEGED
-+ bool "Allow unprivileged users to create namespaces"
-+ default y
-+ depends on USER_NS
-+ help
-+ When disabled, unprivileged users will not be able to create
-+ new namespaces. Allowing users to create their own namespaces
-+ has been part of several recent local privilege escalation
-+ exploits, so if you need user namespaces but are
-+ paranoid^Wsecurity-conscious you want to disable this.
-+
-+ This setting can be overridden at runtime via the
-+ kernel.unprivileged_userns_clone sysctl.
-+
-+ If unsure, say Y.
-+
- config PID_NS
- bool "PID Namespaces"
- default y
-diff --git a/kernel/fork.c b/kernel/fork.c
-index 08969f5aa38d59..ff601cb7a1fae0 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -104,6 +104,10 @@
- #include <uapi/linux/pidfd.h>
- #include <linux/pidfs.h>
-
-+#ifdef CONFIG_USER_NS
-+#include <linux/user_namespace.h>
-+#endif
-+
- #include <asm/pgalloc.h>
- #include <linux/uaccess.h>
- #include <asm/mmu_context.h>
-@@ -2008,6 +2012,10 @@ static __latent_entropy struct task_struct *copy_process(
- if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))
- return ERR_PTR(-EINVAL);
-
-+ if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone)
-+ if (!capable(CAP_SYS_ADMIN))
-+ return ERR_PTR(-EPERM);
-+
- /*
- * Thread groups must share signals as well, and detached threads
- * can only be started up within the thread group.
-@@ -3166,6 +3174,12 @@ int ksys_unshare(unsigned long unshare_flags)
- if (unshare_flags & CLONE_NEWNS)
- unshare_flags |= CLONE_FS;
-
-+ if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) {
-+ err = -EPERM;
-+ if (!capable(CAP_SYS_ADMIN))
-+ goto bad_unshare_out;
-+ }
-+
- err = check_unshare_flags(unshare_flags);
- if (err)
- goto bad_unshare_out;
-diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index c6d9dec11b749d..9a4514ad481b21 100644
---- a/kernel/sysctl.c
-+++ b/kernel/sysctl.c
-@@ -81,6 +81,9 @@
- #ifdef CONFIG_RT_MUTEXES
- #include <linux/rtmutex.h>
- #endif
-+#ifdef CONFIG_USER_NS
-+#include <linux/user_namespace.h>
-+#endif
-
- /* shared constants to be used in various sysctls */
- const int sysctl_vals[] = { 0, 1, 2, 3, 4, 100, 200, 1000, 3000, INT_MAX, 65535, -1 };
-@@ -1659,6 +1662,15 @@ static struct ctl_table kern_table[] = {
- .mode = 0644,
- .proc_handler = proc_dointvec,
- },
-+#ifdef CONFIG_USER_NS
-+ {
-+ .procname = "unprivileged_userns_clone",
-+ .data = &unprivileged_userns_clone,
-+ .maxlen = sizeof(int),
-+ .mode = 0644,
-+ .proc_handler = proc_dointvec,
-+ },
-+#endif
- #ifdef CONFIG_PROC_SYSCTL
- {
- .procname = "tainted",
-diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
-index 54211dbd516c57..16ca0c1516298d 100644
---- a/kernel/user_namespace.c
-+++ b/kernel/user_namespace.c
-@@ -22,6 +22,13 @@
- #include <linux/bsearch.h>
- #include <linux/sort.h>
-
-+/* sysctl */
-+#ifdef CONFIG_USER_NS_UNPRIVILEGED
-+int unprivileged_userns_clone = 1;
-+#else
-+int unprivileged_userns_clone;
-+#endif
-+
- static struct kmem_cache *user_ns_cachep __ro_after_init;
- static DEFINE_MUTEX(userns_state_mutex);
-
diff --git a/SOURCES/tkg.patch b/SOURCES/tkg.patch
deleted file mode 100644
index f29c409..0000000
--- a/SOURCES/tkg.patch
+++ /dev/null
@@ -1,428 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jan200101 <sentrycraft123@gmail.com>
-Date: Tue, 6 Aug 2024 19:20:54 +0200
-Subject: [PATCH] tkg glitched base
-
-Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
----
- .../admin-guide/kernel-parameters.txt | 3 ++
- Makefile | 3 ++
- block/elevator.c | 6 ++--
- drivers/cpufreq/intel_pstate.c | 2 ++
- drivers/infiniband/core/addr.c | 1 +
- drivers/input/evdev.c | 19 ++++++-----
- drivers/md/dm-crypt.c | 5 +++
- fs/dcache.c | 2 +-
- include/linux/mm.h | 3 +-
- include/linux/pageblock-flags.h | 2 +-
- include/linux/pagemap.h | 2 +-
- init/Kconfig | 32 +++++++++++++++++++
- init/Makefile | 2 +-
- kernel/sched/rt.c | 4 +--
- mm/huge_memory.c | 4 +++
- mm/page_alloc.c | 9 +++---
- net/ipv4/Kconfig | 4 +++
- net/sched/Kconfig | 4 +++
- scripts/setlocalversion | 14 ++++----
- 19 files changed, 91 insertions(+), 30 deletions(-)
-
-diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index 2569e7f19b47..5b79a61afd6d 100644
---- a/Documentation/admin-guide/kernel-parameters.txt
-+++ b/Documentation/admin-guide/kernel-parameters.txt
-@@ -355,6 +355,9 @@
- disable
- Do not enable amd_pstate as the default
- scaling driver for the supported processors
-+ enable
-+ Enable intel_pstate in-case "disable" was passed
-+ previously in the kernel boot parameters
- passive
- Use amd_pstate with passive mode as a scaling driver.
- In this mode autonomous selection is disabled.
-diff --git a/Makefile b/Makefile
-index c0af6d8aeb05..94d76f300914 100644
---- a/Makefile
-+++ b/Makefile
-@@ -999,6 +999,9 @@ KBUILD_CFLAGS += $(call cc-option, -fstrict-flex-arrays=3)
- KBUILD_CFLAGS-$(CONFIG_CC_NO_STRINGOP_OVERFLOW) += $(call cc-option, -Wno-stringop-overflow)
- KBUILD_CFLAGS-$(CONFIG_CC_STRINGOP_OVERFLOW) += $(call cc-option, -Wstringop-overflow)
-
-+# disable GCC vectorization on trees
-+KBUILD_CFLAGS += $(call cc-option, -fno-tree-vectorize)
-+
- # disable invalid "can't wrap" optimizations for signed / pointers
- KBUILD_CFLAGS += -fno-strict-overflow
-
-diff --git a/block/elevator.c b/block/elevator.c
-index f64ebd726e58..73227b97162b 100644
---- a/block/elevator.c
-+++ b/block/elevator.c
-@@ -557,8 +557,8 @@ static inline bool elv_support_iosched(struct request_queue *q)
- }
-
- /*
-- * For single queue devices, default to using mq-deadline. If we have multiple
-- * queues or mq-deadline is not available, default to "none".
-+ * For single queue devices, default to using bfq. If we have multiple
-+ * queues or bfq is not available, default to "none".
- */
- static struct elevator_type *elevator_get_default(struct request_queue *q)
- {
-@@ -569,7 +569,7 @@ static struct elevator_type *elevator_get_default(struct request_queue *q)
- !blk_mq_is_shared_tags(q->tag_set->flags))
- return NULL;
-
-- return elevator_find_get(q, "mq-deadline");
-+ return elevator_find_get(q, "bfq");
- }
-
- /*
-diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
-index c31914a9876f..d6ed90b3c930 100644
---- a/drivers/cpufreq/intel_pstate.c
-+++ b/drivers/cpufreq/intel_pstate.c
-@@ -3558,6 +3558,8 @@ static int __init intel_pstate_setup(char *str)
- if (!strcmp(str, "no_hwp"))
- no_hwp = 1;
-
-+ if (!strcmp(str, "enable"))
-+ no_load = 0;
- if (!strcmp(str, "force"))
- force_load = 1;
- if (!strcmp(str, "hwp_only"))
-diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
-index be0743dac3ff..358eb15e1d69 100644
---- a/drivers/infiniband/core/addr.c
-+++ b/drivers/infiniband/core/addr.c
-@@ -814,6 +814,7 @@ int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid,
- union {
- struct sockaddr_in _sockaddr_in;
- struct sockaddr_in6 _sockaddr_in6;
-+ struct sockaddr_ib _sockaddr_ib;
- } sgid_addr, dgid_addr;
- int ret;
-
-diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
-index 51e0c4954600..35c3ad741870 100644
---- a/drivers/input/evdev.c
-+++ b/drivers/input/evdev.c
-@@ -46,6 +46,7 @@ struct evdev_client {
- struct fasync_struct *fasync;
- struct evdev *evdev;
- struct list_head node;
-+ struct rcu_head rcu;
- enum input_clock_type clk_type;
- bool revoked;
- unsigned long *evmasks[EV_CNT];
-@@ -377,13 +378,22 @@ static void evdev_attach_client(struct evdev *evdev,
- spin_unlock(&evdev->client_lock);
- }
-
-+static void evdev_reclaim_client(struct rcu_head *rp)
-+{
-+ struct evdev_client *client = container_of(rp, struct evdev_client, rcu);
-+ unsigned int i;
-+ for (i = 0; i < EV_CNT; ++i)
-+ bitmap_free(client->evmasks[i]);
-+ kvfree(client);
-+}
-+
- static void evdev_detach_client(struct evdev *evdev,
- struct evdev_client *client)
- {
- spin_lock(&evdev->client_lock);
- list_del_rcu(&client->node);
- spin_unlock(&evdev->client_lock);
-- synchronize_rcu();
-+ call_rcu(&client->rcu, evdev_reclaim_client);
- }
-
- static int evdev_open_device(struct evdev *evdev)
-@@ -436,7 +446,6 @@ static int evdev_release(struct inode *inode, struct file *file)
- {
- struct evdev_client *client = file->private_data;
- struct evdev *evdev = client->evdev;
-- unsigned int i;
-
- mutex_lock(&evdev->mutex);
-
-@@ -448,11 +457,6 @@ static int evdev_release(struct inode *inode, struct file *file)
-
- evdev_detach_client(evdev, client);
-
-- for (i = 0; i < EV_CNT; ++i)
-- bitmap_free(client->evmasks[i]);
--
-- kvfree(client);
--
- evdev_close_device(evdev);
-
- return 0;
-@@ -495,7 +499,6 @@ static int evdev_open(struct inode *inode, struct file *file)
-
- err_free_client:
- evdev_detach_client(evdev, client);
-- kvfree(client);
- return error;
- }
-
-diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
-index 1b7a97cc3779..bed9d9588b87 100644
---- a/drivers/md/dm-crypt.c
-+++ b/drivers/md/dm-crypt.c
-@@ -3284,6 +3284,11 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
- goto bad;
- }
-
-+#ifdef CONFIG_ZENIFY
-+ set_bit(DM_CRYPT_NO_READ_WORKQUEUE, &cc->flags);
-+ set_bit(DM_CRYPT_NO_WRITE_WORKQUEUE, &cc->flags);
-+#endif
-+
- ret = crypt_ctr_cipher(ti, argv[0], argv[1]);
- if (ret < 0)
- goto bad;
-diff --git a/fs/dcache.c b/fs/dcache.c
-index 4c144519aa70..fb0f9a1368c8 100644
---- a/fs/dcache.c
-+++ b/fs/dcache.c
-@@ -71,7 +71,7 @@
- * If no ancestor relationship:
- * arbitrary, since it's serialized on rename_lock
- */
--int sysctl_vfs_cache_pressure __read_mostly = 100;
-+int sysctl_vfs_cache_pressure __read_mostly = 50;
- EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure);
-
- __cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock);
-diff --git a/include/linux/mm.h b/include/linux/mm.h
-index b58bad248eef..dbae141dc3ce 100644
---- a/include/linux/mm.h
-+++ b/include/linux/mm.h
-@@ -192,8 +192,7 @@ static inline void __mm_zero_struct_page(struct page *page)
- * not a hard limit any more. Although some userspace tools can be surprised by
- * that.
- */
--#define MAPCOUNT_ELF_CORE_MARGIN (5)
--#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
-+#define DEFAULT_MAX_MAP_COUNT (16777216)
-
- extern int sysctl_max_map_count;
-
-diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h
-index 547e82cdc89a..67a999944cdb 100644
---- a/include/linux/pageblock-flags.h
-+++ b/include/linux/pageblock-flags.h
-@@ -52,7 +52,7 @@ extern unsigned int pageblock_order;
- #else /* CONFIG_TRANSPARENT_HUGEPAGE */
-
- /* If huge pages are not used, group by MAX_ORDER_NR_PAGES */
--#define pageblock_order MAX_PAGE_ORDER
-+#define pageblock_order PAGE_ALLOC_COSTLY_ORDER
-
- #endif /* CONFIG_HUGETLB_PAGE */
-
-diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
-index a0a026d2d244..4d2e7d8512d1 100644
---- a/include/linux/pagemap.h
-+++ b/include/linux/pagemap.h
-@@ -1281,7 +1281,7 @@ struct readahead_control {
- ._index = i, \
- }
-
--#define VM_READAHEAD_PAGES (SZ_128K / PAGE_SIZE)
-+#define VM_READAHEAD_PAGES (SZ_2M / PAGE_SIZE)
-
- void page_cache_ra_unbounded(struct readahead_control *,
- unsigned long nr_to_read, unsigned long lookahead_count);
-diff --git a/init/Kconfig b/init/Kconfig
-index febdea2afc3b..c8c6671c9549 100644
---- a/init/Kconfig
-+++ b/init/Kconfig
-@@ -132,6 +132,38 @@ config THREAD_INFO_IN_TASK
-
- menu "General setup"
-
-+config ZENIFY
-+ bool "A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience"
-+ default y
-+ help
-+ Tunes the kernel for responsiveness at the cost of throughput and power usage.
-+
-+ --- Virtual Memory Subsystem ---------------------------
-+
-+ Mem dirty before bg writeback..: 10 % -> 20 %
-+ Mem dirty before sync writeback: 20 % -> 50 %
-+
-+ --- Block Layer ----------------------------------------
-+
-+ Queue depth...............: 128 -> 512
-+ Default MQ scheduler......: mq-deadline -> bfq
-+
-+ --- CFS CPU Scheduler ----------------------------------
-+
-+ Scheduling latency.............: 6 -> 3 ms
-+ Minimal granularity............: 0.75 -> 0.3 ms
-+ Wakeup granularity.............: 1 -> 0.5 ms
-+ CPU migration cost.............: 0.5 -> 0.25 ms
-+ Bandwidth slice size...........: 5 -> 3 ms
-+ Ondemand fine upscaling limit..: 95 % -> 85 %
-+
-+ --- MuQSS CPU Scheduler --------------------------------
-+
-+ Scheduling interval............: 6 -> 3 ms
-+ ISO task max realtime use......: 70 % -> 25 %
-+ Ondemand coarse upscaling limit: 80 % -> 45 %
-+ Ondemand fine upscaling limit..: 95 % -> 45 %
-+
- config BROKEN
- bool
-
-diff --git a/init/Makefile b/init/Makefile
-index ab71cedc5fd6..eafc4ef50ab5 100644
---- a/init/Makefile
-+++ b/init/Makefile
-@@ -33,7 +33,7 @@ build-timestamp = $(or $(KBUILD_BUILD_TIMESTAMP), $(build-timestamp-auto))
-
- # Maximum length of UTS_VERSION is 64 chars
- filechk_uts_version = \
-- utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "$(build-timestamp)" | cut -b -64); \
-+ utsver=$$(echo '$(pound)'"$(build-version)" $(smp-flag-y) $(preempt-flag-y) "TKG" "$(build-timestamp)" | cut -b -64); \
- echo '$(pound)'define UTS_VERSION \""$${utsver}"\"
-
- #
-diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
-index aa4c1c874fa4..cd58198e990f 100644
---- a/kernel/sched/rt.c
-+++ b/kernel/sched/rt.c
-@@ -20,9 +20,9 @@ int sysctl_sched_rt_period = 1000000;
-
- /*
- * part of the period that we allow rt tasks to run in us.
-- * default: 0.95s
-+ * XanMod default: 0.98s
- */
--int sysctl_sched_rt_runtime = 950000;
-+int sysctl_sched_rt_runtime = 980000;
-
- #ifdef CONFIG_SYSCTL
- static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC * RR_TIMESLICE) / HZ;
-diff --git a/mm/huge_memory.c b/mm/huge_memory.c
-index 374a0d54b08d..1d4efe9df1a6 100644
---- a/mm/huge_memory.c
-+++ b/mm/huge_memory.c
-@@ -63,7 +63,11 @@ unsigned long transparent_hugepage_flags __read_mostly =
- #ifdef CONFIG_TRANSPARENT_HUGEPAGE_MADVISE
- (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)|
- #endif
-+#ifdef CONFIG_ZENIFY
-+ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG)|
-+#else
- (1<<TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG)|
-+#endif
- (1<<TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG)|
- (1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG);
-
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index df2c442f1c47..d8d83c503419 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -2228,16 +2228,17 @@ __rmqueue(struct zone *zone, unsigned int order, int migratetype,
- }
-
- /*
-- * Obtain a specified number of elements from the buddy allocator, all under
-- * a single hold of the lock, for efficiency. Add them to the supplied list.
-- * Returns the number of new pages which were placed at *list.
-+ * Obtain a specified number of elements from the buddy allocator, and relax the
-+ * zone lock when needed. Add them to the supplied list. Returns the number of
-+ * new pages which were placed at *list.
- */
- static int rmqueue_bulk(struct zone *zone, unsigned int order,
- unsigned long count, struct list_head *list,
- int migratetype, unsigned int alloc_flags)
- {
- unsigned long flags;
-- int i;
-+ const bool can_resched = !preempt_count() && !irqs_disabled();
-+ int i, allocated = 0, last_mod = 0;
-
- spin_lock_irqsave(&zone->lock, flags);
- for (i = 0; i < count; ++i) {
-diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
-index 8e94ed7c56a0..c103bc45c900 100644
---- a/net/ipv4/Kconfig
-+++ b/net/ipv4/Kconfig
-@@ -700,6 +700,9 @@ choice
- config DEFAULT_VEGAS
- bool "Vegas" if TCP_CONG_VEGAS=y
-
-+ config DEFAULT_YEAH
-+ bool "YeAH" if TCP_CONG_YEAH=y
-+
- config DEFAULT_VENO
- bool "Veno" if TCP_CONG_VENO=y
-
-@@ -733,6 +736,7 @@ config DEFAULT_TCP_CONG
- default "htcp" if DEFAULT_HTCP
- default "hybla" if DEFAULT_HYBLA
- default "vegas" if DEFAULT_VEGAS
-+ default "yeah" if DEFAULT_YEAH
- default "westwood" if DEFAULT_WESTWOOD
- default "veno" if DEFAULT_VENO
- default "reno" if DEFAULT_RENO
-diff --git a/net/sched/Kconfig b/net/sched/Kconfig
-index 8180d0c12fce..22c5a59d5058 100644
---- a/net/sched/Kconfig
-+++ b/net/sched/Kconfig
-@@ -438,6 +438,9 @@ choice
- config DEFAULT_SFQ
- bool "Stochastic Fair Queue" if NET_SCH_SFQ
-
-+ config DEFAULT_CAKE
-+ bool "Common Applications Kept Enhanced" if NET_SCH_CAKE
-+
- config DEFAULT_PFIFO_FAST
- bool "Priority FIFO Fast"
- endchoice
-@@ -449,6 +452,7 @@ config DEFAULT_NET_SCH
- default "fq_codel" if DEFAULT_FQ_CODEL
- default "fq_pie" if DEFAULT_FQ_PIE
- default "sfq" if DEFAULT_SFQ
-+ default "cake" if DEFAULT_CAKE
- default "pfifo_fast"
- endif
-
-diff --git a/scripts/setlocalversion b/scripts/setlocalversion
-index 38b96c6797f4..e22768e0e875 100755
---- a/scripts/setlocalversion
-+++ b/scripts/setlocalversion
-@@ -92,7 +92,7 @@ scm_version()
- # If only the short version is requested, don't bother
- # running further git commands
- if $short; then
-- echo "+"
-+ #echo "+"
- return
- fi
- # If we are past the tagged commit, we pretty print it.
-@@ -119,12 +119,12 @@ scm_version()
- # git-diff-index does not refresh the index, so it may give misleading
- # results.
- # See git-update-index(1), git-diff-index(1), and git-status(1).
-- if {
-- git --no-optional-locks status -uno --porcelain 2>/dev/null ||
-- git diff-index --name-only HEAD
-- } | read dummy; then
-- printf '%s' -dirty
-- fi
-+ #if {
-+ # git --no-optional-locks status -uno --porcelain 2>/dev/null ||
-+ # git diff-index --name-only HEAD
-+ #} | read dummy; then
-+ # printf '%s' -dirty
-+ #fi
- }
-
- collect_files()
diff --git a/SOURCES/uki_addons.json b/SOURCES/uki_addons.json
new file mode 100644
index 0000000..d82dc87
--- /dev/null
+++ b/SOURCES/uki_addons.json
@@ -0,0 +1,12 @@
+{
+ "virt": {
+ "common": {
+ "fips-disable.addon": [
+ "fips=0\n"
+ ],
+ "fips-enable.addon": [
+ "fips=1\n"
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/SOURCES/uki_create_addons.py b/SOURCES/uki_create_addons.py
new file mode 100755
index 0000000..e30d43b
--- /dev/null
+++ b/SOURCES/uki_create_addons.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python3
+#
+# This script inspects a given json proving a list of addons, and
+# creates an addon for each key/value pair matching the given uki, distro and
+# arch provided in input.
+#
+# Usage: python uki_create_addons.py input_json out_dir uki distro arch
+#
+# This tool requires the systemd-ukify and systemd-boot packages.
+#
+# Addon file
+#-----------
+# Each addon terminates with .addon
+# Each addon contains only two types of lines:
+# Lines beginning with '#' are description and thus ignored
+# All other lines are command line to be added.
+# The name of the end resulting addon is taken from the json hierarchy.
+# For example, and addon in json['virt']['rhel']['x86_64']['hello.addon'] will
+# result in an UKI addon file generated in out_dir called
+# hello-virt.rhel.x86_64.addon.efi
+#
+# The common key, present in any sub-dict in the provided json (except the leaf dict)
+# is used as place for default addons when the same addon is not defined deep
+# in the hierarchy. For example, if we define test.addon (text: 'test1\n') in
+# json['common']['test.addon'] = ['test1\n'] and another test.addon (text: test2) in
+# json['virt']['common']['test.addon'] = ['test2'], any other uki except virt
+# will have a test.addon.efi with text "test1", and virt will have a
+# test.addon.efi with "test2"
+#
+# sbat.conf
+#----------
+# This dict is containing the sbat string for *all* addons being created.
+# This dict is optional, but when used has to be put in a sub-dict with
+# { 'sbat' : { 'sbat.conf' : ['your text here'] }}
+# It follows the same syntax as the addon files, meaning '#' is comment and
+# the rest is taken as sbat string and feed to ukify.
+
+import os
+import sys
+import json
+import collections
+import subprocess
+
+
+UKIFY_PATH = '/usr/lib/systemd/ukify'
+
+def usage(err):
+ print(f'Usage: {os.path.basename(__file__)} input_json output_dir uki distro arch')
+ print(f'Error:{err}')
+ sys.exit(1)
+
+def check_clean_arguments(input_json, out_dir):
+ # Remove end '/'
+ if out_dir[-1:] == '/':
+ out_dir = out_dir[:-1]
+ if not os.path.isfile(input_json):
+ usage(f'input_json {input_json} is not a file, or does not exist!')
+ if not os.path.isdir(out_dir):
+ usage(f'out_dir_dir {out_dir} is not a dir, or does not exist!')
+ return out_dir
+
+UKICmdlineAddon = collections.namedtuple('UKICmdlineAddon', ['name', 'cmdline'])
+uki_addons_list = []
+uki_addons = {}
+addon_sbat_string = None
+
+def parse_lines(lines, rstrip=True):
+ cmdline = ''
+ for l in lines:
+ l = l.lstrip()
+ if not l:
+ continue
+ if l[0] == '#':
+ continue
+ # rstrip is used only for addons cmdline, not sbat.conf, as it replaces
+ # return lines with spaces.
+ if rstrip:
+ l = l.rstrip() + ' '
+ cmdline += l
+ if cmdline == '':
+ return ''
+ return cmdline
+
+def parse_all_addons(in_obj):
+ global addon_sbat_string
+
+ for el in in_obj.keys():
+ # addon found: copy it in our global dict uki_addons
+ if el.endswith('.addon'):
+ uki_addons[el] = in_obj[el]
+
+ if 'sbat' in in_obj and 'sbat.conf' in in_obj['sbat']:
+ # sbat.conf found: override sbat with the most specific one found
+ addon_sbat_string = parse_lines(in_obj['sbat']['sbat.conf'], rstrip=False)
+
+def recursively_find_addons(in_obj, folder_list):
+ # end of recursion, leaf directory. Search all addons here
+ if len(folder_list) == 0:
+ parse_all_addons(in_obj)
+ return
+
+ # first, check for common folder
+ if 'common' in in_obj:
+ parse_all_addons(in_obj['common'])
+
+ # second, check if there is a match with the searched folder
+ if folder_list[0] in in_obj:
+ folder_next = in_obj[folder_list[0]]
+ folder_list = folder_list[1:]
+ recursively_find_addons(folder_next, folder_list)
+
+def parse_in_json(in_json, uki_name, distro, arch):
+ with open(in_json, 'r') as f:
+ in_obj = json.load(f)
+ recursively_find_addons(in_obj, [uki_name, distro, arch])
+
+ for addon_name, cmdline in uki_addons.items():
+ addon_name = addon_name.replace(".addon","")
+ addon_full_name = f'{addon_name}-{uki_name}.{distro}.{arch}.addon.efi'
+ cmdline = parse_lines(cmdline).rstrip()
+ if cmdline:
+ uki_addons_list.append(UKICmdlineAddon(addon_full_name, cmdline))
+
+def create_addons(out_dir):
+ for uki_addon in uki_addons_list:
+ out_path = os.path.join(out_dir, uki_addon.name)
+ cmd = [
+ f'{UKIFY_PATH}', 'build',
+ f'--cmdline="{uki_addon.cmdline}"',
+ f'--output={out_path}']
+ if addon_sbat_string:
+ cmd.append('--sbat="' + addon_sbat_string.rstrip() +'"')
+
+ subprocess.check_call(cmd, text=True)
+
+if __name__ == "__main__":
+ argc = len(sys.argv) - 1
+ if argc != 5:
+ usage('too few or too many parameters!')
+
+ input_json = sys.argv[1]
+ out_dir = sys.argv[2]
+ uki_name = sys.argv[3]
+ distro = sys.argv[4]
+ arch = sys.argv[5]
+
+ out_dir = check_clean_arguments(input_json, out_dir)
+ parse_in_json(input_json, uki_name, distro, arch)
+ create_addons(out_dir)
+
+
diff --git a/SOURCES/v0-oxp-sensors.patch b/SOURCES/v0-oxp-sensors.patch
index 4b42d51..098119f 100644
--- a/SOURCES/v0-oxp-sensors.patch
+++ b/SOURCES/v0-oxp-sensors.patch
@@ -1,54 +1,152 @@
-From b75680974fe91faa5fcc1bbe39156b1e2e134238 Mon Sep 17 00:00:00 2001
-From: "Derek J. Clark" <derekjohn.clark@gmail.com>
-Date: Wed, 27 Mar 2024 18:47:00 -0700
-Subject: [PATCH 1/4] oxp-sensors: hwmon: Add OrangePi Neo PWM fan control
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jan200101 <sentrycraft123@gmail.com>
+Date: Sat, 21 Sep 2024 09:44:41 +0200
+Subject: [PATCH] backport oxp-sensors
-Add OrangePi NEO handheld device. The OrangePi Neo uses different registers
-for PWM manual mode, set PWM, and read fan speed than previous devices. Valid
-PWM input and duty cycle is 1-244, we scale this to 1-155 to maintain
-compatibility with existing userspace tools.
+Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
- drivers/hwmon/oxp-sensors.c | 112 ++++++++++++++++++++++++++++++++----
- 1 file changed, 100 insertions(+), 12 deletions(-)
+ drivers/hwmon/oxp-sensors.c | 301 ++++++++++++++++++++++++++++++------
+ 1 file changed, 257 insertions(+), 44 deletions(-)
diff --git a/drivers/hwmon/oxp-sensors.c b/drivers/hwmon/oxp-sensors.c
-index 8d3b0f86c..ebca28b4a 100644
+index 8d3b0f86cc57..83730d931824 100644
--- a/drivers/hwmon/oxp-sensors.c
+++ b/drivers/hwmon/oxp-sensors.c
-@@ -46,6 +46,7 @@ enum oxp_board {
+@@ -1,18 +1,21 @@
+ // SPDX-License-Identifier: GPL-2.0+
+ /*
+- * Platform driver for OneXPlayer, AOK ZOE, and Aya Neo Handhelds that expose
+- * fan reading and control via hwmon sysfs.
++ * Platform driver for OneXPlayer, AOKZOE, AYANEO, and OrangePi Handhelds
++ * that expose fan reading and control via hwmon sysfs.
+ *
+ * Old OXP boards have the same DMI strings and they are told apart by
+- * the boot cpu vendor (Intel/AMD). Currently only AMD boards are
+- * supported but the code is made to be simple to add other handheld
+- * boards in the future.
++ * the boot cpu vendor (Intel/AMD). Of these older models only AMD is
++ * supported.
++ *
+ * Fan control is provided via pwm interface in the range [0-255].
+ * Old AMD boards use [0-100] as range in the EC, the written value is
+ * scaled to accommodate for that. Newer boards like the mini PRO and
+- * AOK ZOE are not scaled but have the same EC layout.
++ * AOKZOE are not scaled but have the same EC layout. Newer models
++ * like the 2 and X1 are [0-184] and are scaled to 0-255. OrangePi
++ * are [1-244] and scaled to 0-255.
+ *
+ * Copyright (C) 2022 Joaquín I. Aramendía <samsagax@gmail.com>
++ * Copyright (C) 2024 Derek J. Clark <derekjohn.clark@gmail.com>
+ */
+
+ #include <linux/acpi.h>
+@@ -43,32 +46,48 @@ enum oxp_board {
+ aok_zoe_a1 = 1,
+ aya_neo_2,
+ aya_neo_air,
++ aya_neo_air_1s,
aya_neo_air_plus_mendo,
aya_neo_air_pro,
++ aya_neo_flip,
aya_neo_geek,
++ aya_neo_kun,
+ orange_pi_neo,
++ oxp_2,
++ oxp_fly,
oxp_mini_amd,
oxp_mini_amd_a07,
oxp_mini_amd_pro,
-@@ -54,10 +55,16 @@ enum oxp_board {
++ oxp_x1,
+ };
+
static enum oxp_board board;
/* Fan reading and PWM */
-#define OXP_SENSOR_FAN_REG 0x76 /* Fan reading is 2 registers long */
-#define OXP_SENSOR_PWM_ENABLE_REG 0x4A /* PWM enable is 1 register long */
-#define OXP_SENSOR_PWM_REG 0x4B /* PWM reading is 1 register long */
-+#define OXP_SENSOR_FAN_REG 0x76 /* Fan reading is 2 registers long */
-+#define OXP_SENSOR_PWM_ENABLE_REG 0x4A /* PWM enable is 1 register long */
-+#define OXP_SENSOR_PWM_REG 0x4B /* PWM reading is 1 register long */
-
-+#define ORANGEPI_SENSOR_FAN_REG 0x78 /* Fan reading is 2 registers long */
-+#define ORANGEPI_SENSOR_PWM_ENABLE_REG 0x40 /* PWM enable is 1 register long */
-+#define ORANGEPI_SENSOR_PWM_REG 0x38 /* PWM reading is 1 register long */
++#define OXP_SENSOR_FAN_REG 0x76 /* Fan reading is 2 registers long */
++#define OXP_2_SENSOR_FAN_REG 0x58 /* Fan reading is 2 registers long */
++#define OXP_SENSOR_PWM_ENABLE_REG 0x4A /* PWM enable is 1 register long */
++#define OXP_SENSOR_PWM_REG 0x4B /* PWM reading is 1 register long */
++#define PWM_MODE_AUTO 0x00
++#define PWM_MODE_MANUAL 0x01
+
-+#define PWM_MODE_AUTO 0x00
-+#define PWM_MODE_MANUAL 0x01
++/* OrangePi fan reading and PWM */
++#define ORANGEPI_SENSOR_FAN_REG 0x78 /* Fan reading is 2 registers long */
++#define ORANGEPI_SENSOR_PWM_ENABLE_REG 0x40 /* PWM enable is 1 register long */
++#define ORANGEPI_SENSOR_PWM_REG 0x38 /* PWM reading is 1 register long */
+
/* Turbo button takeover function
- * Older boards have different values and EC registers
+- * Older boards have different values and EC registers
++ * Different boards have different values and EC registers
* for the same function
-@@ -120,6 +127,13 @@ static const struct dmi_system_id dmi_table[] = {
+ */
+-#define OXP_OLD_TURBO_SWITCH_REG 0x1E
+-#define OXP_OLD_TURBO_TAKE_VAL 0x01
+-#define OXP_OLD_TURBO_RETURN_VAL 0x00
++#define OXP_TURBO_SWITCH_REG 0xF1 /* Mini Pro, OneXFly, AOKZOE */
++#define OXP_2_TURBO_SWITCH_REG 0xEB /* OXP2 and X1 */
++#define OXP_MINI_TURBO_SWITCH_REG 0x1E /* Mini AO7 */
++
++#define OXP_MINI_TURBO_TAKE_VAL 0x01 /* Mini AO7 */
++#define OXP_TURBO_TAKE_VAL 0x40 /* All other models */
+
+-#define OXP_TURBO_SWITCH_REG 0xF1
+-#define OXP_TURBO_TAKE_VAL 0x40
+-#define OXP_TURBO_RETURN_VAL 0x00
++#define OXP_TURBO_RETURN_VAL 0x00 /* Common return val */
+
+ static const struct dmi_system_id dmi_table[] = {
+ {
+@@ -88,7 +107,7 @@ static const struct dmi_system_id dmi_table[] = {
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+- DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO 2"),
++ DMI_MATCH(DMI_BOARD_NAME, "AYANEO 2"),
+ },
+ .driver_data = (void *)aya_neo_2,
+ },
+@@ -99,6 +118,13 @@ static const struct dmi_system_id dmi_table[] = {
+ },
+ .driver_data = (void *)aya_neo_air,
+ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
++ DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR 1S"),
++ },
++ .driver_data = (void *)aya_neo_air_1s,
++ },
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+@@ -116,10 +142,31 @@ static const struct dmi_system_id dmi_table[] = {
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+- DMI_EXACT_MATCH(DMI_BOARD_NAME, "GEEK"),
++ DMI_MATCH(DMI_BOARD_NAME, "FLIP"),
++ },
++ .driver_data = (void *)aya_neo_flip,
++ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
++ DMI_MATCH(DMI_BOARD_NAME, "GEEK"),
},
.driver_data = (void *)aya_neo_geek,
},
+ {
+ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
++ DMI_EXACT_MATCH(DMI_BOARD_NAME, "KUN"),
++ },
++ .driver_data = (void *)aya_neo_kun,
++ },
++ {
++ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "OrangePi"),
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEO-01"),
+ },
@@ -57,7 +155,122 @@ index 8d3b0f86c..ebca28b4a 100644
{
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-@@ -295,12 +309,42 @@ static DEVICE_ATTR_RW(tt_toggle);
+@@ -127,6 +174,20 @@ static const struct dmi_system_id dmi_table[] = {
+ },
+ .driver_data = (void *)oxp_mini_amd,
+ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
++ DMI_MATCH(DMI_BOARD_NAME, "ONEXPLAYER 2"),
++ },
++ .driver_data = (void *)oxp_2,
++ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
++ DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1"),
++ },
++ .driver_data = (void *)oxp_fly,
++ },
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
+@@ -141,6 +202,13 @@ static const struct dmi_system_id dmi_table[] = {
+ },
+ .driver_data = (void *)oxp_mini_amd_pro,
+ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
++ DMI_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1"),
++ },
++ .driver_data = (void *)oxp_x1,
++ },
+ {},
+ };
+
+@@ -192,14 +260,20 @@ static int tt_toggle_enable(void)
+
+ switch (board) {
+ case oxp_mini_amd_a07:
+- reg = OXP_OLD_TURBO_SWITCH_REG;
+- val = OXP_OLD_TURBO_TAKE_VAL;
++ reg = OXP_MINI_TURBO_SWITCH_REG;
++ val = OXP_MINI_TURBO_TAKE_VAL;
+ break;
+- case oxp_mini_amd_pro:
+ case aok_zoe_a1:
++ case oxp_fly:
++ case oxp_mini_amd_pro:
+ reg = OXP_TURBO_SWITCH_REG;
+ val = OXP_TURBO_TAKE_VAL;
+ break;
++ case oxp_2:
++ case oxp_x1:
++ reg = OXP_2_TURBO_SWITCH_REG;
++ val = OXP_TURBO_TAKE_VAL;
++ break;
+ default:
+ return -EINVAL;
+ }
+@@ -213,14 +287,20 @@ static int tt_toggle_disable(void)
+
+ switch (board) {
+ case oxp_mini_amd_a07:
+- reg = OXP_OLD_TURBO_SWITCH_REG;
+- val = OXP_OLD_TURBO_RETURN_VAL;
++ reg = OXP_MINI_TURBO_SWITCH_REG;
++ val = OXP_TURBO_RETURN_VAL;
+ break;
+- case oxp_mini_amd_pro:
+ case aok_zoe_a1:
++ case oxp_fly:
++ case oxp_mini_amd_pro:
+ reg = OXP_TURBO_SWITCH_REG;
+ val = OXP_TURBO_RETURN_VAL;
+ break;
++ case oxp_2:
++ case oxp_x1:
++ reg = OXP_2_TURBO_SWITCH_REG;
++ val = OXP_TURBO_RETURN_VAL;
++ break;
+ default:
+ return -EINVAL;
+ }
+@@ -233,8 +313,11 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
+ {
+ switch (board) {
+ case aok_zoe_a1:
++ case oxp_2:
++ case oxp_fly:
+ case oxp_mini_amd_a07:
+ case oxp_mini_amd_pro:
++ case oxp_x1:
+ return attr->mode;
+ default:
+ break;
+@@ -273,12 +356,17 @@ static ssize_t tt_toggle_show(struct device *dev,
+
+ switch (board) {
+ case oxp_mini_amd_a07:
+- reg = OXP_OLD_TURBO_SWITCH_REG;
++ reg = OXP_MINI_TURBO_SWITCH_REG;
+ break;
+- case oxp_mini_amd_pro:
+ case aok_zoe_a1:
++ case oxp_fly:
++ case oxp_mini_amd_pro:
+ reg = OXP_TURBO_SWITCH_REG;
+ break;
++ case oxp_2:
++ case oxp_x1:
++ reg = OXP_2_TURBO_SWITCH_REG;
++ break;
+ default:
+ return -EINVAL;
+ }
+@@ -295,12 +383,53 @@ static DEVICE_ATTR_RW(tt_toggle);
/* PWM enable/disable functions */
static int oxp_pwm_enable(void)
{
@@ -70,10 +283,15 @@ index 8d3b0f86c..ebca28b4a 100644
+ case aya_neo_air:
+ case aya_neo_air_plus_mendo:
+ case aya_neo_air_pro:
++ case aya_neo_flip:
+ case aya_neo_geek:
++ case aya_neo_kun:
++ case oxp_2:
++ case oxp_fly:
+ case oxp_mini_amd:
+ case oxp_mini_amd_a07:
+ case oxp_mini_amd_pro:
++ case oxp_x1:
+ return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
+ default:
+ return -EINVAL;
@@ -89,12 +307,18 @@ index 8d3b0f86c..ebca28b4a 100644
+ case aok_zoe_a1:
+ case aya_neo_2:
+ case aya_neo_air:
++ case aya_neo_air_1s:
+ case aya_neo_air_plus_mendo:
+ case aya_neo_air_pro:
++ case aya_neo_flip:
+ case aya_neo_geek:
++ case aya_neo_kun:
++ case oxp_2:
++ case oxp_fly:
+ case oxp_mini_amd:
+ case oxp_mini_amd_a07:
+ case oxp_mini_amd_pro:
++ case oxp_x1:
+ return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
+ default:
+ return -EINVAL;
@@ -102,7 +326,7 @@ index 8d3b0f86c..ebca28b4a 100644
}
/* Callbacks for hwmon interface */
-@@ -326,7 +370,22 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
+@@ -326,7 +455,30 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
case hwmon_fan:
switch (attr) {
case hwmon_fan_input:
@@ -110,12 +334,19 @@ index 8d3b0f86c..ebca28b4a 100644
+ switch (board) {
+ case orange_pi_neo:
+ return read_from_ec(ORANGEPI_SENSOR_FAN_REG, 2, val);
++ case oxp_2:
++ case oxp_x1:
++ return read_from_ec(OXP_2_SENSOR_FAN_REG, 2, val);
+ case aok_zoe_a1:
+ case aya_neo_2:
+ case aya_neo_air:
++ case aya_neo_air_1s:
+ case aya_neo_air_plus_mendo:
+ case aya_neo_air_pro:
++ case aya_neo_flip:
+ case aya_neo_geek:
++ case aya_neo_kun:
++ case oxp_fly:
+ case oxp_mini_amd:
+ case oxp_mini_amd_a07:
+ case oxp_mini_amd_pro:
@@ -123,10 +354,11 @@ index 8d3b0f86c..ebca28b4a 100644
+ default:
+ break;
+ }
++ break;
default:
break;
}
-@@ -334,10 +393,14 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
+@@ -334,27 +486,72 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
case hwmon_pwm:
switch (attr) {
case hwmon_pwm_input:
@@ -141,20 +373,34 @@ index 8d3b0f86c..ebca28b4a 100644
+ /* scale from range [1-244] */
+ *val = ((*val - 1) * 254 / 243) + 1;
+ break;
++ case oxp_2:
++ case oxp_x1:
++ ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
++ if (ret)
++ return ret;
++ /* scale from range [0-184] */
++ *val = (*val * 255) / 184;
++ break;
case aya_neo_2:
case aya_neo_air:
++ case aya_neo_air_1s:
case aya_neo_air_plus_mendo:
-@@ -345,16 +408,37 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
+ case aya_neo_air_pro:
++ case aya_neo_flip:
case aya_neo_geek:
++ case aya_neo_kun:
case oxp_mini_amd:
case oxp_mini_amd_a07:
+ ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
+ if (ret)
+ return ret;
++ /* scale from range [0-100] */
*val = (*val * 255) / 100;
break;
- case oxp_mini_amd_pro:
+- case oxp_mini_amd_pro:
case aok_zoe_a1:
++ case oxp_fly:
++ case oxp_mini_amd_pro:
default:
+ ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
+ if (ret)
@@ -170,20 +416,27 @@ index 8d3b0f86c..ebca28b4a 100644
+ case aok_zoe_a1:
+ case aya_neo_2:
+ case aya_neo_air:
++ case aya_neo_air_1s:
+ case aya_neo_air_plus_mendo:
+ case aya_neo_air_pro:
++ case aya_neo_flip:
+ case aya_neo_geek:
++ case aya_neo_kun:
++ case oxp_2:
++ case oxp_fly:
+ case oxp_mini_amd:
+ case oxp_mini_amd_a07:
+ case oxp_mini_amd_pro:
++ case oxp_x1:
+ return read_from_ec(OXP_SENSOR_PWM_ENABLE_REG, 1, val);
+ default:
+ break;
+ }
++ break;
default:
break;
}
-@@ -381,6 +465,10 @@ static int oxp_platform_write(struct device *dev, enum hwmon_sensor_types type,
+@@ -381,21 +578,36 @@ static int oxp_platform_write(struct device *dev, enum hwmon_sensor_types type,
if (val < 0 || val > 255)
return -EINVAL;
switch (board) {
@@ -191,420 +444,98 @@ index 8d3b0f86c..ebca28b4a 100644
+ /* scale to range [1-244] */
+ val = ((val - 1) * 243 / 254) + 1;
+ return write_to_ec(ORANGEPI_SENSOR_PWM_REG, val);
++ case oxp_2:
++ case oxp_x1:
++ /* scale to range [0-184] */
++ val = (val * 184) / 255;
++ return write_to_ec(OXP_SENSOR_PWM_REG, val);
case aya_neo_2:
case aya_neo_air:
++ case aya_neo_air_1s:
case aya_neo_air_plus_mendo:
-@@ -389,13 +477,13 @@ static int oxp_platform_write(struct device *dev, enum hwmon_sensor_types type,
+ case aya_neo_air_pro:
++ case aya_neo_flip:
+ case aya_neo_geek:
++ case aya_neo_kun:
case oxp_mini_amd:
case oxp_mini_amd_a07:
++ /* scale to range [0-100] */
val = (val * 100) / 255;
- break;
+ return write_to_ec(OXP_SENSOR_PWM_REG, val);
case aok_zoe_a1:
++ case oxp_fly:
case oxp_mini_amd_pro:
+ return write_to_ec(OXP_SENSOR_PWM_REG, val);
default:
break;
}
- return write_to_ec(OXP_SENSOR_PWM_REG, val);
++ break;
default:
break;
}
---
-2.45.2
-
-
-From 78c8501d4c2dc4dcc2125dcf130723b1fbe72e1c Mon Sep 17 00:00:00 2001
-From: "Derek J. Clark" <derekjohn.clark@gmail.com>
-Date: Wed, 27 Mar 2024 18:50:22 -0700
-Subject: [PATCH 2/4] oxp-sensors: hwmon: Add OneXPlayer 2 and OneXFly
-
-Add OneXPlayer 2 series and OneXFly handhelds. The 2 series uses a new register
-for turbo button takeover. While at it, adjust formatting of some constants and
-reorder all cases alphabetically for consistency. Rename some constants for
-disambiguation.
----
- drivers/hwmon/oxp-sensors.c | 90 ++++++++++++++++++++++++++++++-------
- 1 file changed, 74 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/hwmon/oxp-sensors.c b/drivers/hwmon/oxp-sensors.c
-index ebca28b4a..cf8ba1cc6 100644
---- a/drivers/hwmon/oxp-sensors.c
-+++ b/drivers/hwmon/oxp-sensors.c
-@@ -47,6 +47,8 @@ enum oxp_board {
- aya_neo_air_pro,
- aya_neo_geek,
- orange_pi_neo,
-+ oxp_2,
-+ oxp_fly,
- oxp_mini_amd,
- oxp_mini_amd_a07,
- oxp_mini_amd_pro,
-@@ -66,16 +68,16 @@ static enum oxp_board board;
- #define PWM_MODE_AUTO 0x00
- #define PWM_MODE_MANUAL 0x01
- /* Turbo button takeover function
-- * Older boards have different values and EC registers
-+ * Different boards have different values and EC registers
- * for the same function
- */
--#define OXP_OLD_TURBO_SWITCH_REG 0x1E
--#define OXP_OLD_TURBO_TAKE_VAL 0x01
--#define OXP_OLD_TURBO_RETURN_VAL 0x00
-+#define OXP_TURBO_SWITCH_REG 0xF1
-+#define OXP_TURBO_TAKE_VAL 0x40
-+#define OXP_TURBO_RETURN_VAL 0x00 /* Common return val */
-
--#define OXP_TURBO_SWITCH_REG 0xF1
--#define OXP_TURBO_TAKE_VAL 0x40
--#define OXP_TURBO_RETURN_VAL 0x00
-+#define OXP_2_TURBO_SWITCH_REG 0xEB /* OXP2 and OXP2 Pro */
-+#define OXP_MINI_TURBO_SWITCH_REG 0x1E /* Mini AO7 */
-+#define OXP_MINI_TURBO_TAKE_VAL 0x01
-
- static const struct dmi_system_id dmi_table[] = {
- {
-@@ -141,6 +143,34 @@ static const struct dmi_system_id dmi_table[] = {
- },
- .driver_data = (void *)oxp_mini_amd,
- },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER 2 ARP23"),
-+ },
-+ .driver_data = (void *)oxp_2,
-+ },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER 2 PRO ARP23P"),
-+ },
-+ .driver_data = (void *)oxp_2,
-+ },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER 2 PRO ARP23P EVA-01"),
-+ },
-+ .driver_data = (void *)oxp_2,
-+ },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1"),
-+ },
-+ .driver_data = (void *)oxp_fly,
-+ },
- {
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
-@@ -206,14 +236,19 @@ static int tt_toggle_enable(void)
+@@ -467,19 +679,20 @@ static int __init oxp_platform_init(void)
+ {
+ const struct dmi_system_id *dmi_entry;
- switch (board) {
- case oxp_mini_amd_a07:
-- reg = OXP_OLD_TURBO_SWITCH_REG;
-- val = OXP_OLD_TURBO_TAKE_VAL;
-+ reg = OXP_MINI_TURBO_SWITCH_REG;
-+ val = OXP_MINI_TURBO_TAKE_VAL;
- break;
-- case oxp_mini_amd_pro:
- case aok_zoe_a1:
-+ case oxp_fly:
-+ case oxp_mini_amd_pro:
- reg = OXP_TURBO_SWITCH_REG;
- val = OXP_TURBO_TAKE_VAL;
- break;
-+ case oxp_2:
-+ reg = OXP_2_TURBO_SWITCH_REG;
-+ val = OXP_TURBO_TAKE_VAL;
-+ break;
- default:
- return -EINVAL;
- }
-@@ -227,14 +262,19 @@ static int tt_toggle_disable(void)
+- /*
+- * Have to check for AMD processor here because DMI strings are the
+- * same between Intel and AMD boards, the only way to tell them apart
+- * is the CPU.
+- * Intel boards seem to have different EC registers and values to
+- * read/write.
+- */
+ dmi_entry = dmi_first_match(dmi_table);
+- if (!dmi_entry || boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
++ if (!dmi_entry)
+ return -ENODEV;
- switch (board) {
- case oxp_mini_amd_a07:
-- reg = OXP_OLD_TURBO_SWITCH_REG;
-- val = OXP_OLD_TURBO_RETURN_VAL;
-+ reg = OXP_MINI_TURBO_SWITCH_REG;
-+ val = OXP_TURBO_RETURN_VAL;
- break;
-- case oxp_mini_amd_pro:
- case aok_zoe_a1:
-+ case oxp_fly:
-+ case oxp_mini_amd_pro:
- reg = OXP_TURBO_SWITCH_REG;
- val = OXP_TURBO_RETURN_VAL;
- break;
-+ case oxp_2:
-+ reg = OXP_2_TURBO_SWITCH_REG;
-+ val = OXP_TURBO_RETURN_VAL;
-+ break;
- default:
- return -EINVAL;
- }
-@@ -247,6 +287,8 @@ static umode_t tt_toggle_is_visible(struct kobject *kobj,
- {
- switch (board) {
- case aok_zoe_a1:
-+ case oxp_2:
-+ case oxp_fly:
- case oxp_mini_amd_a07:
- case oxp_mini_amd_pro:
- return attr->mode;
-@@ -287,12 +329,16 @@ static ssize_t tt_toggle_show(struct device *dev,
+ board = (enum oxp_board)(unsigned long)dmi_entry->driver_data;
- switch (board) {
- case oxp_mini_amd_a07:
-- reg = OXP_OLD_TURBO_SWITCH_REG;
-+ reg = OXP_MINI_TURBO_SWITCH_REG;
- break;
-- case oxp_mini_amd_pro:
- case aok_zoe_a1:
-+ case oxp_fly:
-+ case oxp_mini_amd_pro:
- reg = OXP_TURBO_SWITCH_REG;
- break;
-+ case oxp_2:
-+ reg = OXP_2_TURBO_SWITCH_REG;
-+ break;
- default:
- return -EINVAL;
- }
-@@ -320,6 +366,8 @@ static int oxp_pwm_enable(void)
- case aya_neo_geek:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
-+ case oxp_2:
-+ case oxp_fly:
- case oxp_mini_amd_pro:
- return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
- default:
-@@ -340,6 +388,8 @@ static int oxp_pwm_disable(void)
- case aya_neo_geek:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
-+ case oxp_2:
-+ case oxp_fly:
- case oxp_mini_amd_pro:
- return write_to_ec(OXP_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
- default:
-@@ -381,6 +431,8 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
- case aya_neo_geek:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
-+ case oxp_2:
-+ case oxp_fly:
- case oxp_mini_amd_pro:
- return read_from_ec(OXP_SENSOR_FAN_REG, 2, val);
- default:
-@@ -413,8 +465,10 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
- return ret;
- *val = (*val * 255) / 100;
- break;
-- case oxp_mini_amd_pro:
- case aok_zoe_a1:
-+ case oxp_2:
-+ case oxp_fly:
-+ case oxp_mini_amd_pro:
- default:
- ret = read_from_ec(OXP_SENSOR_PWM_REG, 1, val);
- if (ret)
-@@ -434,6 +488,8 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
- case aya_neo_geek:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
-+ case oxp_2:
-+ case oxp_fly:
- case oxp_mini_amd_pro:
- return read_from_ec(OXP_SENSOR_PWM_ENABLE_REG, 1, val);
- default:
-@@ -479,6 +535,8 @@ static int oxp_platform_write(struct device *dev, enum hwmon_sensor_types type,
- val = (val * 100) / 255;
- return write_to_ec(OXP_SENSOR_PWM_REG, val);
- case aok_zoe_a1:
-+ case oxp_2:
-+ case oxp_fly:
- case oxp_mini_amd_pro:
- return write_to_ec(OXP_SENSOR_PWM_REG, val);
- default:
---
-2.45.2
-
-
-From f12bdbb992c66b8f1320372892da116e95a7f104 Mon Sep 17 00:00:00 2001
-From: "Derek J. Clark" <derekjohn.clark@gmail.com>
-Date: Thu, 28 Mar 2024 19:50:40 +0100
-Subject: [PATCH 3/4] oxp-sensors: hwmon: Add support for AYANEO 2s, air 1s,
- geek 1s and kun models
-
----
- drivers/hwmon/oxp-sensors.c | 48 +++++++++++++++++++++++++++++++++++++
- 1 file changed, 48 insertions(+)
-
-diff --git a/drivers/hwmon/oxp-sensors.c b/drivers/hwmon/oxp-sensors.c
-index cf8ba1cc6..e8d9fea9d 100644
---- a/drivers/hwmon/oxp-sensors.c
-+++ b/drivers/hwmon/oxp-sensors.c
-@@ -42,10 +42,14 @@ static bool unlock_global_acpi_lock(void)
- enum oxp_board {
- aok_zoe_a1 = 1,
- aya_neo_2,
-+ aya_neo_2s,
- aya_neo_air,
-+ aya_neo_air_1s,
- aya_neo_air_plus_mendo,
- aya_neo_air_pro,
- aya_neo_geek,
-+ aya_neo_geek_1s,
-+ aya_neo_kun,
- orange_pi_neo,
- oxp_2,
- oxp_fly,
-@@ -101,6 +105,13 @@ static const struct dmi_system_id dmi_table[] = {
- },
- .driver_data = (void *)aya_neo_2,
- },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO 2S"),
-+ },
-+ .driver_data = (void *)aya_neo_2s,
-+ },
- {
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
-@@ -115,6 +126,13 @@ static const struct dmi_system_id dmi_table[] = {
- },
- .driver_data = (void *)aya_neo_air_plus_mendo,
- },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "AIR 1S"),
-+ },
-+ .driver_data = (void *)aya_neo_air_1s,
-+ },
- {
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
-@@ -129,6 +147,20 @@ static const struct dmi_system_id dmi_table[] = {
- },
- .driver_data = (void *)aya_neo_geek,
- },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "GEEK 1S"),
-+ },
-+ .driver_data = (void *)aya_neo_geek_1s,
-+ },
-+ {
-+ .matches = {
-+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
-+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "KUN"),
-+ },
-+ .driver_data = (void *)aya_neo_kun,
-+ },
- {
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "OrangePi"),
-@@ -360,10 +392,14 @@ static int oxp_pwm_enable(void)
- return write_to_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
- case aok_zoe_a1:
- case aya_neo_2:
-+ case aya_neo_2s:
- case aya_neo_air:
-+ case aya_neo_air_1s:
- case aya_neo_air_plus_mendo:
- case aya_neo_air_pro:
- case aya_neo_geek:
-+ case aya_neo_geek_1s:
-+ case aya_neo_kun:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
- case oxp_2:
-@@ -382,10 +418,14 @@ static int oxp_pwm_disable(void)
- return write_to_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
- case aok_zoe_a1:
- case aya_neo_2:
-+ case aya_neo_2s:
- case aya_neo_air:
-+ case aya_neo_air_1s:
- case aya_neo_air_plus_mendo:
- case aya_neo_air_pro:
- case aya_neo_geek:
-+ case aya_neo_geek_1s:
-+ case aya_neo_kun:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
- case oxp_2:
-@@ -425,10 +465,14 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
- return read_from_ec(ORANGEPI_SENSOR_FAN_REG, 2, val);
- case aok_zoe_a1:
- case aya_neo_2:
-+ case aya_neo_2s:
- case aya_neo_air:
-+ case aya_neo_air_1s:
- case aya_neo_air_plus_mendo:
- case aya_neo_air_pro:
- case aya_neo_geek:
-+ case aya_neo_geek_1s:
-+ case aya_neo_kun:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
- case oxp_2:
-@@ -482,10 +526,14 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
- return read_from_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, 1, val);
- case aok_zoe_a1:
- case aya_neo_2:
-+ case aya_neo_2s:
- case aya_neo_air:
-+ case aya_neo_air_1s:
- case aya_neo_air_plus_mendo:
- case aya_neo_air_pro:
- case aya_neo_geek:
-+ case aya_neo_geek_1s:
-+ case aya_neo_kun:
- case oxp_mini_amd:
- case oxp_mini_amd_a07:
- case oxp_2:
---
-2.45.2
-
++ /*
++ * Have to check for AMD processor here because DMI strings are the same
++ * between Intel and AMD boards on older OneXPlayer devices, the only way
++ * to tell them apart is the CPU. Old Intel boards have an unsupported EC.
++ */
++ if (board == oxp_mini_amd && boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
++ return -ENODEV;
++
+ oxp_platform_device =
+ platform_create_bundle(&oxp_platform_driver,
+ oxp_platform_probe, NULL, 0, NULL, 0);
-From 61740ea3d49721fa86f6a0085029f8f4f68ae916 Mon Sep 17 00:00:00 2001
-From: "Derek J. Clark" <derekjohn.clark@gmail.com>
-Date: Wed, 27 Mar 2024 18:58:59 -0700
-Subject: [PATCH 4/4] oxp-sensors: hwmon: Add GPD Win Mini
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jan200101 <sentrycraft123@gmail.com>
+Date: Sat, 21 Sep 2024 10:01:30 +0200
+Subject: [PATCH] oxp-sensors: hwmon: Add GPD Win Mini
Add GPD Win Mini. GPD devices don't have a separate enable register, the PWM
register is used for this purpose. A write value of 0 puts the PWM into auto
mode, writing anything 1-244 puts the PWM into manual mode, and 245-255 are
undefined. We scale to 1-255 and handle manual by writing a value to 70% as a
common sense default.
+
+Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
---
- drivers/hwmon/oxp-sensors.c | 43 +++++++++++++++++++++++++++++++++++++
- 1 file changed, 43 insertions(+)
+ drivers/hwmon/oxp-sensors.c | 42 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
diff --git a/drivers/hwmon/oxp-sensors.c b/drivers/hwmon/oxp-sensors.c
-index e8d9fea9d..11dec1b31 100644
+index 83730d931824..e6ae932c11c5 100644
--- a/drivers/hwmon/oxp-sensors.c
+++ b/drivers/hwmon/oxp-sensors.c
-@@ -50,6 +50,7 @@ enum oxp_board {
+@@ -52,6 +52,7 @@ enum oxp_board {
+ aya_neo_flip,
aya_neo_geek,
- aya_neo_geek_1s,
aya_neo_kun,
+ gpd_win_mini,
orange_pi_neo,
oxp_2,
oxp_fly,
-@@ -69,8 +70,19 @@ static enum oxp_board board;
- #define ORANGEPI_SENSOR_PWM_ENABLE_REG 0x40 /* PWM enable is 1 register long */
- #define ORANGEPI_SENSOR_PWM_REG 0x38 /* PWM reading is 1 register long */
+@@ -89,6 +90,16 @@ static enum oxp_board board;
+
+ #define OXP_TURBO_RETURN_VAL 0x00 /* Common return val */
+/* GPD devices don't have a separate enable register for the fan.
+ * For the PWM register, 0 is auto, 1+ is a manual value, up to 255
@@ -613,18 +544,15 @@ index e8d9fea9d..11dec1b31 100644
+ * The mini uses the same fan register as the OrangePi NEO.
+ */
+#define GPD_MINI_SENSOR_PWM_REG 0x7A /* PWM reading is 1 register long */
-+/* Values for fan auto mode */
- #define PWM_MODE_AUTO 0x00
-+
-+ /* Values for fan manual mode */
- #define PWM_MODE_MANUAL 0x01
++/* Common sense default for manual mode */
+#define GPD_MINI_PWM_MODE_MANUAL 0xAA /* 70% */
- /* Turbo button takeover function
- * Different boards have different values and EC registers
- * for the same function
-@@ -161,6 +173,13 @@ static const struct dmi_system_id dmi_table[] = {
++
+ static const struct dmi_system_id dmi_table[] = {
+ {
+ .matches = {
+@@ -153,6 +164,13 @@ static const struct dmi_system_id dmi_table[] = {
},
- .driver_data = (void *)aya_neo_kun,
+ .driver_data = (void *)aya_neo_geek,
},
+ {
+ .matches = {
@@ -635,8 +563,8 @@ index e8d9fea9d..11dec1b31 100644
+ },
{
.matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "OrangePi"),
-@@ -388,6 +407,11 @@ static DEVICE_ATTR_RW(tt_toggle);
+ DMI_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+@@ -384,6 +402,11 @@ static DEVICE_ATTR_RW(tt_toggle);
static int oxp_pwm_enable(void)
{
switch (board) {
@@ -648,7 +576,7 @@ index e8d9fea9d..11dec1b31 100644
case orange_pi_neo:
return write_to_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, PWM_MODE_MANUAL);
case aok_zoe_a1:
-@@ -414,6 +438,8 @@ static int oxp_pwm_enable(void)
+@@ -409,6 +432,8 @@ static int oxp_pwm_enable(void)
static int oxp_pwm_disable(void)
{
switch (board) {
@@ -657,15 +585,15 @@ index e8d9fea9d..11dec1b31 100644
case orange_pi_neo:
return write_to_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, PWM_MODE_AUTO);
case aok_zoe_a1:
-@@ -461,6 +487,7 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
+@@ -456,6 +481,7 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
switch (attr) {
case hwmon_fan_input:
switch (board) {
+ case gpd_win_mini:
case orange_pi_neo:
return read_from_ec(ORANGEPI_SENSOR_FAN_REG, 2, val);
- case aok_zoe_a1:
-@@ -490,6 +517,14 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
+ case oxp_2:
+@@ -487,6 +513,14 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
switch (attr) {
case hwmon_pwm_input:
switch (board) {
@@ -680,7 +608,7 @@ index e8d9fea9d..11dec1b31 100644
case orange_pi_neo:
ret = read_from_ec(ORANGEPI_SENSOR_PWM_REG, 1, val);
if (ret)
-@@ -522,6 +557,10 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
+@@ -530,6 +564,10 @@ static int oxp_platform_read(struct device *dev, enum hwmon_sensor_types type,
return 0;
case hwmon_pwm_enable:
switch (board) {
@@ -691,7 +619,7 @@ index e8d9fea9d..11dec1b31 100644
case orange_pi_neo:
return read_from_ec(ORANGEPI_SENSOR_PWM_ENABLE_REG, 1, val);
case aok_zoe_a1:
-@@ -569,6 +608,10 @@ static int oxp_platform_write(struct device *dev, enum hwmon_sensor_types type,
+@@ -578,6 +616,10 @@ static int oxp_platform_write(struct device *dev, enum hwmon_sensor_types type,
if (val < 0 || val > 255)
return -EINVAL;
switch (board) {
@@ -702,6 +630,3 @@ index e8d9fea9d..11dec1b31 100644
case orange_pi_neo:
/* scale to range [1-244] */
val = ((val - 1) * 243 / 254) + 1;
---
-2.45.2
-
diff --git a/SOURCES/v0-speaker-multifix.patch b/SOURCES/v0-speaker-multifix.patch
deleted file mode 100644
index 014985e..0000000
--- a/SOURCES/v0-speaker-multifix.patch
+++ /dev/null
@@ -1,23729 +0,0 @@
-From dbe14cbae955a033bff0c83b7341cc722b476bda Mon Sep 17 00:00:00 2001
-From: Matthew Anderson <ruinairas1992@gmail.com>
-Date: Thu, 25 Apr 2024 09:39:40 -0500
-Subject: [PATCH 1/8] Codec: Add aw87xxx codec with partial acpi implementation
- Contribution by CVMagic (https://github.com/CVMagic)
-
-aw87xxx: Use strscpy instead of strlcpy
-
-awinic: i2c_driver cleanup and fixes
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/soc/codecs/Kconfig | 2 +
- sound/soc/codecs/Makefile | 1 +
- sound/soc/codecs/aw87xxx/Kconfig | 5 +
- sound/soc/codecs/aw87xxx/Makefile | 4 +
- sound/soc/codecs/aw87xxx/aw87xxx.c | 1457 +++++
- sound/soc/codecs/aw87xxx/aw87xxx.h | 121 +
- sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.c | 1558 +++++
- sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.h | 191 +
- sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.c | 515 ++
- sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.h | 73 +
- sound/soc/codecs/aw87xxx/aw87xxx_device.c | 977 +++
- sound/soc/codecs/aw87xxx/aw87xxx_device.h | 149 +
- sound/soc/codecs/aw87xxx/aw87xxx_dsp.c | 355 ++
- sound/soc/codecs/aw87xxx/aw87xxx_dsp.h | 65 +
- sound/soc/codecs/aw87xxx/aw87xxx_log.h | 33 +
- sound/soc/codecs/aw87xxx/aw87xxx_monitor.c | 1208 ++++
- sound/soc/codecs/aw87xxx/aw87xxx_monitor.h | 96 +
- sound/soc/codecs/aw87xxx/aw87xxx_pid_18_reg.h | 2315 ++++++++
- sound/soc/codecs/aw87xxx/aw87xxx_pid_39_reg.h | 67 +
- .../codecs/aw87xxx/aw87xxx_pid_59_3x9_reg.h | 93 +
- .../codecs/aw87xxx/aw87xxx_pid_59_5x9_reg.h | 94 +
- sound/soc/codecs/aw87xxx/aw87xxx_pid_5a_reg.h | 4124 +++++++++++++
- sound/soc/codecs/aw87xxx/aw87xxx_pid_60_reg.h | 5246 +++++++++++++++++
- sound/soc/codecs/aw87xxx/aw87xxx_pid_76_reg.h | 1205 ++++
- sound/soc/codecs/aw87xxx/aw87xxx_pid_9b_reg.h | 81 +
- 25 files changed, 20035 insertions(+)
- create mode 100644 sound/soc/codecs/aw87xxx/Kconfig
- create mode 100644 sound/soc/codecs/aw87xxx/Makefile
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx.c
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.c
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.c
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_device.c
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_device.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_dsp.c
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_dsp.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_log.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_monitor.c
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_monitor.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_18_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_39_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_59_3x9_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_59_5x9_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_5a_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_60_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_76_reg.h
- create mode 100644 sound/soc/codecs/aw87xxx/aw87xxx_pid_9b_reg.h
-
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index f78ea2f86..34d6b290f 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -2497,4 +2497,6 @@ config SND_SOC_LPASS_TX_MACRO
- select SND_SOC_LPASS_MACRO_COMMON
- tristate "Qualcomm TX Macro in LPASS(Low Power Audio SubSystem)"
-
-+source "sound/soc/codecs/aw87xxx/Kconfig"
-+
- endmenu
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index 7c075539d..23f6d3b75 100644
---- a/sound/soc/codecs/Makefile
-+++ b/sound/soc/codecs/Makefile
-@@ -781,6 +781,7 @@ obj-$(CONFIG_SND_SOC_WSA884X) += snd-soc-wsa884x.o
- obj-$(CONFIG_SND_SOC_ZL38060) += snd-soc-zl38060.o
-
- # Amp
-+obj-$(CONFIG_SND_SOC_AW87XXX) += aw87xxx/
- obj-$(CONFIG_SND_SOC_MAX9877) += snd-soc-max9877.o
- obj-$(CONFIG_SND_SOC_MAX98504) += snd-soc-max98504.o
- obj-$(CONFIG_SND_SOC_SIMPLE_AMPLIFIER) += snd-soc-simple-amplifier.o
-diff --git a/sound/soc/codecs/aw87xxx/Kconfig b/sound/soc/codecs/aw87xxx/Kconfig
-new file mode 100644
-index 000000000..bd0f208e2
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/Kconfig
-@@ -0,0 +1,5 @@
-+config SND_SOC_AW87XXX
-+ tristate "SoC Audio for awinic AW87XXX Smart K PA"
-+ depends on I2C
-+ help
-+ This option enables support for AW87XXX Smart K PA.
-diff --git a/sound/soc/codecs/aw87xxx/Makefile b/sound/soc/codecs/aw87xxx/Makefile
-new file mode 100644
-index 000000000..d32f319a5
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/Makefile
-@@ -0,0 +1,4 @@
-+#for AWINIC AW87XXX Smart K PA
-+snd-soc-aw87xxx-objs := aw87xxx.o aw87xxx_device.o aw87xxx_monitor.o aw87xxx_bin_parse.o aw87xxx_dsp.o aw87xxx_acf_bin.o
-+obj-$(CONFIG_SND_SOC_AW87XXX) += snd-soc-aw87xxx.o
-+
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx.c b/sound/soc/codecs/aw87xxx/aw87xxx.c
-new file mode 100644
-index 000000000..eddb01695
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx.c
-@@ -0,0 +1,1457 @@
-+/*
-+ * aw87xxx.c aw87xxx pa module
-+ *
-+ * Copyright (c) 2021 AWINIC Technology CO., LTD
-+ *
-+ * Author: Barry <zhaozhongbo@awinic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#include <linux/i2c.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <linux/gpio.h>
-+#include <linux/of_gpio.h>
-+#include <linux/gpio/consumer.h>
-+#include <linux/interrupt.h>
-+#include <linux/delay.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/device.h>
-+#include <linux/irq.h>
-+#include <linux/firmware.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/proc_fs.h>
-+#include <linux/uaccess.h>
-+#include <linux/io.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/gameport.h>
-+#include <linux/moduleparam.h>
-+#include <linux/mutex.h>
-+#include <linux/timer.h>
-+#include <linux/workqueue.h>
-+#include <linux/hrtimer.h>
-+#include <linux/ktime.h>
-+#include <linux/kthread.h>
-+#include <uapi/sound/asound.h>
-+#include <sound/control.h>
-+#include <sound/soc.h>
-+#include "aw87xxx.h"
-+#include "aw87xxx_device.h"
-+#include "aw87xxx_log.h"
-+#include "aw87xxx_monitor.h"
-+#include "aw87xxx_acf_bin.h"
-+#include "aw87xxx_bin_parse.h"
-+#include "aw87xxx_dsp.h"
-+
-+/*****************************************************************
-+* aw87xxx marco
-+******************************************************************/
-+#define AW87XXX_I2C_NAME "aw87xxx_pa"
-+#define AW87XXX_DRIVER_VERSION "v2.7.0"
-+#define AW87XXX_FW_BIN_NAME "aw87xxx_acf.bin"
-+#define AW87XXX_PROF_MUSIC "Music"
-+/*************************************************************************
-+ * aw87xxx variable
-+ ************************************************************************/
-+static LIST_HEAD(g_aw87xxx_list);
-+static DEFINE_MUTEX(g_aw87xxx_mutex_lock);
-+unsigned int g_aw87xxx_dev_cnt = 0;
-+
-+static const char *const aw87xxx_monitor_switch[] = {"Disable", "Enable"};
-+static const char *const aw87xxx_spin_switch[] = {"spin_0", "spin_90",
-+ "spin_180", "spin_270"};
-+#ifdef AW_KERNEL_VER_OVER_4_19_1
-+static struct aw_componet_codec_ops aw_componet_codec_ops = {
-+ .add_codec_controls = snd_soc_add_component_controls,
-+ .unregister_codec = snd_soc_unregister_component,
-+};
-+#else
-+static struct aw_componet_codec_ops aw_componet_codec_ops = {
-+ .add_codec_controls = snd_soc_add_codec_controls,
-+ .unregister_codec = snd_soc_unregister_codec,
-+};
-+#endif
-+
-+
-+/************************************************************************
-+ *
-+ * aw87xxx device update profile
-+ *
-+ ************************************************************************/
-+static int aw87xxx_power_down(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = 0;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+ struct aw_data_container *data_container = NULL;
-+ struct aw_device *aw_dev = &aw87xxx->aw_dev;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (!prof_info->status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "profile_cfg not load");
-+ return -EINVAL;
-+ }
-+
-+ prof_desc = aw87xxx_acf_get_prof_desc_form_name(aw87xxx->dev, &aw87xxx->acf_info, profile);
-+ if (prof_desc == NULL)
-+ goto no_bin_pwr_off;
-+
-+ if (!prof_desc->prof_st)
-+ goto no_bin_pwr_off;
-+
-+
-+ data_container = &prof_desc->data_container;
-+ AW_DEV_LOGD(aw87xxx->dev, "get profile[%s] data len [%d]",
-+ profile, data_container->len);
-+
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGI(aw87xxx->dev, "profile[%s] has already load ", profile);
-+ } else {
-+ if (aw_dev->ops.pwr_off_func) {
-+ ret = aw_dev->ops.pwr_off_func(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ", profile);
-+ goto pwr_off_failed;
-+ }
-+ } else {
-+ ret = aw87xxx_dev_default_pwr_off(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ", profile);
-+ goto pwr_off_failed;
-+ }
-+ }
-+ }
-+
-+ aw87xxx->current_profile = prof_desc->prof_name;
-+ return 0;
-+
-+pwr_off_failed:
-+no_bin_pwr_off:
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-+ aw87xxx->current_profile = aw87xxx->prof_off_name;
-+ return ret;
-+}
-+
-+static int aw87xxx_power_on(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = -EINVAL;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+ struct aw_data_container *data_container = NULL;
-+ struct aw_device *aw_dev = &aw87xxx->aw_dev;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (!prof_info->status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "profile_cfg not load");
-+ return -EINVAL;
-+ }
-+
-+ if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX))
-+ return aw87xxx_power_down(aw87xxx, profile);
-+
-+ prof_desc = aw87xxx_acf_get_prof_desc_form_name(aw87xxx->dev, &aw87xxx->acf_info, profile);
-+ if (prof_desc == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not found [%s] parameter", profile);
-+ return -EINVAL;
-+ }
-+
-+ if (!prof_desc->prof_st) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not found data container");
-+ return -EINVAL;
-+ }
-+
-+ data_container = &prof_desc->data_container;
-+ AW_DEV_LOGD(aw87xxx->dev, "get profile[%s] data len [%d]",
-+ profile, data_container->len);
-+
-+ if (aw_dev->ops.pwr_on_func) {
-+ ret = aw_dev->ops.pwr_on_func(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-+ profile);
-+ return aw87xxx_power_down(aw87xxx, aw87xxx->prof_off_name);
-+ }
-+ } else {
-+ ret = aw87xxx_dev_default_pwr_on(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-+ profile);
-+ return aw87xxx_power_down(aw87xxx, aw87xxx->prof_off_name);
-+ }
-+ }
-+
-+ aw87xxx->current_profile = prof_desc->prof_name;
-+ AW_DEV_LOGD(aw87xxx->dev, "load profile[%s] succeed", profile);
-+
-+ return 0;
-+}
-+
-+
-+
-+int aw87xxx_update_profile(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "load profile[%s] enter", profile);
-+ mutex_lock(&aw87xxx->reg_lock);
-+ aw87xxx_monitor_stop(&aw87xxx->monitor);
-+ if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX)) {
-+ ret = aw87xxx_power_down(aw87xxx, profile);
-+ } else {
-+ ret = aw87xxx_power_on(aw87xxx, profile);
-+ if (!ret)
-+ aw87xxx_monitor_start(&aw87xxx->monitor);
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ return ret;
-+}
-+
-+int aw87xxx_update_profile_esd(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = -1;
-+
-+ if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX))
-+ ret = aw87xxx_power_down(aw87xxx, profile);
-+ else
-+ ret = aw87xxx_power_on(aw87xxx, profile);
-+
-+ return ret;
-+}
-+
-+char *aw87xxx_show_current_profile(int dev_index)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = NULL;
-+
-+ list_for_each(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ if (aw87xxx->dev_index == dev_index) {
-+ AW_DEV_LOGI(aw87xxx->dev, "current profile is [%s]",
-+ aw87xxx->current_profile);
-+ return aw87xxx->current_profile;
-+ }
-+ }
-+
-+ AW_LOGE("not found struct aw87xxx, dev_index = [%d]", dev_index);
-+ return NULL;
-+}
-+EXPORT_SYMBOL(aw87xxx_show_current_profile);
-+
-+int aw87xxx_set_profile(int dev_index, char *profile)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = NULL;
-+
-+ list_for_each(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ if (profile && aw87xxx->dev_index == dev_index) {
-+ AW_DEV_LOGD(aw87xxx->dev, "set dev_index = %d, profile = %s",
-+ dev_index, profile);
-+ return aw87xxx_update_profile(aw87xxx, profile);
-+ }
-+ }
-+
-+ AW_LOGE("not found struct aw87xxx, dev_index = [%d]", dev_index);
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL(aw87xxx_set_profile);
-+
-+int aw87xxx_set_profile_by_id(int dev_index, int profile_id)
-+{
-+ char *profile = NULL;
-+
-+ profile = aw87xxx_ctos_get_prof_name(profile_id);
-+ if (profile == NULL) {
-+ AW_LOGE("aw87xxx, dev_index[%d] profile[%d] not support!",
-+ dev_index, profile_id);
-+ return -EINVAL;
-+ }
-+
-+ AW_LOGI("aw87xxx, dev_index[%d] set profile[%s] by id[%d]",
-+ dev_index, profile, profile_id);
-+ return aw87xxx_set_profile(dev_index, profile);
-+}
-+EXPORT_SYMBOL(aw87xxx_set_profile_by_id);
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx Kcontrols
-+ *
-+ ****************************************************************************/
-+static int aw87xxx_profile_switch_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int count = 0;
-+ char *name = NULL;
-+ char *profile_name = NULL;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+
-+ /*make sure have prof */
-+ count = aw87xxx_acf_get_profile_count(aw87xxx->dev, &aw87xxx->acf_info);
-+ if (count <= 0) {
-+ uinfo->value.enumerated.items = 0;
-+ AW_DEV_LOGE(aw87xxx->dev, "get count[%d] failed", count);
-+ return 0;
-+ }
-+
-+ uinfo->value.enumerated.items = count;
-+ if (uinfo->value.enumerated.item >= count)
-+ uinfo->value.enumerated.item = count - 1;
-+
-+ name = uinfo->value.enumerated.name;
-+ count = uinfo->value.enumerated.item;
-+ profile_name = aw87xxx_acf_get_prof_name_form_index(aw87xxx->dev,
-+ &aw87xxx->acf_info, count);
-+ if (profile_name == NULL) {
-+ strscpy(uinfo->value.enumerated.name, "NULL",
-+ strlen("NULL") + 1);
-+ return 0;
-+ }
-+
-+ strscpy(name, profile_name, sizeof(uinfo->value.enumerated.name));
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_profile_switch_put(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ int ret = -1;
-+ char *profile_name = NULL;
-+ int index = ucontrol->value.integer.value[0];
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ struct acf_bin_info *acf_info = NULL;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ acf_info = &aw87xxx->acf_info;
-+
-+ profile_name = aw87xxx_acf_get_prof_name_form_index(aw87xxx->dev, acf_info, index);
-+ if (!profile_name) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not found profile name,index=[%d]",
-+ index);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "set profile [%s]", profile_name);
-+
-+ ret = aw87xxx_update_profile(aw87xxx, profile_name);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "set dev_index[%d] profile failed, profile = %s",
-+ aw87xxx->dev_index, profile_name);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_profile_switch_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ int index = 0;
-+ char *profile;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ if (!aw87xxx->current_profile) {
-+ AW_DEV_LOGE(aw87xxx->dev, "profile not init");
-+ return -EINVAL;
-+ }
-+
-+ profile = aw87xxx->current_profile;
-+ AW_DEV_LOGI(aw87xxx->dev, "current profile:[%s]",
-+ aw87xxx->current_profile);
-+
-+
-+ index = aw87xxx_acf_get_prof_index_form_name(aw87xxx->dev,
-+ &aw87xxx->acf_info, aw87xxx->current_profile);
-+ if (index < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "get profile index failed");
-+ return index;
-+ }
-+
-+ ucontrol->value.integer.value[0] = index;
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_vmax_get_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-+ uinfo->count = 1;
-+ uinfo->value.integer.min = INT_MIN;
-+ uinfo->value.integer.max = AW_VMAX_MAX;
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_vmax_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ int ret = -1;
-+ int vmax_val = 0;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_monitor_no_dsp_get_vmax(&aw87xxx->monitor, &vmax_val);
-+ if (ret < 0)
-+ return ret;
-+
-+ ucontrol->value.integer.value[0] = vmax_val;
-+ AW_DEV_LOGI(aw87xxx->dev, "get vmax = [0x%x]", vmax_val);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_monitor_switch_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int count;
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+ count = ARRAY_SIZE(aw87xxx_monitor_switch);
-+
-+ uinfo->value.enumerated.items = count;
-+
-+ if (uinfo->value.enumerated.item >= count)
-+ uinfo->value.enumerated.item = count - 1;
-+
-+ strscpy(uinfo->value.enumerated.name,
-+ aw87xxx_monitor_switch[uinfo->value.enumerated.item],
-+ strlen(aw87xxx_monitor_switch[uinfo->value.enumerated.item]) + 1);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_monitor_switch_put(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ uint32_t ctrl_value = ucontrol->value.integer.value[0];
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ struct aw_monitor *aw_monitor = &aw87xxx->monitor;
-+ int ret = -1;
-+
-+ ret = aw87xxx_dev_monitor_switch_set(aw_monitor, ctrl_value);
-+ if (ret)
-+ return ret;
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_monitor_switch_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ struct aw_monitor *aw_monitor = &aw87xxx->monitor;
-+
-+ ucontrol->value.integer.value[0] = aw_monitor->monitor_hdr.monitor_switch;
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "monitor switch is %ld", ucontrol->value.integer.value[0]);
-+ return 0;
-+}
-+
-+static int aw87xxx_spin_switch_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int count;
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+ count = ARRAY_SIZE(aw87xxx_spin_switch);
-+
-+ uinfo->value.enumerated.items = count;
-+
-+ if (uinfo->value.enumerated.item >= count)
-+ uinfo->value.enumerated.item = count - 1;
-+
-+ strscpy(uinfo->value.enumerated.name,
-+ aw87xxx_spin_switch[uinfo->value.enumerated.item],
-+ strlen(aw87xxx_spin_switch[uinfo->value.enumerated.item]) + 1);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_spin_switch_put(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ uint32_t ctrl_value = 0;
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ ctrl_value = ucontrol->value.integer.value[0];
-+
-+ ret = aw87xxx_dsp_set_spin(ctrl_value);
-+ if (ret) {
-+ AW_DEV_LOGE(aw87xxx->dev, "write spin failed");
-+ return ret;
-+ }
-+ AW_DEV_LOGD(aw87xxx->dev, "write spin done ctrl_value=%d", ctrl_value);
-+ return 0;
-+}
-+
-+static int aw87xxx_spin_switch_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ ucontrol->value.integer.value[0] = aw87xxx_dsp_get_spin();
-+ AW_DEV_LOGD(aw87xxx->dev, "current spin is %ld", ucontrol->value.integer.value[0]);
-+
-+ return 0;
-+}
-+
-+
-+static int aw87xxx_kcontrol_dynamic_create(struct aw87xxx *aw87xxx,
-+ void *codec)
-+{
-+ struct snd_kcontrol_new *aw87xxx_kcontrol = NULL;
-+ aw_snd_soc_codec_t *soc_codec = (aw_snd_soc_codec_t *)codec;
-+ char *kctl_name[AW87XXX_PRIVATE_KCONTROL_NUM];
-+ int kcontrol_num = AW87XXX_PRIVATE_KCONTROL_NUM;
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ aw87xxx->codec = soc_codec;
-+
-+ aw87xxx_kcontrol = devm_kzalloc(aw87xxx->dev,
-+ sizeof(struct snd_kcontrol_new) * kcontrol_num,
-+ GFP_KERNEL);
-+ if (aw87xxx_kcontrol == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "aw87xxx_kcontrol devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ kctl_name[0] = devm_kzalloc(aw87xxx->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[0] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[0], AW_NAME_BUF_MAX, "aw87xxx_profile_switch_%d",
-+ aw87xxx->dev_index);
-+
-+ aw87xxx_kcontrol[0].name = kctl_name[0];
-+ aw87xxx_kcontrol[0].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[0].info = aw87xxx_profile_switch_info;
-+ aw87xxx_kcontrol[0].get = aw87xxx_profile_switch_get;
-+ aw87xxx_kcontrol[0].put = aw87xxx_profile_switch_put;
-+ aw87xxx_kcontrol[0].private_value = (unsigned long)aw87xxx;
-+
-+ kctl_name[1] = devm_kzalloc(aw87xxx->codec->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[1] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[1], AW_NAME_BUF_MAX, "aw87xxx_vmax_get_%d",
-+ aw87xxx->dev_index);
-+
-+ aw87xxx_kcontrol[1].name = kctl_name[1];
-+ aw87xxx_kcontrol[1].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[1].access = SNDRV_CTL_ELEM_ACCESS_READ;
-+ aw87xxx_kcontrol[1].info = aw87xxx_vmax_get_info;
-+ aw87xxx_kcontrol[1].get = aw87xxx_vmax_get;
-+ aw87xxx_kcontrol[1].private_value = (unsigned long)aw87xxx;
-+
-+ kctl_name[2] = devm_kzalloc(aw87xxx->codec->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[2] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[2], AW_NAME_BUF_MAX, "aw87xxx_monitor_switch_%d",
-+ aw87xxx->dev_index);
-+
-+ aw87xxx_kcontrol[2].name = kctl_name[2];
-+ aw87xxx_kcontrol[2].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[2].info = aw87xxx_monitor_switch_info;
-+ aw87xxx_kcontrol[2].get = aw87xxx_monitor_switch_get;
-+ aw87xxx_kcontrol[2].put = aw87xxx_monitor_switch_put;
-+ aw87xxx_kcontrol[2].private_value = (unsigned long)aw87xxx;
-+
-+ ret = aw_componet_codec_ops.add_codec_controls(aw87xxx->codec,
-+ aw87xxx_kcontrol, kcontrol_num);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "add codec controls failed, ret = %d",
-+ ret);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "add codec controls[%s,%s,%s]",
-+ aw87xxx_kcontrol[0].name,
-+ aw87xxx_kcontrol[1].name,
-+ aw87xxx_kcontrol[2].name);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_public_kcontrol_create(struct aw87xxx *aw87xxx,
-+ void *codec)
-+{
-+ struct snd_kcontrol_new *aw87xxx_kcontrol = NULL;
-+ aw_snd_soc_codec_t *soc_codec = (aw_snd_soc_codec_t *)codec;
-+ char *kctl_name[AW87XXX_PUBLIC_KCONTROL_NUM];
-+ int kcontrol_num = AW87XXX_PUBLIC_KCONTROL_NUM;
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ aw87xxx->codec = soc_codec;
-+
-+ aw87xxx_kcontrol = devm_kzalloc(aw87xxx->dev,
-+ sizeof(struct snd_kcontrol_new) * kcontrol_num,
-+ GFP_KERNEL);
-+ if (aw87xxx_kcontrol == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "aw87xxx_kcontrol devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ kctl_name[0] = devm_kzalloc(aw87xxx->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[0] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[0], AW_NAME_BUF_MAX, "aw87xxx_spin_switch");
-+
-+ aw87xxx_kcontrol[0].name = kctl_name[0];
-+ aw87xxx_kcontrol[0].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[0].info = aw87xxx_spin_switch_info;
-+ aw87xxx_kcontrol[0].get = aw87xxx_spin_switch_get;
-+ aw87xxx_kcontrol[0].put = aw87xxx_spin_switch_put;
-+ aw87xxx_kcontrol[0].private_value = (unsigned long)aw87xxx;
-+
-+ ret = aw_componet_codec_ops.add_codec_controls(aw87xxx->codec,
-+ aw87xxx_kcontrol, kcontrol_num);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "add codec controls failed, ret = %d",
-+ ret);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "add public codec controls[%s]",
-+ aw87xxx_kcontrol[0].name);
-+
-+ return 0;
-+}
-+
-+/****************************************************************************
-+ *
-+ *aw87xxx kcontrol create
-+ *
-+ ****************************************************************************/
-+int aw87xxx_add_codec_controls(void *codec)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = NULL;
-+ int ret = -1;
-+
-+ list_for_each(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ ret = aw87xxx_kcontrol_dynamic_create(aw87xxx, codec);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (aw87xxx->dev_index == 0) {
-+ ret = aw87xxx_public_kcontrol_create(aw87xxx, codec);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(aw87xxx_add_codec_controls);
-+
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx firmware cfg load
-+ *
-+ ***************************************************************************/
-+static void aw87xxx_fw_cfg_free(struct aw87xxx *aw87xxx)
-+{
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ aw87xxx_acf_profile_free(aw87xxx->dev, &aw87xxx->acf_info);
-+ aw87xxx_monitor_cfg_free(&aw87xxx->monitor);
-+}
-+
-+static int aw87xxx_init_default_prof(struct aw87xxx *aw87xxx)
-+{
-+ char *profile = NULL;
-+
-+ profile = aw87xxx_acf_get_prof_off_name(aw87xxx->dev, &aw87xxx->acf_info);
-+ if (profile == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "get profile off name failed");
-+ return -EINVAL;
-+ }
-+
-+ snprintf(aw87xxx->prof_off_name, AW_PROFILE_STR_MAX, "%s", profile);
-+ aw87xxx->current_profile = profile;
-+ AW_DEV_LOGI(aw87xxx->dev, "init profile name [%s]",
-+ aw87xxx->current_profile);
-+
-+ return 0;
-+}
-+
-+static void aw87xxx_fw_load_retry(struct aw87xxx *aw87xxx)
-+{
-+ struct acf_bin_info *acf_info = &aw87xxx->acf_info;
-+ int ram_timer_val = 2000;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "failed to read [%s]",
-+ aw87xxx->fw_name);
-+
-+ if (acf_info->load_count < AW_LOAD_FW_RETRIES) {
-+ AW_DEV_LOGD(aw87xxx->dev,
-+ "restart hrtimer to load firmware");
-+ schedule_delayed_work(&aw87xxx->fw_load_work,
-+ msecs_to_jiffies(ram_timer_val));
-+ } else {
-+ acf_info->load_count = 0;
-+ AW_DEV_LOGE(aw87xxx->dev,
-+ "can not load firmware,please check name or file exists");
-+ return;
-+ }
-+ acf_info->load_count++;
-+}
-+
-+static void aw87xxx_fw_load(const struct firmware *fw, void *context)
-+{
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = context;
-+ struct acf_bin_info *acf_info = &aw87xxx->acf_info;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (!fw) {
-+ aw87xxx_fw_load_retry(aw87xxx);
-+ return;
-+ }
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "loaded %s - size: %ld",
-+ aw87xxx->fw_name, (u_long)(fw ? fw->size : 0));
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ acf_info->fw_data = vmalloc(fw->size);
-+ if (!acf_info->fw_data) {
-+ AW_DEV_LOGE(aw87xxx->dev, "fw_data kzalloc memory failed");
-+ goto exit_vmalloc_failed;
-+ }
-+ memset(acf_info->fw_data, 0, fw->size);
-+ memcpy(acf_info->fw_data, fw->data, fw->size);
-+ acf_info->fw_size = fw->size;
-+
-+ ret = aw87xxx_acf_parse(aw87xxx->dev, &aw87xxx->acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "fw_data parse failed");
-+ goto exit_acf_parse_failed;
-+ }
-+
-+ ret = aw87xxx_init_default_prof(aw87xxx);
-+ if (ret < 0) {
-+ aw87xxx_fw_cfg_free(aw87xxx);
-+ goto exit_acf_parse_failed;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "acf parse succeed");
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ release_firmware(fw);
-+ // Updating profile to "Music" because the firmware is set to "off" during init
-+ aw87xxx_update_profile(aw87xxx, AW87XXX_PROF_MUSIC);
-+
-+ return;
-+
-+exit_acf_parse_failed:
-+exit_vmalloc_failed:
-+ release_firmware(fw);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+}
-+
-+static void aw87xxx_fw_load_work_routine(struct work_struct *work)
-+{
-+ struct aw87xxx *aw87xxx = container_of(work,
-+ struct aw87xxx, fw_load_work.work);
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (prof_info->status == AW_ACF_WAIT) {
-+ request_firmware_nowait(THIS_MODULE,
-+// FW_ACTION_HOTPLUG,
-+ FW_ACTION_UEVENT,
-+ aw87xxx->fw_name,
-+ aw87xxx->dev,
-+ GFP_KERNEL, aw87xxx,
-+ aw87xxx_fw_load);
-+ }
-+}
-+
-+static void aw87xxx_fw_load_init(struct aw87xxx *aw87xxx)
-+{
-+#ifdef AW_CFG_UPDATE_DELAY
-+ int cfg_timer_val = AW_CFG_UPDATE_DELAY_TIMER;
-+#else
-+ int cfg_timer_val = 0;
-+#endif
-+ AW_DEV_LOGI(aw87xxx->dev, "enter");
-+ snprintf(aw87xxx->fw_name, AW87XXX_FW_NAME_MAX, "%s", AW87XXX_FW_BIN_NAME);
-+ aw87xxx_acf_init(&aw87xxx->aw_dev, &aw87xxx->acf_info, aw87xxx->dev_index);
-+
-+ INIT_DELAYED_WORK(&aw87xxx->fw_load_work, aw87xxx_fw_load_work_routine);
-+ schedule_delayed_work(&aw87xxx->fw_load_work,
-+ msecs_to_jiffies(cfg_timer_val));
-+}
-+
-+/****************************************************************************
-+ *
-+ *aw87xxx attribute node
-+ *
-+ ****************************************************************************/
-+static ssize_t aw87xxx_attr_get_reg(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ int ret = 0;
-+ unsigned int i = 0;
-+ unsigned char reg_val = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_device *aw_dev = &aw87xxx->aw_dev;
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ for (i = 0; i < aw_dev->reg_max_addr; i++) {
-+ if (!(aw_dev->reg_access[i] & AW_DEV_REG_RD_ACCESS))
-+ continue;
-+ ret = aw87xxx_dev_i2c_read_byte(&aw87xxx->aw_dev, i, &reg_val);
-+ if (ret < 0) {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "read reg [0x%x] failed\n", i);
-+ AW_DEV_LOGE(aw87xxx->dev, "read reg [0x%x] failed", i);
-+ } else {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "reg:0x%02X=0x%02X\n", i, reg_val);
-+ AW_DEV_LOGD(aw87xxx->dev, "reg:0x%02X=0x%02X",
-+ i, reg_val);
-+ }
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_set_reg(struct device *dev,
-+ struct device_attribute *attr, const char *buf,
-+ size_t len)
-+{
-+ unsigned int databuf[2] = { 0 };
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ if (sscanf(buf, "0x%x 0x%x", &databuf[0], &databuf[1]) == 2) {
-+ if (databuf[0] >= aw87xxx->aw_dev.reg_max_addr) {
-+ AW_DEV_LOGE(aw87xxx->dev, "set reg[0x%x] error,is out of reg_addr_max[0x%x]",
-+ databuf[0], aw87xxx->aw_dev.reg_max_addr);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_dev_i2c_write_byte(&aw87xxx->aw_dev,
-+ databuf[0], databuf[1]);
-+ if (ret < 0)
-+ AW_DEV_LOGE(aw87xxx->dev, "set [0x%x]=0x%x failed",
-+ databuf[0], databuf[1]);
-+ else
-+ AW_DEV_LOGD(aw87xxx->dev, "set [0x%x]=0x%x succeed",
-+ databuf[0], databuf[1]);
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "i2c write cmd input error");
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_get_profile(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ unsigned int i = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+
-+ if (!prof_info->status) {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "profile_cfg not load\n");
-+ return len;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "current profile:[%s]", aw87xxx->current_profile);
-+
-+ for (i = 0; i < prof_info->count; i++) {
-+ if (!strncmp(aw87xxx->current_profile, prof_info->prof_name_list[i],
-+ AW_PROFILE_STR_MAX))
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ ">%s\n", prof_info->prof_name_list[i]);
-+ else
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ " %s\n", prof_info->prof_name_list[i]);
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_set_profile(struct device *dev,
-+ struct device_attribute *attr, const char *buf,
-+ size_t len)
-+{
-+ char profile[AW_PROFILE_STR_MAX] = {0};
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ if (strlen(buf) > AW_PROFILE_STR_MAX) {
-+ AW_DEV_LOGE(aw87xxx->dev, "input profile_str_len is out of max[%d]",
-+ AW_PROFILE_STR_MAX);
-+ return -EINVAL;
-+ }
-+
-+ if (sscanf(buf, "%s", profile) == 1) {
-+ AW_DEV_LOGD(aw87xxx->dev, "set profile [%s]", profile);
-+ ret = aw87xxx_update_profile(aw87xxx, profile);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "set profile[%s] failed",
-+ profile);
-+ return ret;
-+ }
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_get_hwen(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ int hwen = aw87xxx->aw_dev.hwen_status;
-+
-+ if (hwen >= AW_DEV_HWEN_INVALID)
-+ len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: invalid\n");
-+ else if (hwen == AW_DEV_HWEN_ON)
-+ len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: on\n");
-+ else if (hwen == AW_DEV_HWEN_OFF)
-+ len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: off\n");
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_set_hwen(struct device *dev,
-+ struct device_attribute *attr, const char *buf,
-+ size_t len)
-+{
-+ int ret = -1;
-+ unsigned int state;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ ret = kstrtouint(buf, 0, &state);
-+ if (ret) {
-+ AW_DEV_LOGE(aw87xxx->dev, "fail to channelge str to int");
-+ return ret;
-+ }
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ if (state == AW_DEV_HWEN_OFF)
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false); /*OFF*/
-+ else if (state == AW_DEV_HWEN_ON)
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true); /*ON*/
-+ else
-+ AW_DEV_LOGE(aw87xxx->dev, "input [%d] error, hwen_on=[%d],hwen_off=[%d]",
-+ state, AW_DEV_HWEN_ON, AW_DEV_HWEN_OFF);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ return len;
-+}
-+
-+int aw87xxx_awrw_write(struct aw87xxx *aw87xxx,
-+ const char *buf, size_t count)
-+{
-+ int i = 0, ret = -1;
-+ char *data_buf = NULL;
-+ int buf_len = 0;
-+ int temp_data = 0;
-+ int data_str_size = 0;
-+ char *reg_data;
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ /* one addr or one data string Composition of Contains two bytes of symbol(0X)*/
-+ /* and two byte of hexadecimal data*/
-+ data_str_size = 2 + 2 * AWRW_DATA_BYTES;
-+
-+ /* The buf includes the first address of the register to be written and all data */
-+ buf_len = AWRW_ADDR_BYTES + packet->reg_num * AWRW_DATA_BYTES;
-+ AW_DEV_LOGI(aw87xxx->dev, "buf_len = %d,reg_num = %d", buf_len, packet->reg_num);
-+ data_buf = vmalloc(buf_len);
-+ if (data_buf == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "alloc memory failed");
-+ return -ENOMEM;
-+ }
-+ memset(data_buf, 0, buf_len);
-+
-+ data_buf[0] = packet->reg_addr;
-+ reg_data = data_buf + 1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "reg_addr: 0x%02x", data_buf[0]);
-+
-+ /*ag:0x00 0x01 0x01 0x01 0x01 0x00\x0a*/
-+ for (i = 0; i < packet->reg_num; i++) {
-+ ret = sscanf(buf + AWRW_HDR_LEN + 1 + i * (data_str_size + 1),
-+ "0x%x", &temp_data);
-+ if (ret != 1) {
-+ AW_DEV_LOGE(aw87xxx->dev, "sscanf failed,ret=%d", ret);
-+ vfree(data_buf);
-+ data_buf = NULL;
-+ return ret;
-+ }
-+ reg_data[i] = temp_data;
-+ AW_DEV_LOGD(aw87xxx->dev, "[%d] : 0x%02x", i, reg_data[i]);
-+ }
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ ret = i2c_master_send(aw87xxx->aw_dev.i2c, data_buf, buf_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "write failed");
-+ vfree(data_buf);
-+ data_buf = NULL;
-+ return -EFAULT;
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ vfree(data_buf);
-+ data_buf = NULL;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "down");
-+ return 0;
-+}
-+
-+static int aw87xxx_awrw_data_check(struct aw87xxx *aw87xxx,
-+ int *data, size_t count)
-+{
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int req_data_len = 0;
-+ int act_data_len = 0;
-+ int data_str_size = 0;
-+
-+ if ((data[AWRW_HDR_ADDR_BYTES] != AWRW_ADDR_BYTES) ||
-+ (data[AWRW_HDR_DATA_BYTES] != AWRW_DATA_BYTES)) {
-+ AW_DEV_LOGE(aw87xxx->dev, "addr_bytes [%d] or data_bytes [%d] unsupport",
-+ data[AWRW_HDR_ADDR_BYTES], data[AWRW_HDR_DATA_BYTES]);
-+ return -EINVAL;
-+ }
-+
-+ /* one data string Composition of Contains two bytes of symbol(0x)*/
-+ /* and two byte of hexadecimal data*/
-+ data_str_size = 2 + 2 * AWRW_DATA_BYTES;
-+ act_data_len = count - AWRW_HDR_LEN - 1;
-+
-+ /* There is a comma(,) or space between each piece of data */
-+ if (data[AWRW_HDR_WR_FLAG] == AWRW_FLAG_WRITE) {
-+ /*ag:0x00 0x01 0x01 0x01 0x01 0x00\x0a*/
-+ req_data_len = (data_str_size + 1) * packet->reg_num;
-+ if (req_data_len > act_data_len) {
-+ AW_DEV_LOGE(aw87xxx->dev, "data_len checkfailed,requeset data_len [%d],actaul data_len [%d]",
-+ req_data_len, act_data_len);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+/* flag addr_bytes data_bytes reg_num reg_addr*/
-+static int aw87xxx_awrw_parse_buf(struct aw87xxx *aw87xxx,
-+ const char *buf, size_t count, int *wr_status)
-+{
-+ int data[AWRW_HDR_MAX] = {0};
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int ret = -1;
-+
-+ if (sscanf(buf, "0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",
-+ &data[AWRW_HDR_WR_FLAG], &data[AWRW_HDR_ADDR_BYTES],
-+ &data[AWRW_HDR_DATA_BYTES], &data[AWRW_HDR_REG_NUM],
-+ &data[AWRW_HDR_REG_ADDR]) == 5) {
-+
-+ packet->reg_addr = data[AWRW_HDR_REG_ADDR];
-+ packet->reg_num = data[AWRW_HDR_REG_NUM];
-+ *wr_status = data[AWRW_HDR_WR_FLAG];
-+ ret = aw87xxx_awrw_data_check(aw87xxx, data, count);
-+ if (ret < 0)
-+ return ret;
-+
-+ return 0;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static ssize_t aw87xxx_attr_awrw_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int wr_status = 0;
-+ int ret = -1;
-+
-+ if (count < AWRW_HDR_LEN) {
-+ AW_DEV_LOGE(aw87xxx->dev, "data count too smaller, please check write format");
-+ AW_DEV_LOGE(aw87xxx->dev, "string %s,count=%ld",
-+ buf, (u_long)count);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "string:[%s],count=%ld", buf, (u_long)count);
-+ ret = aw87xxx_awrw_parse_buf(aw87xxx, buf, count, &wr_status);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "can not parse string");
-+ return ret;
-+ }
-+
-+ if (wr_status == AWRW_FLAG_WRITE) {
-+ ret = aw87xxx_awrw_write(aw87xxx, buf, count);
-+ if (ret < 0)
-+ return ret;
-+ } else if (wr_status == AWRW_FLAG_READ) {
-+ packet->status = AWRW_I2C_ST_READ;
-+ AW_DEV_LOGI(aw87xxx->dev, "read_cmd:reg_addr[0x%02x], reg_num[%d]",
-+ packet->reg_addr, packet->reg_num);
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "please check str format, unsupport read_write_status: %d",
-+ wr_status);
-+ return -EINVAL;
-+ }
-+
-+ return count;
-+}
-+
-+static ssize_t aw87xxx_attr_awrw_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int data_len = 0;
-+ size_t len = 0;
-+ int ret = -1, i = 0;
-+ char *reg_data = NULL;
-+
-+ if (packet->status != AWRW_I2C_ST_READ) {
-+ AW_DEV_LOGE(aw87xxx->dev, "please write read cmd first");
-+ return -EINVAL;
-+ }
-+
-+ data_len = AWRW_DATA_BYTES * packet->reg_num;
-+ reg_data = (char *)vmalloc(data_len);
-+ if (reg_data == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "memory alloc failed");
-+ ret = -EINVAL;
-+ goto exit;
-+ }
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ ret = aw87xxx_dev_i2c_read_msg(&aw87xxx->aw_dev, packet->reg_addr,
-+ (char *)reg_data, data_len);
-+ if (ret < 0) {
-+ ret = -EFAULT;
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ goto exit;
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "reg_addr 0x%02x, reg_num %d",
-+ packet->reg_addr, packet->reg_num);
-+
-+ for (i = 0; i < data_len; i++) {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "0x%02x,", reg_data[i]);
-+ AW_DEV_LOGI(aw87xxx->dev, "0x%02x", reg_data[i]);
-+ }
-+
-+ ret = len;
-+
-+exit:
-+ if (reg_data) {
-+ vfree(reg_data);
-+ reg_data = NULL;
-+ }
-+ packet->status = AWRW_I2C_ST_NONE;
-+ return ret;
-+}
-+
-+static ssize_t aw87xxx_drv_ver_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "driver_ver: %s \n", AW87XXX_DRIVER_VERSION);
-+
-+ return len;
-+}
-+
-+static DEVICE_ATTR(reg, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_get_reg, aw87xxx_attr_set_reg);
-+static DEVICE_ATTR(profile, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_get_profile, aw87xxx_attr_set_profile);
-+static DEVICE_ATTR(hwen, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_get_hwen, aw87xxx_attr_set_hwen);
-+static DEVICE_ATTR(awrw, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_awrw_show, aw87xxx_attr_awrw_store);
-+static DEVICE_ATTR(drv_ver, S_IRUGO, aw87xxx_drv_ver_show, NULL);
-+
-+static struct attribute *aw87xxx_attributes[] = {
-+ &dev_attr_reg.attr,
-+ &dev_attr_profile.attr,
-+ &dev_attr_hwen.attr,
-+ &dev_attr_awrw.attr,
-+ &dev_attr_drv_ver.attr,
-+ NULL
-+};
-+
-+static struct attribute_group aw87xxx_attribute_group = {
-+ .attrs = aw87xxx_attributes
-+};
-+
-+/****************************************************************************
-+ *
-+ *aw87xxx device probe
-+ *
-+ ****************************************************************************/
-+static const struct acpi_gpio_params reset_gpio = { 0, 0, false };
-+static const struct acpi_gpio_mapping reset_acpi_gpios[] = {
-+ { "reset-gpios", &reset_gpio, 1 },
-+ { }
-+};
-+
-+static struct aw87xxx *aw87xxx_malloc_init(struct i2c_client *client)
-+{
-+ struct aw87xxx *aw87xxx = NULL;
-+
-+ aw87xxx = devm_kzalloc(&client->dev, sizeof(struct aw87xxx),
-+ GFP_KERNEL);
-+ if (aw87xxx == NULL) {
-+ AW_DEV_LOGE(&client->dev, "failed to devm_kzalloc aw87xxx");
-+ return NULL;
-+ }
-+ memset(aw87xxx, 0, sizeof(struct aw87xxx));
-+
-+ aw87xxx->dev = &client->dev;
-+ aw87xxx->aw_dev.dev = &client->dev;
-+ aw87xxx->aw_dev.i2c_bus = client->adapter->nr;
-+ aw87xxx->aw_dev.i2c_addr = client->addr;
-+ aw87xxx->aw_dev.i2c = client;
-+ aw87xxx->aw_dev.hwen_status = false;
-+ aw87xxx->aw_dev.reg_access = NULL;
-+ aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_INVALID;
-+ aw87xxx->off_bin_status = AW87XXX_NO_OFF_BIN;
-+ aw87xxx->codec = NULL;
-+ aw87xxx->current_profile = aw87xxx->prof_off_name;
-+
-+ mutex_init(&aw87xxx->reg_lock);
-+
-+ AW_DEV_LOGI(&client->dev, "struct aw87xxx devm_kzalloc and init down");
-+ return aw87xxx;
-+}
-+
-+static int aw87xxx_i2c_probe(struct i2c_client *client)
-+{
-+ struct device_node *dev_node = client->dev.of_node;
-+ struct aw87xxx *aw87xxx = NULL;
-+ struct gpio_desc *gpiod = NULL;
-+ int ret = -1;
-+
-+
-+// To do, add this function
-+//acpi_dev_add_driver_gpios()
-+
-+ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
-+ AW_DEV_LOGE(&client->dev, "check_functionality failed");
-+ ret = -ENODEV;
-+ goto exit_check_functionality_failed;
-+ }
-+
-+ /* aw87xxx i2c_dev struct init */
-+ aw87xxx = aw87xxx_malloc_init(client);
-+ if (aw87xxx == NULL)
-+ goto exit_malloc_init_failed;
-+
-+ i2c_set_clientdata(client, aw87xxx);
-+
-+ aw87xxx_device_parse_port_id_dt(&aw87xxx->aw_dev);
-+ aw87xxx_device_parse_topo_id_dt(&aw87xxx->aw_dev);
-+
-+ /* aw87xxx Get ACPI GPIO */
-+/*
-+ ret = devm_acpi_dev_add_driver_gpios(aw87xxx->dev, reset_acpi_gpios);
-+ if(ret){
-+ AW_DEV_LOGE(aw87xxx->dev, "Unable to add GPIO mapping table");
-+ goto exit_device_init_failed;
-+ }
-+
-+ gpiod = gpiod_get_optional(aw87xxx->dev, "reset", GPIOD_OUT_LOW);
-+ if (IS_ERR(gpiod)){
-+ AW_DEV_LOGE(aw87xxx->dev, "Get gpiod failed");
-+ goto exit_device_init_failed;
-+ }
-+
-+ aw87xxx->aw_dev.rst_gpio = desc_to_gpio(gpiod);
-+ aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_OFF;
-+ AW_DEV_LOGI(aw87xxx->dev, "reset gpio[%d] parse succeed", aw87xxx->aw_dev.rst_gpio);
-+ if (gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) {
-+ ret = devm_gpio_request_one(aw87xxx->dev, aw87xxx->aw_dev.rst_gpio, GPIOF_OUT_INIT_LOW, "aw87xxx_reset");
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "reset request failed");
-+ goto exit_device_init_failed;
-+ }
-+ }
-+*/
-+
-+ /*Disabling RESET GPIO*/
-+ AW_DEV_LOGI(aw87xxx->dev, "no reset gpio provided, hardware reset unavailable");
-+ aw87xxx->aw_dev.rst_gpio = AW_NO_RESET_GPIO;
-+ aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_INVALID;
-+
-+
-+ /*hw power on PA*/
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
-+
-+ /* aw87xxx devices private attributes init */
-+ ret = aw87xxx_dev_init(&aw87xxx->aw_dev);
-+ if (ret < 0)
-+ goto exit_device_init_failed;
-+
-+ /*product register reset */
-+ aw87xxx_dev_soft_reset(&aw87xxx->aw_dev);
-+
-+ /*hw power off */
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-+
-+ /* create debug attrbute nodes */
-+ ret = sysfs_create_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
-+ if (ret < 0)
-+ AW_DEV_LOGE(aw87xxx->dev, "failed to create sysfs nodes, will not allowed to use");
-+
-+ /* cfg_load init */
-+ aw87xxx_fw_load_init(aw87xxx);
-+
-+ /*monitor init*/
-+ aw87xxx_monitor_init(aw87xxx->dev, &aw87xxx->monitor, dev_node);
-+
-+ /*add device to total list */
-+ mutex_lock(&g_aw87xxx_mutex_lock);
-+ g_aw87xxx_dev_cnt++;
-+ list_add(&aw87xxx->list, &g_aw87xxx_list);
-+ aw87xxx->dev_index = g_aw87xxx_dev_cnt;
-+
-+ mutex_unlock(&g_aw87xxx_mutex_lock);
-+ AW_DEV_LOGI(aw87xxx->dev, "succeed, dev_index=[%d], g_aw87xxx_dev_cnt= [%d]",
-+ aw87xxx->dev_index, g_aw87xxx_dev_cnt);
-+
-+ return 0;
-+
-+exit_device_init_failed:
-+ AW_DEV_LOGE(aw87xxx->dev, "pa init failed");
-+
-+ devm_kfree(&client->dev, aw87xxx);
-+ aw87xxx = NULL;
-+exit_malloc_init_failed:
-+exit_check_functionality_failed:
-+ return ret;
-+}
-+
-+static void aw87xxx_i2c_remove(struct i2c_client *client)
-+{
-+ struct aw87xxx *aw87xxx = i2c_get_clientdata(client);
-+
-+ aw87xxx_monitor_exit(&aw87xxx->monitor);
-+
-+ /*rm attr node*/
-+ sysfs_remove_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
-+
-+ aw87xxx_fw_cfg_free(aw87xxx);
-+
-+ mutex_lock(&g_aw87xxx_mutex_lock);
-+ g_aw87xxx_dev_cnt--;
-+ list_del(&aw87xxx->list);
-+ mutex_unlock(&g_aw87xxx_mutex_lock);
-+
-+ devm_kfree(&client->dev, aw87xxx);
-+ aw87xxx = NULL;
-+
-+// return 0;
-+}
-+
-+static void aw87xxx_i2c_shutdown(struct i2c_client *client)
-+{
-+ struct aw87xxx *aw87xxx = i2c_get_clientdata(client);
-+
-+ AW_DEV_LOGI(&client->dev, "enter");
-+
-+ /*soft and hw power off*/
-+ aw87xxx_update_profile(aw87xxx, aw87xxx->prof_off_name);
-+}
-+
-+static const struct acpi_device_id aw87xxx_acpi_match[] = {
-+ { "AWDZ8830", 0 },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(acpi, aw87xxx_acpi_match);
-+
-+// This is not necessary if the acpi match probes correctly. This is needed for userspace `new_device() functionality
-+static const struct i2c_device_id aw87xxx_i2c_id[] = {
-+ {AW87XXX_I2C_NAME, 0},
-+ {},
-+};
-+
-+static struct i2c_driver aw87xxx_i2c_driver = {
-+ .driver = {
-+ .owner = THIS_MODULE,
-+ .name = AW87XXX_I2C_NAME,
-+ .acpi_match_table = aw87xxx_acpi_match,
-+ },
-+ .probe = aw87xxx_i2c_probe,
-+ .remove = aw87xxx_i2c_remove,
-+ .shutdown = aw87xxx_i2c_shutdown,
-+ .id_table = aw87xxx_i2c_id,
-+};
-+
-+module_i2c_driver(aw87xxx_i2c_driver)
-+
-+MODULE_AUTHOR("<zhaozhongbo@awinic.com>");
-+MODULE_DESCRIPTION("awinic aw87xxx pa driver");
-+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx.h b/sound/soc/codecs/aw87xxx/aw87xxx.h
-new file mode 100644
-index 000000000..45d3cea77
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx.h
-@@ -0,0 +1,121 @@
-+#ifndef __AW87XXX_H__
-+#define __AW87XXX_H__
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <sound/control.h>
-+#include <sound/soc.h>
-+
-+#include "aw87xxx_device.h"
-+#include "aw87xxx_monitor.h"
-+#include "aw87xxx_acf_bin.h"
-+
-+#define AW_CFG_UPDATE_DELAY
-+#define AW_CFG_UPDATE_DELAY_TIMER (3000)
-+
-+#define AW87XXX_NO_OFF_BIN (0)
-+#define AW87XXX_OFF_BIN_OK (1)
-+
-+#define AW87XXX_PRIVATE_KCONTROL_NUM (3)
-+#define AW87XXX_PUBLIC_KCONTROL_NUM (1)
-+
-+#define AW_I2C_RETRIES (5)
-+#define AW_I2C_RETRY_DELAY (2)
-+#define AW_I2C_READ_MSG_NUM (2)
-+
-+#define AW87XXX_FW_NAME_MAX (64)
-+#define AW_NAME_BUF_MAX (64)
-+#define AW_LOAD_FW_RETRIES (3)
-+
-+#define AW_DEV_REG_RD_ACCESS (1 << 0)
-+#define AW_DEV_REG_WR_ACCESS (1 << 1)
-+
-+#define AWRW_ADDR_BYTES (1)
-+#define AWRW_DATA_BYTES (1)
-+#define AWRW_HDR_LEN (24)
-+
-+/***********************************************************
-+ *
-+ * aw87xxx codec control compatible with kernel 4.19
-+ *
-+ ***********************************************************/
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 1)
-+#define AW_KERNEL_VER_OVER_4_19_1
-+#endif
-+
-+#ifdef AW_KERNEL_VER_OVER_4_19_1
-+typedef struct snd_soc_component aw_snd_soc_codec_t;
-+#else
-+typedef struct snd_soc_codec aw_snd_soc_codec_t;
-+#endif
-+
-+struct aw_componet_codec_ops {
-+ int (*add_codec_controls)(aw_snd_soc_codec_t *codec,
-+ const struct snd_kcontrol_new *controls, unsigned int num_controls);
-+ void (*unregister_codec)(struct device *dev);
-+};
-+
-+
-+/********************************************
-+ *
-+ * aw87xxx devices attributes
-+ *
-+ *******************************************/
-+enum {
-+ AWRW_FLAG_WRITE = 0,
-+ AWRW_FLAG_READ,
-+};
-+
-+enum {
-+ AWRW_I2C_ST_NONE = 0,
-+ AWRW_I2C_ST_READ,
-+ AWRW_I2C_ST_WRITE,
-+};
-+
-+enum {
-+ AWRW_HDR_WR_FLAG = 0,
-+ AWRW_HDR_ADDR_BYTES,
-+ AWRW_HDR_DATA_BYTES,
-+ AWRW_HDR_REG_NUM,
-+ AWRW_HDR_REG_ADDR,
-+ AWRW_HDR_MAX,
-+};
-+
-+struct aw_i2c_packet {
-+ char status;
-+ unsigned int reg_num;
-+ unsigned int reg_addr;
-+ char *reg_data;
-+};
-+
-+
-+/********************************************
-+ *
-+ * aw87xxx device struct
-+ *
-+ *******************************************/
-+struct aw87xxx {
-+ char fw_name[AW87XXX_FW_NAME_MAX];
-+ int32_t dev_index;
-+ char *current_profile;
-+ char prof_off_name[AW_PROFILE_STR_MAX];
-+ uint32_t off_bin_status;
-+ struct device *dev;
-+
-+ struct mutex reg_lock;
-+ struct aw_device aw_dev;
-+ struct aw_i2c_packet i2c_packet;
-+
-+ struct delayed_work fw_load_work;
-+ struct acf_bin_info acf_info;
-+
-+ aw_snd_soc_codec_t *codec;
-+
-+ struct list_head list;
-+
-+ struct aw_monitor monitor;
-+};
-+
-+int aw87xxx_update_profile(struct aw87xxx *aw87xxx, char *profile);
-+int aw87xxx_update_profile_esd(struct aw87xxx *aw87xxx, char *profile);
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.c b/sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.c
-new file mode 100644
-index 000000000..00c7aedb7
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.c
-@@ -0,0 +1,1558 @@
-+/*
-+ * aw87xxx_acf_bin.c
-+ *
-+ * Copyright (c) 2021 AWINIC Technology CO., LTD
-+ *
-+ * Author: Barry <zhaozhongbo@awinic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+
-+#include <linux/module.h>
-+#include <asm/uaccess.h>
-+#include <linux/delay.h>
-+#include <linux/slab.h>
-+#include <linux/kernel.h>
-+#include <linux/fs.h>
-+#include <linux/device.h>
-+#include <linux/kernel.h>
-+#include <linux/vmalloc.h>
-+#include "aw87xxx.h"
-+#include "aw87xxx_acf_bin.h"
-+#include "aw87xxx_monitor.h"
-+#include "aw87xxx_log.h"
-+#include "aw87xxx_bin_parse.h"
-+
-+/*************************************************************************
-+ *
-+ *Table corresponding to customized profile ids to profile names
-+ *
-+ *************************************************************************/
-+enum aw_customers_profile_id {
-+ AW_CTOS_PROFILE_OFF = 0,
-+ AW_CTOS_PROFILE_MUSIC,
-+ AW_CTOS_PROFILE_VOICE,
-+ AW_CTOS_PROFILE_VOIP,
-+ AW_CTOS_PROFILE_RINGTONE,
-+ AW_CTOS_PROFILE_RINGTONE_HS,
-+ AW_CTOS_PROFILE_LOWPOWER,
-+ AW_CTOS_PROFILE_BYPASS,
-+ AW_CTOS_PROFILE_MMI,
-+ AW_CTOS_PROFILE_FM,
-+ AW_CTOS_PROFILE_NOTIFICATION,
-+ AW_CTOS_PROFILE_RECEIVER,
-+ AW_CTOS_PROFILE_MAX,
-+};
-+
-+static char *g_ctos_profile_name[AW_PROFILE_MAX] = {
-+ [AW_CTOS_PROFILE_OFF] = "Off",
-+ [AW_CTOS_PROFILE_MUSIC] = "Music",
-+ [AW_CTOS_PROFILE_VOICE] = "Voice",
-+ [AW_CTOS_PROFILE_VOIP] = "Voip",
-+ [AW_CTOS_PROFILE_RINGTONE] = "Ringtone",
-+ [AW_CTOS_PROFILE_RINGTONE_HS] = "Ringtone_hs",
-+ [AW_CTOS_PROFILE_LOWPOWER] = "Lowpower",
-+ [AW_CTOS_PROFILE_BYPASS] = "Bypass",
-+ [AW_CTOS_PROFILE_MMI] = "Mmi",
-+ [AW_CTOS_PROFILE_FM] = "Fm",
-+ [AW_CTOS_PROFILE_NOTIFICATION] = "Notification",
-+ [AW_CTOS_PROFILE_RECEIVER] = "Receiver",
-+};
-+
-+
-+char *aw87xxx_ctos_get_prof_name(int profile_id)
-+{
-+ if (profile_id < 0 || profile_id >= AW_CTOS_PROFILE_MAX)
-+ return NULL;
-+ else
-+ return g_ctos_profile_name[profile_id];
-+}
-+
-+
-+static char *g_profile_name[] = {"Music", "Voice", "Voip",
-+ "Ringtone", "Ringtone_hs", "Lowpower", "Bypass", "Mmi",
-+ "Fm", "Notification", "Receiver", "Off"};
-+
-+static char *g_power_off_name[] = {"Off", "OFF", "off", "oFF", "power_down"};
-+
-+static char *aw_get_prof_name(int profile)
-+{
-+ if (profile < 0 || profile >= AW_PROFILE_MAX)
-+ return "NULL";
-+ else
-+ return g_profile_name[profile];
-+}
-+
-+/*************************************************************************
-+ *
-+ *acf check
-+ *
-+ *************************************************************************/
-+static int aw_crc8_check(const unsigned char *data, unsigned int data_size)
-+
-+{
-+ unsigned char crc_value = 0x00;
-+ unsigned char *pdata;
-+ int i;
-+ unsigned char pdatabuf = 0;
-+
-+ pdata = (unsigned char *)data;
-+
-+ while (data_size--) {
-+ pdatabuf = *pdata++;
-+ for (i = 0; i < 8; i++) {
-+ if ((crc_value ^ (pdatabuf)) & 0x01) {
-+ crc_value ^= 0x18;
-+ crc_value >>= 1;
-+ crc_value |= 0x80;
-+ } else {
-+ crc_value >>= 1;
-+ }
-+ pdatabuf >>= 1;
-+ }
-+ }
-+
-+ return (int)crc_value;
-+}
-+
-+static int aw_check_file_id(struct device *dev,
-+ char *fw_data, int32_t file_id)
-+{
-+ int32_t *acf_file_id = NULL;
-+
-+ acf_file_id = (int32_t *)fw_data;
-+ if (*acf_file_id != file_id) {
-+ AW_DEV_LOGE(dev, "file id [%x] check failed", *acf_file_id);
-+ return -ENFILE;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_header_size(struct device *dev,
-+ char *fw_data, size_t fw_size)
-+{
-+ if (fw_size < sizeof(struct aw_acf_hdr)) {
-+ AW_DEV_LOGE(dev, "acf size check failed,size less-than aw_acf_hdr");
-+ return -ENOEXEC;
-+ }
-+
-+ return 0;
-+}
-+
-+/***************************************************************************
-+ * V0.0.0.1 version acf check
-+ **************************************************************************/
-+static int aw_check_ddt_size_v_0_0_0_1(struct device *dev, char *fw_data)
-+{
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ struct aw_acf_dde *acf_dde = NULL;
-+
-+ acf_dde = (struct aw_acf_dde *)(fw_data + acf_hdr->ddt_offset);
-+
-+ /* check ddt_size in acf_header is aqual to ddt_num multiply by dde_size */
-+ if (acf_hdr->ddt_size != acf_hdr->dde_num * sizeof(struct aw_acf_dde)) {
-+ AW_DEV_LOGE(dev, "acf ddt size check failed");
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_data_size_v_0_0_0_1(struct device *dev,
-+ char *fw_data, size_t fw_size)
-+{
-+ int i = 0;
-+ size_t data_size = 0;
-+ struct aw_acf_hdr *acf_hdr = NULL;
-+ struct aw_acf_dde *acf_dde = NULL;
-+
-+ acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ acf_dde = (struct aw_acf_dde *)(fw_data + acf_hdr->ddt_offset);
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (acf_dde[i].data_size % 2) {
-+ AW_DEV_LOGE(dev, "acf dde[%d].data_size[%d],dev_name[%s],data_type[%d], data_size check failed",
-+ i, acf_dde[i].data_size, acf_dde[i].dev_name,
-+ acf_dde[i].data_type);
-+ return -EINVAL;
-+ }
-+ data_size += acf_dde[i].data_size;
-+ }
-+
-+ /* Verify that the file size is equal to the header size plus */
-+ /* the table size and data size */
-+ if (fw_size != data_size + sizeof(struct aw_acf_hdr) + acf_hdr->ddt_size) {
-+ AW_DEV_LOGE(dev, "acf size check failed");
-+ AW_DEV_LOGE(dev, "fw_size=%ld,hdr_size and ddt size and data size =%ld",
-+ (u_long)fw_size, (u_long)(data_size + sizeof(struct aw_acf_hdr) +
-+ acf_hdr->ddt_size));
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_data_crc_v_0_0_0_1(struct device *dev, char *fw_data)
-+{
-+ int i = 0;
-+ size_t crc_val = 0;
-+ char *data = NULL;
-+ struct aw_acf_hdr *acf_hdr = NULL;
-+ struct aw_acf_dde *acf_dde = NULL;
-+
-+ acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ acf_dde = (struct aw_acf_dde *)(fw_data + acf_hdr->ddt_offset);
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ data = fw_data + acf_dde[i].data_offset;
-+ crc_val = aw_crc8_check(data, acf_dde[i].data_size);
-+ if (crc_val != acf_dde[i].data_crc) {
-+ AW_DEV_LOGE(dev, "acf dde_crc check failed");
-+ return -EINVAL;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_profile_id_v_0_0_0_1(struct device *dev, char *fw_data)
-+{
-+ int i = 0;
-+ struct aw_acf_hdr *acf_hdr = NULL;
-+ struct aw_acf_dde *acf_dde = NULL;
-+
-+ acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ acf_dde = (struct aw_acf_dde *)(fw_data + acf_hdr->ddt_offset);
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (acf_dde[i].data_type == AW_MONITOR)
-+ continue;
-+ if (acf_dde[i].dev_profile > AW_PROFILE_MAX) {
-+ AW_DEV_LOGE(dev, "parse profile_id[%d] failed", acf_dde[i].dev_profile);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ return 0;
-+}
-+static int aw_check_data_v_0_0_0_1(struct device *dev,
-+ char *fw_data, size_t size)
-+{
-+ int ret = -1;
-+
-+ /* check file type id is awinic acf file */
-+ ret = aw_check_file_id(dev, fw_data, AW_ACF_FILE_ID);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* check ddt_size in header is equal to all ddt aize */
-+ ret = aw_check_ddt_size_v_0_0_0_1(dev, fw_data);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* Verify that the file size is equal to the header size plus */
-+ /* the table size and data size */
-+ ret = aw_check_data_size_v_0_0_0_1(dev, fw_data, size);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* check crc in is equal to dde data crc */
-+ ret = aw_check_data_crc_v_0_0_0_1(dev, fw_data);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* check profile id is in profile_id_max */
-+ ret = aw_check_profile_id_v_0_0_0_1(dev, fw_data);
-+ if (ret < 0)
-+ return ret;
-+
-+ AW_DEV_LOGI(dev, "acf fimware check succeed");
-+
-+ return 0;
-+}
-+
-+/***************************************************************************
-+ * V1.0.0.0 version acf chack
-+ **************************************************************************/
-+static int aw_check_ddt_size_v_1_0_0_0(struct device *dev, char *fw_data)
-+{
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde = NULL;
-+
-+ acf_dde = (struct aw_acf_dde_v_1_0_0_0 *)(fw_data + acf_hdr->ddt_offset);
-+
-+ /* check ddt_size in acf_header is aqual to ddt_num multiply by dde_size */
-+ if (acf_hdr->ddt_size != acf_hdr->dde_num * sizeof(struct aw_acf_dde_v_1_0_0_0)) {
-+ AW_DEV_LOGE(dev, "acf ddt size check failed");
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_data_size_v_1_0_0_0(struct device *dev,
-+ char *fw_data, size_t fw_size)
-+{
-+ int i = 0;
-+ size_t data_size = 0;
-+ struct aw_acf_hdr *acf_hdr = NULL;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde = NULL;
-+
-+ acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ acf_dde = (struct aw_acf_dde_v_1_0_0_0 *)(fw_data + acf_hdr->ddt_offset);
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (acf_dde[i].data_size % 2) {
-+ AW_DEV_LOGE(dev, "acf dde[%d].data_size[%d],dev_name[%s],data_type[%d], data_size check failed",
-+ i, acf_dde[i].data_size, acf_dde[i].dev_name,
-+ acf_dde[i].data_type);
-+ return -EINVAL;
-+ }
-+ data_size += acf_dde[i].data_size;
-+ }
-+
-+ /* Verify that the file size is equal to the header size plus */
-+ /* the table size and data size */
-+ if (fw_size != data_size + sizeof(struct aw_acf_hdr) + acf_hdr->ddt_size) {
-+ AW_DEV_LOGE(dev, "acf size check failed");
-+ AW_DEV_LOGE(dev, "fw_size=%ld,hdr_size and ddt size and data size =%ld",
-+ (u_long)fw_size, (u_long)(data_size + sizeof(struct aw_acf_hdr) +
-+ acf_hdr->ddt_size));
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_data_crc_v_1_0_0_0(struct device *dev, char *fw_data)
-+{
-+ int i = 0;
-+ size_t crc_val = 0;
-+ char *data = NULL;
-+ struct aw_acf_hdr *acf_hdr = NULL;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde = NULL;
-+
-+ acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ acf_dde = (struct aw_acf_dde_v_1_0_0_0 *)(fw_data + acf_hdr->ddt_offset);
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ data = fw_data + acf_dde[i].data_offset;
-+ crc_val = aw_crc8_check(data, acf_dde[i].data_size);
-+ if (crc_val != acf_dde[i].data_crc) {
-+ AW_DEV_LOGE(dev, "acf dde_crc check failed");
-+ return -EINVAL;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_check_data_v_1_0_0_0(struct device *dev,
-+ char *fw_data, size_t size)
-+{
-+ int ret = -1;
-+
-+ /* check file type id is awinic acf file */
-+ ret = aw_check_file_id(dev, fw_data, AW_ACF_FILE_ID);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* check ddt_size in header is equal to all ddt aize */
-+ ret = aw_check_ddt_size_v_1_0_0_0(dev, fw_data);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* Verify that the file size is equal to the header size plus */
-+ /* the table size and data size */
-+ ret = aw_check_data_size_v_1_0_0_0(dev, fw_data, size);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* check crc in is equal to dde data crc */
-+ ret = aw_check_data_crc_v_1_0_0_0(dev, fw_data);
-+ if (ret < 0)
-+ return ret;
-+
-+ AW_DEV_LOGI(dev, "acf fimware check succeed");
-+
-+ return 0;
-+}
-+
-+/***************************************************************************
-+ * acf chack API
-+ **************************************************************************/
-+static int aw_check_acf_firmware(struct device *dev,
-+ char *fw_data, size_t size)
-+{
-+ int ret = -1;
-+ struct aw_acf_hdr *acf_hdr = NULL;
-+
-+ if (fw_data == NULL) {
-+ AW_DEV_LOGE(dev, "fw_data is NULL,fw_data check failed");
-+ return -ENODATA;
-+ }
-+
-+ /* check file size is less-than header size */
-+ ret = aw_check_header_size(dev, fw_data, size);
-+ if (ret < 0)
-+ return ret;
-+
-+ acf_hdr = (struct aw_acf_hdr *)fw_data;
-+ AW_DEV_LOGI(dev, "project name: [%s]", acf_hdr->project);
-+ AW_DEV_LOGI(dev, "custom name: [%s]", acf_hdr->custom);
-+ AW_DEV_LOGI(dev, "version name: [%s]", acf_hdr->version);
-+ AW_DEV_LOGI(dev, "author_id: [%d]", acf_hdr->author_id);
-+
-+ switch (acf_hdr->hdr_version) {
-+ case AW_ACF_HDR_VER_0_0_0_1:
-+ return aw_check_data_v_0_0_0_1(dev, fw_data, size);
-+ case AW_ACF_HDR_VER_1_0_0_0:
-+ return aw_check_data_v_1_0_0_0(dev, fw_data, size);
-+ default:
-+ AW_DEV_LOGE(dev, "unsupported hdr_version [0x%x]",
-+ acf_hdr->hdr_version);
-+ return -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+
-+
-+/*************************************************************************
-+ *
-+ *acf parse
-+ *
-+ *************************************************************************/
-+static int aw_parse_raw_reg(struct device *dev, uint8_t *data,
-+ uint32_t data_len, struct aw_prof_desc *prof_desc)
-+{
-+ AW_DEV_LOGD(dev, "data_size:%d enter", data_len);
-+
-+ prof_desc->data_container.data = data;
-+ prof_desc->data_container.len = data_len;
-+
-+ prof_desc->prof_st = AW_PROFILE_OK;
-+
-+ return 0;
-+}
-+
-+static int aw_parse_reg_with_hdr(struct device *dev, uint8_t *data,
-+ uint32_t data_len, struct aw_prof_desc *prof_desc)
-+{
-+ struct aw_bin *aw_bin = NULL;
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(dev, "data_size:%d enter", data_len);
-+
-+ aw_bin = kzalloc(data_len + sizeof(struct aw_bin), GFP_KERNEL);
-+ if (aw_bin == NULL) {
-+ AW_DEV_LOGE(dev, "devm_kzalloc aw_bin failed");
-+ return -ENOMEM;
-+ }
-+
-+ aw_bin->info.len = data_len;
-+ memcpy(aw_bin->info.data, data, data_len);
-+
-+ ret = aw87xxx_parsing_bin_file(aw_bin);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse bin failed");
-+ goto parse_bin_failed;
-+ }
-+
-+ if ((aw_bin->all_bin_parse_num != 1) ||
-+ (aw_bin->header_info[0].bin_data_type != DATA_TYPE_REGISTER)) {
-+ AW_DEV_LOGE(dev, "bin num or type error");
-+ goto parse_bin_failed;
-+ }
-+
-+ prof_desc->data_container.data =
-+ data + aw_bin->header_info[0].valid_data_addr;
-+ prof_desc->data_container.len = aw_bin->header_info[0].valid_data_len;
-+ prof_desc->prof_st = AW_PROFILE_OK;
-+
-+ kfree(aw_bin);
-+ aw_bin = NULL;
-+
-+ return 0;
-+
-+parse_bin_failed:
-+ kfree(aw_bin);
-+ aw_bin = NULL;
-+ return ret;
-+}
-+
-+static int aw_parse_monitor_config(struct device *dev,
-+ char *monitor_data, uint32_t data_len)
-+{
-+ int ret = -1;
-+
-+ if (monitor_data == NULL || data_len == 0) {
-+ AW_DEV_LOGE(dev, "no data to parse");
-+ return -EBFONT;
-+ }
-+
-+ ret = aw87xxx_monitor_bin_parse(dev, monitor_data, data_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "monitor_config parse failed");
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(dev, "monitor_bin parse succeed");
-+
-+ return 0;
-+}
-+
-+static int aw_check_prof_str_is_off(char *profile_name)
-+{
-+ int i = 0;
-+
-+ for (i = 0; i < AW_POWER_OFF_NAME_SUPPORT_COUNT; i++) {
-+ if (strnstr(profile_name, g_power_off_name[i],
-+ strlen(profile_name) + 1))
-+ return 0;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+/***************************************************************************
-+ * V0.0.0.1 version acf paese
-+ **************************************************************************/
-+static int aw_check_product_name_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_acf_dde *prof_hdr)
-+{
-+ int i = 0;
-+
-+ for (i = 0; i < acf_info->product_cnt; i++) {
-+ if (0 == strcmp(acf_info->product_tab[i], prof_hdr->dev_name)) {
-+ AW_DEV_LOGD(dev, "bin_dev_name:%s",
-+ prof_hdr->dev_name);
-+ return 0;
-+ }
-+ }
-+
-+ return -ENXIO;
-+}
-+
-+static int aw_check_data_type_is_monitor_v_0_0_0_1(struct device *dev,
-+ struct aw_acf_dde *prof_hdr)
-+{
-+ if (prof_hdr->data_type == AW_MONITOR) {
-+ AW_DEV_LOGD(dev, "bin data is monitor");
-+ return 0;
-+ }
-+
-+ return -ENXIO;
-+}
-+
-+static int aw_parse_data_by_sec_type_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_acf_dde *prof_hdr,
-+ struct aw_prof_desc *profile_prof_desc)
-+{
-+ int ret = -1;
-+ char *cfg_data = acf_info->fw_data + prof_hdr->data_offset;
-+
-+ switch (prof_hdr->data_type) {
-+ case AW_BIN_TYPE_REG:
-+ snprintf(profile_prof_desc->dev_name, sizeof(prof_hdr->dev_name),
-+ "%s", prof_hdr->dev_name);
-+ profile_prof_desc->prof_name = aw_get_prof_name(prof_hdr->dev_profile);
-+ AW_DEV_LOGD(dev, "parse reg type data enter,profile=%s",
-+ aw_get_prof_name(prof_hdr->dev_profile));
-+ ret = aw_parse_raw_reg(dev, cfg_data, prof_hdr->data_size,
-+ profile_prof_desc);
-+ break;
-+ case AW_BIN_TYPE_HDR_REG:
-+ snprintf(profile_prof_desc->dev_name, sizeof(prof_hdr->dev_name),
-+ "%s", prof_hdr->dev_name);
-+ profile_prof_desc->prof_name = aw_get_prof_name(prof_hdr->dev_profile);
-+ AW_DEV_LOGD(dev, "parse hdr_reg type data enter,profile=%s",
-+ aw_get_prof_name(prof_hdr->dev_profile));
-+ ret = aw_parse_reg_with_hdr(dev, cfg_data,
-+ prof_hdr->data_size,
-+ profile_prof_desc);
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
-+static int aw_parse_dev_type_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info, struct aw_all_prof_info *all_prof_info)
-+{
-+ int i = 0;
-+ int ret = -1;
-+ int sec_num = 0;
-+ char *cfg_data = NULL;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_acf_dde *acf_dde =
-+ (struct aw_acf_dde *)(acf_info->fw_data + acf_info->acf_hdr.ddt_offset);
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ for (i = 0; i < acf_info->acf_hdr.dde_num; i++) {
-+ if ((acf_info->aw_dev->i2c_bus == acf_dde[i].dev_bus) &&
-+ (acf_info->aw_dev->i2c_addr == acf_dde[i].dev_addr) &&
-+ (acf_dde[i].type == AW_DDE_DEV_TYPE_ID)) {
-+
-+ ret = aw_check_product_name_v_0_0_0_1(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ ret = aw_check_data_type_is_monitor_v_0_0_0_1(dev, &acf_dde[i]);
-+ if (ret == 0) {
-+ cfg_data = acf_info->fw_data + acf_dde[i].data_offset;
-+ ret = aw_parse_monitor_config(dev, cfg_data, acf_dde[i].data_size);
-+ if (ret < 0)
-+ return ret;
-+ continue;
-+ }
-+
-+ prof_desc = &all_prof_info->prof_desc[acf_dde[i].dev_profile];
-+ ret = aw_parse_data_by_sec_type_v_0_0_0_1(dev, acf_info, &acf_dde[i],
-+ prof_desc);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse dev type data failed");
-+ return ret;
-+ }
-+ sec_num++;
-+ }
-+ }
-+
-+ if (sec_num == 0) {
-+ AW_DEV_LOGD(dev, "get dev type num is %d, please use default",
-+ sec_num);
-+ return AW_DEV_TYPE_NONE;
-+ }
-+
-+ return AW_DEV_TYPE_OK;
-+}
-+
-+static int aw_parse_default_type_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info, struct aw_all_prof_info *all_prof_info)
-+{
-+ int i = 0;
-+ int ret = -1;
-+ int sec_num = 0;
-+ char *cfg_data = NULL;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_acf_dde *acf_dde =
-+ (struct aw_acf_dde *)(acf_info->fw_data + acf_info->acf_hdr.ddt_offset);
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ for (i = 0; i < acf_info->acf_hdr.dde_num; i++) {
-+ if ((acf_info->dev_index == acf_dde[i].dev_index) &&
-+ (acf_dde[i].type == AW_DDE_DEV_DEFAULT_TYPE_ID)) {
-+
-+ ret = aw_check_product_name_v_0_0_0_1(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ ret = aw_check_data_type_is_monitor_v_0_0_0_1(dev, &acf_dde[i]);
-+ if (ret == 0) {
-+ cfg_data = acf_info->fw_data + acf_dde[i].data_offset;
-+ ret = aw_parse_monitor_config(dev, cfg_data, acf_dde[i].data_size);
-+ if (ret < 0)
-+ return ret;
-+ continue;
-+ }
-+
-+ prof_desc = &all_prof_info->prof_desc[acf_dde[i].dev_profile];
-+ ret = aw_parse_data_by_sec_type_v_0_0_0_1(dev, acf_info, &acf_dde[i],
-+ prof_desc);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse default type data failed");
-+ return ret;
-+ }
-+ sec_num++;
-+ }
-+ }
-+
-+ if (sec_num == 0) {
-+ AW_DEV_LOGE(dev, "get dev default type failed, get num[%d]",
-+ sec_num);
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_get_prof_count_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_all_prof_info *all_prof_info)
-+{
-+ int i = 0;
-+ int prof_count = 0;
-+ struct aw_prof_desc *prof_desc = all_prof_info->prof_desc;
-+
-+ for (i = 0; i < AW_PROFILE_MAX; i++) {
-+ if (prof_desc[i].prof_st == AW_PROFILE_OK) {
-+ prof_count++;
-+ } else if (i == AW_PROFILE_OFF) {
-+ prof_count++;
-+ AW_DEV_LOGI(dev, "not found profile [Off], set default");
-+ }
-+ }
-+
-+ AW_DEV_LOGI(dev, "get profile count=[%d]", prof_count);
-+ return prof_count;
-+}
-+
-+static int aw_set_prof_off_info_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_all_prof_info *all_prof_info,
-+ int index)
-+{
-+ struct aw_prof_desc *prof_desc = all_prof_info->prof_desc;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ if (index >= prof_info->count) {
-+ AW_DEV_LOGE(dev, "index[%d] is out of table,profile count[%d]",
-+ index, prof_info->count);
-+ return -EINVAL;
-+ }
-+
-+ if (prof_desc[AW_PROFILE_OFF].prof_st == AW_PROFILE_OK) {
-+ prof_info->prof_desc[index] = prof_desc[AW_PROFILE_OFF];
-+ AW_DEV_LOGI(dev, "product=[%s]----profile=[%s]",
-+ prof_info->prof_desc[index].dev_name,
-+ aw_get_prof_name(AW_PROFILE_OFF));
-+ } else {
-+ memset(&prof_info->prof_desc[index].data_container, 0,
-+ sizeof(struct aw_data_container));
-+ prof_info->prof_desc[index].prof_st = AW_PROFILE_WAIT;
-+ prof_info->prof_desc[index].prof_name = aw_get_prof_name(AW_PROFILE_OFF);
-+ AW_DEV_LOGI(dev, "set default power_off with no data to profile");
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int aw_get_vaild_prof_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_all_prof_info *all_prof_info)
-+{
-+ int i = 0;
-+ int ret = 0;
-+ int index = 0;
-+ struct aw_prof_desc *prof_desc = all_prof_info->prof_desc;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ prof_info->count = 0;
-+ ret = aw_get_prof_count_v_0_0_0_1(dev, acf_info, all_prof_info);
-+ if (ret < 0)
-+ return ret;
-+ prof_info->count = ret;
-+ prof_info->prof_desc = devm_kzalloc(dev,
-+ prof_info->count * sizeof(struct aw_prof_desc),
-+ GFP_KERNEL);
-+ if (prof_info->prof_desc == NULL) {
-+ AW_DEV_LOGE(dev, "prof_desc kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ for (i = 0; i < AW_PROFILE_MAX; i++) {
-+ if (i != AW_PROFILE_OFF && prof_desc[i].prof_st == AW_PROFILE_OK) {
-+ if (index >= prof_info->count) {
-+ AW_DEV_LOGE(dev, "get profile index[%d] overflow count[%d]",
-+ index, prof_info->count);
-+ return -ENOMEM;
-+ }
-+ prof_info->prof_desc[index] = prof_desc[i];
-+ AW_DEV_LOGI(dev, "product=[%s]----profile=[%s]",
-+ prof_info->prof_desc[index].dev_name,
-+ aw_get_prof_name(i));
-+ index++;
-+ }
-+ }
-+
-+ ret = aw_set_prof_off_info_v_0_0_0_1(dev, acf_info, all_prof_info, index);
-+ if (ret < 0)
-+ return ret;
-+
-+ AW_DEV_LOGD(dev, "get vaild profile succeed");
-+ return 0;
-+}
-+
-+static int aw_set_prof_name_list_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int i = 0;
-+ int count = acf_info->prof_info.count;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ prof_info->prof_name_list = (char (*)[AW_PROFILE_STR_MAX])devm_kzalloc(dev,
-+ count * (AW_PROFILE_STR_MAX), GFP_KERNEL);
-+ if (prof_info->prof_name_list == NULL) {
-+ AW_DEV_LOGE(dev, "prof_name_list devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ for (i = 0; i < count; ++i) {
-+ snprintf(prof_info->prof_name_list[i], AW_PROFILE_STR_MAX, "%s",
-+ prof_info->prof_desc[i].prof_name);
-+ AW_DEV_LOGI(dev, "index=[%d], profile_name=[%s]",
-+ i, prof_info->prof_name_list[i]);
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_parse_acf_v_0_0_0_1(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+
-+{
-+ int ret = 0;
-+ struct aw_all_prof_info all_prof_info;
-+
-+ AW_DEV_LOGD(dev, "enter");
-+ acf_info->prof_info.status = AW_ACF_WAIT;
-+
-+ memset(&all_prof_info, 0, sizeof(struct aw_all_prof_info));
-+
-+ ret = aw_parse_dev_type_v_0_0_0_1(dev, acf_info, &all_prof_info);
-+ if (ret < 0) {
-+ return ret;
-+ } else if (ret == AW_DEV_TYPE_NONE) {
-+ AW_DEV_LOGD(dev, "get dev type num is 0, parse default dev type");
-+ ret = aw_parse_default_type_v_0_0_0_1(dev, acf_info, &all_prof_info);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ ret = aw_get_vaild_prof_v_0_0_0_1(dev, acf_info, &all_prof_info);
-+ if (ret < 0) {
-+ aw87xxx_acf_profile_free(dev, acf_info);
-+ AW_DEV_LOGE(dev, "hdr_cersion[0x%x] parse failed",
-+ acf_info->acf_hdr.hdr_version);
-+ return ret;
-+ }
-+
-+ ret = aw_set_prof_name_list_v_0_0_0_1(dev, acf_info);
-+ if (ret < 0) {
-+ aw87xxx_acf_profile_free(dev, acf_info);
-+ AW_DEV_LOGE(dev, "creat prof_id_and_name_list failed");
-+ return ret;
-+ }
-+
-+ acf_info->prof_info.status = AW_ACF_UPDATE;
-+ AW_DEV_LOGI(dev, "acf parse success");
-+ return 0;
-+}
-+
-+/***************************************************************************
-+ * V1.0.0.0 version acf paese
-+ **************************************************************************/
-+static int aw_check_product_name_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_acf_dde_v_1_0_0_0 *prof_hdr)
-+{
-+ int i = 0;
-+
-+ for (i = 0; i < acf_info->product_cnt; i++) {
-+ if (0 == strcmp(acf_info->product_tab[i], prof_hdr->dev_name)) {
-+ AW_DEV_LOGI(dev, "bin_dev_name:%s", prof_hdr->dev_name);
-+ return 0;
-+ }
-+ }
-+
-+ return -ENXIO;
-+}
-+
-+static int aw_get_dde_type_info_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int i;
-+ int dev_num = 0;
-+ int default_num = 0;
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)acf_info->fw_data;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_hdr->ddt_offset);
-+
-+ prof_info->prof_type = AW_DEV_NONE_TYPE_ID;
-+ for (i = 0; i < acf_hdr->dde_num; i++) {
-+ if (acf_dde[i].type == AW_DDE_DEV_TYPE_ID)
-+ dev_num++;
-+ if (acf_dde[i].type == AW_DDE_DEV_DEFAULT_TYPE_ID)
-+ default_num++;
-+ }
-+
-+ if (!(dev_num || default_num)) {
-+ AW_DEV_LOGE(dev, "can't find scene");
-+ return -EINVAL;
-+ }
-+
-+ if (dev_num != 0)
-+ prof_info->prof_type = AW_DDE_DEV_TYPE_ID;
-+ else if (default_num != 0)
-+ prof_info->prof_type = AW_DDE_DEV_DEFAULT_TYPE_ID;
-+
-+ return 0;
-+}
-+
-+
-+static int aw_parse_get_dev_type_prof_count_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)acf_info->fw_data;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_hdr->ddt_offset);
-+ int i = 0;
-+ int ret = 0;
-+ int found_off_prof_flag = 0;
-+ int count = acf_info->prof_info.count;
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (((acf_dde[i].data_type == AW_BIN_TYPE_REG) ||
-+ (acf_dde[i].data_type == AW_BIN_TYPE_HDR_REG)) &&
-+ ((acf_info->aw_dev->i2c_bus == acf_dde[i].dev_bus) &&
-+ (acf_info->aw_dev->i2c_addr == acf_dde[i].dev_addr)) &&
-+ (acf_info->aw_dev->chipid == acf_dde[i].chip_id)) {
-+
-+ ret = aw_check_product_name_v_1_0_0_0(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ ret = aw_check_prof_str_is_off(acf_dde[i].dev_profile_str);
-+ if (ret == 0) {
-+ found_off_prof_flag = AW_PROFILE_OK;
-+ }
-+ count++;
-+ }
-+ }
-+
-+ if (count == 0) {
-+ AW_DEV_LOGE(dev, "can't find profile");
-+ return -EINVAL;
-+ }
-+
-+ if (!found_off_prof_flag) {
-+ count++;
-+ AW_DEV_LOGD(dev, "set no config power off profile in count");
-+ }
-+
-+ acf_info->prof_info.count = count;
-+ AW_DEV_LOGI(dev, "profile dev_type profile count is %d", acf_info->prof_info.count);
-+ return 0;
-+}
-+
-+static int aw_parse_get_default_type_prof_count_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)acf_info->fw_data;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_hdr->ddt_offset);
-+ int i = 0;
-+ int ret = 0;
-+ int found_off_prof_flag = 0;
-+ int count = acf_info->prof_info.count;
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (((acf_dde[i].data_type == AW_BIN_TYPE_REG) ||
-+ (acf_dde[i].data_type == AW_BIN_TYPE_HDR_REG)) &&
-+ (acf_info->dev_index == acf_dde[i].dev_index) &&
-+ (acf_info->aw_dev->chipid == acf_dde[i].chip_id)) {
-+
-+ ret = aw_check_product_name_v_1_0_0_0(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ ret = aw_check_prof_str_is_off(acf_dde[i].dev_profile_str);
-+ if (ret == 0) {
-+ found_off_prof_flag = AW_PROFILE_OK;
-+ }
-+ count++;
-+ }
-+ }
-+
-+ if (count == 0) {
-+ AW_DEV_LOGE(dev, "can't find profile");
-+ return -EINVAL;
-+ }
-+
-+ if (!found_off_prof_flag) {
-+ count++;
-+ AW_DEV_LOGD(dev, "set no config power off profile in count");
-+ }
-+
-+ acf_info->prof_info.count = count;
-+ AW_DEV_LOGI(dev, "profile default_type profile count is %d", acf_info->prof_info.count);
-+ return 0;
-+}
-+
-+static int aw_parse_get_profile_count_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int ret = 0;
-+
-+ ret = aw_get_dde_type_info_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (acf_info->prof_info.prof_type == AW_DDE_DEV_TYPE_ID) {
-+ ret = aw_parse_get_dev_type_prof_count_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse dev_type profile count failed");
-+ return ret;
-+ }
-+ } else if (acf_info->prof_info.prof_type == AW_DDE_DEV_DEFAULT_TYPE_ID) {
-+ ret = aw_parse_get_default_type_prof_count_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse default_type profile count failed");
-+ return ret;
-+ }
-+ } else {
-+ AW_DEV_LOGE(dev, "unsupport prof_type[0x%x]",
-+ acf_info->prof_info.prof_type);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(dev, "profile count is %d", acf_info->prof_info.count);
-+ return 0;
-+}
-+
-+static int aw_parse_dev_type_prof_name_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)acf_info->fw_data;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_hdr->ddt_offset);
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+ int i, ret, list_index = 0;
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (((acf_dde[i].data_type == AW_BIN_TYPE_REG) ||
-+ (acf_dde[i].data_type == AW_BIN_TYPE_HDR_REG)) &&
-+ (acf_info->aw_dev->i2c_bus == acf_dde[i].dev_bus) &&
-+ (acf_info->aw_dev->i2c_addr == acf_dde[i].dev_addr) &&
-+ (acf_info->aw_dev->chipid == acf_dde[i].chip_id)) {
-+ if (list_index > prof_info->count) {
-+ AW_DEV_LOGE(dev, "%s:Alrealdy set list_index [%d], redundant profile [%s]exist\n",
-+ __func__, list_index,
-+ acf_dde[i].dev_profile_str);
-+ return -EINVAL;
-+ }
-+
-+ ret = aw_check_product_name_v_1_0_0_0(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ snprintf(prof_info->prof_name_list[list_index], AW_PROFILE_STR_MAX, "%s",
-+ acf_dde[i].dev_profile_str);
-+ AW_DEV_LOGI(dev, "profile_name=[%s]",
-+ prof_info->prof_name_list[list_index]);
-+ list_index++;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_parse_default_type_prof_name_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ struct aw_acf_hdr *acf_hdr = (struct aw_acf_hdr *)acf_info->fw_data;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_hdr->ddt_offset);
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+ int i, ret, list_index = 0;
-+
-+ for (i = 0; i < acf_hdr->dde_num; ++i) {
-+ if (((acf_dde[i].data_type == AW_BIN_TYPE_REG) ||
-+ (acf_dde[i].data_type == AW_BIN_TYPE_HDR_REG)) &&
-+ (acf_info->dev_index == acf_dde[i].dev_index) &&
-+ (acf_info->aw_dev->chipid == acf_dde[i].chip_id)) {
-+ if (list_index > prof_info->count) {
-+ AW_DEV_LOGE(dev, "%s:Alrealdy set list_index [%d], redundant profile [%s]exist\n",
-+ __func__, list_index,
-+ acf_dde[i].dev_profile_str);
-+ return -EINVAL;
-+ }
-+
-+ ret = aw_check_product_name_v_1_0_0_0(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ snprintf(prof_info->prof_name_list[list_index], AW_PROFILE_STR_MAX, "%s",
-+ acf_dde[i].dev_profile_str);
-+ AW_DEV_LOGI(dev, "profile_name=[%s]",
-+ prof_info->prof_name_list[list_index]);
-+ list_index++;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_parse_prof_name_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int ret = 0;
-+ int count = acf_info->prof_info.count;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ prof_info->prof_name_list = (char (*)[AW_PROFILE_STR_MAX])devm_kzalloc(dev,
-+ count * (AW_PROFILE_STR_MAX), GFP_KERNEL);
-+ if (prof_info->prof_name_list == NULL) {
-+ AW_DEV_LOGE(dev, "prof_name_list devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ if (acf_info->prof_info.prof_type == AW_DDE_DEV_TYPE_ID) {
-+ ret = aw_parse_dev_type_prof_name_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse dev_type profile count failed");
-+ return ret;
-+ }
-+ } else if (acf_info->prof_info.prof_type == AW_DDE_DEV_DEFAULT_TYPE_ID) {
-+ ret = aw_parse_default_type_prof_name_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse default_type profile count failed");
-+ return ret;
-+ }
-+ } else {
-+ AW_DEV_LOGE(dev, "unsupport prof_type[0x%x]",
-+ acf_info->prof_info.prof_type);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(dev, "profile name parse succeed");
-+ return 0;
-+}
-+
-+
-+static int aw_search_prof_index_from_list_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_prof_desc **prof_desc,
-+ struct aw_acf_dde_v_1_0_0_0 *prof_hdr)
-+{
-+ int i = 0;
-+ int count = acf_info->prof_info.count;
-+ char (*prof_name_list)[AW_PROFILE_STR_MAX] = acf_info->prof_info.prof_name_list;
-+
-+ for (i = 0; i < count; i++) {
-+ if (!strncmp(prof_name_list[i], prof_hdr->dev_profile_str, AW_PROFILE_STR_MAX)) {
-+ *prof_desc = &(acf_info->prof_info.prof_desc[i]);
-+ return 0;
-+ }
-+ }
-+
-+ if (i == count)
-+ AW_DEV_LOGE(dev, "not find prof_id and prof_name in list");
-+
-+ return -EINVAL;
-+}
-+
-+static int aw_parse_data_by_sec_type_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info,
-+ struct aw_acf_dde_v_1_0_0_0 *prof_hdr)
-+{
-+ int ret = -1;
-+ char *cfg_data = acf_info->fw_data + prof_hdr->data_offset;
-+ struct aw_prof_desc *prof_desc = NULL;
-+
-+ ret = aw_search_prof_index_from_list_v_1_0_0_0(dev, acf_info, &prof_desc, prof_hdr);
-+ if (ret < 0)
-+ return ret;
-+
-+ switch (prof_hdr->data_type) {
-+ case AW_BIN_TYPE_REG:
-+ snprintf(prof_desc->dev_name, sizeof(prof_hdr->dev_name),
-+ "%s", prof_hdr->dev_name);
-+ AW_DEV_LOGI(dev, "parse reg type data enter,product=[%s],prof_id=[%d],prof_name=[%s]",
-+ prof_hdr->dev_name, prof_hdr->dev_profile,
-+ prof_hdr->dev_profile_str);
-+ prof_desc->prof_name = prof_hdr->dev_profile_str;
-+ ret = aw_parse_raw_reg(dev, cfg_data, prof_hdr->data_size,
-+ prof_desc);
-+ break;
-+ case AW_BIN_TYPE_HDR_REG:
-+ snprintf(prof_desc->dev_name, sizeof(prof_hdr->dev_name),
-+ "%s", prof_hdr->dev_name);
-+ AW_DEV_LOGI(dev, "parse hdr_reg type data enter,product=[%s],prof_id=[%d],prof_name=[%s]",
-+ prof_hdr->dev_name, prof_hdr->dev_profile,
-+ prof_hdr->dev_profile_str);
-+ prof_desc->prof_name = prof_hdr->dev_profile_str;
-+ ret = aw_parse_reg_with_hdr(dev, cfg_data,
-+ prof_hdr->data_size, prof_desc);
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
-+static int aw_parse_dev_type_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int i = 0;
-+ int ret;
-+ int parse_prof_count = 0;
-+ char *cfg_data = NULL;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_info->acf_hdr.ddt_offset);
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ for (i = 0; i < acf_info->acf_hdr.dde_num; i++) {
-+ if ((acf_dde[i].type == AW_DDE_DEV_TYPE_ID) &&
-+ (acf_info->aw_dev->i2c_bus == acf_dde[i].dev_bus) &&
-+ (acf_info->aw_dev->i2c_addr == acf_dde[i].dev_addr) &&
-+ (acf_info->aw_dev->chipid == acf_dde[i].chip_id)) {
-+ ret = aw_check_product_name_v_1_0_0_0(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ if (acf_dde[i].data_type == AW_MONITOR) {
-+ cfg_data = acf_info->fw_data + acf_dde[i].data_offset;
-+ AW_DEV_LOGD(dev, "parse monitor type data enter");
-+ ret = aw_parse_monitor_config(dev, cfg_data,
-+ acf_dde[i].data_size);
-+ } else {
-+ ret = aw_parse_data_by_sec_type_v_1_0_0_0(dev, acf_info,
-+ &acf_dde[i]);
-+ if (ret < 0)
-+ AW_DEV_LOGE(dev, "parse dev type data failed");
-+ else
-+ parse_prof_count++;
-+ }
-+ }
-+ }
-+
-+ if (parse_prof_count == 0) {
-+ AW_DEV_LOGE(dev, "get dev type num is %d, parse failed", parse_prof_count);
-+ return -EINVAL;
-+ }
-+
-+ return AW_DEV_TYPE_OK;
-+}
-+
-+static int aw_parse_default_type_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int i = 0;
-+ int ret;
-+ int parse_prof_count = 0;
-+ char *cfg_data = NULL;
-+ struct aw_acf_dde_v_1_0_0_0 *acf_dde =
-+ (struct aw_acf_dde_v_1_0_0_0 *)(acf_info->fw_data + acf_info->acf_hdr.ddt_offset);
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ for (i = 0; i < acf_info->acf_hdr.dde_num; i++) {
-+ if ((acf_dde[i].type == AW_DDE_DEV_DEFAULT_TYPE_ID) &&
-+ (acf_info->dev_index == acf_dde[i].dev_index) &&
-+ (acf_info->aw_dev->chipid == acf_dde[i].chip_id)) {
-+ ret = aw_check_product_name_v_1_0_0_0(dev, acf_info, &acf_dde[i]);
-+ if (ret < 0)
-+ continue;
-+
-+ if (acf_dde[i].data_type == AW_MONITOR) {
-+ cfg_data = acf_info->fw_data + acf_dde[i].data_offset;
-+ AW_DEV_LOGD(dev, "parse monitor type data enter");
-+ ret = aw_parse_monitor_config(dev, cfg_data,
-+ acf_dde[i].data_size);
-+ } else {
-+ ret = aw_parse_data_by_sec_type_v_1_0_0_0(dev, acf_info,
-+ &acf_dde[i]);
-+ if (ret < 0)
-+ AW_DEV_LOGE(dev, "parse default type data failed");
-+ else
-+ parse_prof_count++;
-+ }
-+ }
-+ }
-+
-+ if (parse_prof_count == 0) {
-+ AW_DEV_LOGE(dev, "get default type num is %d,parse failed", parse_prof_count);
-+ return -EINVAL;
-+ }
-+
-+ return AW_DEV_TYPE_OK;
-+}
-+
-+static int aw_parse_by_hdr_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int ret;
-+
-+ if (acf_info->prof_info.prof_type == AW_DDE_DEV_TYPE_ID) {
-+ ret = aw_parse_dev_type_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0)
-+ return ret;
-+ } else if (acf_info->prof_info.prof_type == AW_DDE_DEV_DEFAULT_TYPE_ID) {
-+ ret = aw_parse_default_type_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_set_prof_off_info_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+ int i = 0;
-+ int ret = 0;
-+
-+ for (i = 0; i < prof_info->count; ++i) {
-+ if (!(prof_info->prof_desc[i].prof_st)) {
-+ snprintf(prof_info->prof_name_list[i], AW_PROFILE_STR_MAX, "%s",
-+ g_power_off_name[0]);
-+ prof_info->prof_desc[i].prof_name = prof_info->prof_name_list[i];
-+ prof_info->prof_desc[i].prof_st = AW_PROFILE_WAIT;
-+ memset(&prof_info->prof_desc[i].data_container, 0,
-+ sizeof(struct aw_data_container));
-+ return 0;
-+ }
-+
-+ ret = aw_check_prof_str_is_off(prof_info->prof_name_list[i]);
-+ if (ret == 0) {
-+ AW_DEV_LOGD(dev, "found profile off,data_len=[%d]",
-+ prof_info->prof_desc[i].data_container.len);
-+ return 0;
-+ }
-+ }
-+
-+ AW_DEV_LOGE(dev, "index[%d] is out of table,profile count[%d]",
-+ i, prof_info->count);
-+ return -EINVAL;
-+}
-+
-+static int aw_parse_acf_v_1_0_0_0(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+
-+{
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+ int ret;
-+
-+ ret = aw_parse_get_profile_count_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "get profile count failed");
-+ return ret;
-+ }
-+
-+ ret = aw_parse_prof_name_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "get profile count failed");
-+ return ret;
-+ }
-+
-+ acf_info->prof_info.prof_desc = devm_kzalloc(dev,
-+ prof_info->count * sizeof(struct aw_prof_desc), GFP_KERNEL);
-+ if (acf_info->prof_info.prof_desc == NULL) {
-+ AW_DEV_LOGE(dev, "prof_desc devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ ret = aw_parse_by_hdr_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "parse data failed");
-+ return ret;
-+ }
-+
-+ ret = aw_set_prof_off_info_v_1_0_0_0(dev, acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "set profile off info failed");
-+ return ret;
-+ }
-+
-+ prof_info->status = AW_ACF_UPDATE;
-+ AW_DEV_LOGI(dev, "acf paese succeed");
-+ return 0;
-+}
-+
-+
-+/*************************************************************************
-+ *
-+ *acf parse API
-+ *
-+ *************************************************************************/
-+void aw87xxx_acf_profile_free(struct device *dev, struct acf_bin_info *acf_info)
-+{
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ prof_info->count = 0;
-+ prof_info->status = AW_ACF_WAIT;
-+ memset(&acf_info->acf_hdr, 0, sizeof(struct aw_acf_hdr));
-+
-+ if (prof_info->prof_desc) {
-+ devm_kfree(dev, prof_info->prof_desc);
-+ prof_info->prof_desc = NULL;
-+ }
-+
-+ if (prof_info->prof_name_list) {
-+ devm_kfree(dev, prof_info->prof_name_list);
-+ prof_info->prof_name_list = NULL;
-+ }
-+
-+ if (acf_info->fw_data) {
-+ vfree(acf_info->fw_data);
-+ acf_info->fw_data = NULL;
-+ }
-+}
-+
-+int aw87xxx_acf_parse(struct device *dev, struct acf_bin_info *acf_info)
-+{
-+ int ret = 0;
-+
-+ AW_DEV_LOGD(dev, "enter");
-+ acf_info->prof_info.status = AW_ACF_WAIT;
-+ ret = aw_check_acf_firmware(dev, acf_info->fw_data,
-+ acf_info->fw_size);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "load firmware check failed");
-+ return -EINVAL;
-+ }
-+
-+ memcpy(&acf_info->acf_hdr, acf_info->fw_data,
-+ sizeof(struct aw_acf_hdr));
-+
-+ switch (acf_info->acf_hdr.hdr_version) {
-+ case AW_ACF_HDR_VER_0_0_0_1:
-+ return aw_parse_acf_v_0_0_0_1(dev, acf_info);
-+ case AW_ACF_HDR_VER_1_0_0_0:
-+ return aw_parse_acf_v_1_0_0_0(dev, acf_info);
-+ default:
-+ AW_DEV_LOGE(dev, "unsupported hdr_version [0x%x]",
-+ acf_info->acf_hdr.hdr_version);
-+ return -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+struct aw_prof_desc *aw87xxx_acf_get_prof_desc_form_name(struct device *dev,
-+ struct acf_bin_info *acf_info, char *profile_name)
-+{
-+ int i = 0;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ if (!acf_info->prof_info.status) {
-+ AW_DEV_LOGE(dev, "profile_cfg not load");
-+ return NULL;
-+ }
-+
-+ for (i = 0; i < prof_info->count; i++) {
-+ if (!strncmp(profile_name, prof_info->prof_desc[i].prof_name,
-+ AW_PROFILE_STR_MAX)) {
-+ prof_desc = &prof_info->prof_desc[i];
-+ break;
-+ }
-+ }
-+
-+ if (i == prof_info->count) {
-+ AW_DEV_LOGE(dev, "profile not found");
-+ return NULL;
-+ }
-+
-+ AW_DEV_LOGI(dev, "get prof desc down");
-+ return prof_desc;
-+}
-+
-+int aw87xxx_acf_get_prof_index_form_name(struct device *dev,
-+ struct acf_bin_info *acf_info, char *profile_name)
-+{
-+ int i = 0;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ if (!acf_info->prof_info.status) {
-+ AW_DEV_LOGE(dev, "profile_cfg not load");
-+ return -EINVAL;
-+ }
-+
-+ for (i = 0; i < prof_info->count; i++) {
-+ if (!strncmp(profile_name, prof_info->prof_name_list[i],
-+ AW_PROFILE_STR_MAX)) {
-+ return i;
-+ }
-+ }
-+
-+ AW_DEV_LOGE(dev, "profile_index not found");
-+ return -EINVAL;
-+}
-+
-+char *aw87xxx_acf_get_prof_name_form_index(struct device *dev,
-+ struct acf_bin_info *acf_info, int index)
-+{
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ if (!acf_info->prof_info.status) {
-+ AW_DEV_LOGE(dev, "profile_cfg not load");
-+ return NULL;
-+ }
-+
-+ if (index >= prof_info->count || index < 0) {
-+ AW_DEV_LOGE(dev, "profile_index out of table");
-+ return NULL;
-+ }
-+
-+ return prof_info->prof_desc[index].prof_name;
-+}
-+
-+
-+int aw87xxx_acf_get_profile_count(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ if (!acf_info->prof_info.status) {
-+ AW_DEV_LOGE(dev, "profile_cfg not load");
-+ return -EINVAL;
-+ }
-+
-+ if (prof_info->count > 0) {
-+ return prof_info->count;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+char *aw87xxx_acf_get_prof_off_name(struct device *dev,
-+ struct acf_bin_info *acf_info)
-+{
-+ int i = 0;
-+ int ret = 0;
-+ struct aw_prof_info *prof_info = &acf_info->prof_info;
-+
-+ if (!acf_info->prof_info.status) {
-+ AW_DEV_LOGE(dev, "profile_cfg not load");
-+ return NULL;
-+ }
-+
-+ for (i = 0; i < prof_info->count; i++) {
-+ ret = aw_check_prof_str_is_off(prof_info->prof_name_list[i]);
-+ if (ret == 0)
-+ return prof_info->prof_name_list[i];
-+ }
-+
-+ return NULL;
-+}
-+
-+void aw87xxx_acf_init(struct aw_device *aw_dev, struct acf_bin_info *acf_info, int index)
-+{
-+
-+ acf_info->load_count = 0;
-+ acf_info->prof_info.status = AW_ACF_WAIT;
-+ acf_info->dev_index = index;
-+ acf_info->aw_dev = aw_dev;
-+ acf_info->product_cnt = aw_dev->product_cnt;
-+ acf_info->product_tab = aw_dev->product_tab;
-+ acf_info->prof_info.prof_desc = NULL;
-+ acf_info->fw_data = NULL;
-+ acf_info->fw_size = 0;
-+}
-+
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.h b/sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.h
-new file mode 100644
-index 000000000..ebe0c77f5
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_acf_bin.h
-@@ -0,0 +1,191 @@
-+#ifndef __AW87XXX_ACF_BIN_H__
-+#define __AW87XXX_ACF_BIN_H__
-+
-+#include "aw87xxx_device.h"
-+
-+#define AW_PROJECT_NAME_MAX (24)
-+#define AW_CUSTOMER_NAME_MAX (16)
-+#define AW_CFG_VERSION_MAX (4)
-+#define AW_TBL_VERSION_MAX (4)
-+#define AW_DDE_DEVICE_TYPE (0)
-+#define AW_DDE_SKT_TYPE (1)
-+#define AW_DDE_DEFAULT_TYPE (2)
-+
-+#define AW_REG_ADDR_BYTE (1)
-+#define AW_REG_DATA_BYTE (1)
-+
-+#define AW_ACF_FILE_ID (0xa15f908)
-+#define AW_PROFILE_STR_MAX (32)
-+#define AW_POWER_OFF_NAME_SUPPORT_COUNT (5)
-+
-+enum aw_cfg_hdr_version {
-+ AW_ACF_HDR_VER_0_0_0_1 = 0x00000001,
-+ AW_ACF_HDR_VER_1_0_0_0 = 0x01000000,
-+};
-+
-+enum aw_acf_dde_type_id {
-+ AW_DEV_NONE_TYPE_ID = 0xFFFFFFFF,
-+ AW_DDE_DEV_TYPE_ID = 0x00000000,
-+ AW_DDE_SKT_TYPE_ID = 0x00000001,
-+ AW_DDE_DEV_DEFAULT_TYPE_ID = 0x00000002,
-+ AW_DDE_TYPE_MAX,
-+};
-+
-+enum aw_raw_data_type_id {
-+ AW_BIN_TYPE_REG = 0x00000000,
-+ AW_BIN_TYPE_DSP,
-+ AW_BIN_TYPE_DSP_CFG,
-+ AW_BIN_TYPE_DSP_FW,
-+ AW_BIN_TYPE_HDR_REG,
-+ AW_BIN_TYPE_HDR_DSP_CFG,
-+ AW_BIN_TYPE_HDR_DSP_FW,
-+ AW_BIN_TYPE_MUTLBIN,
-+ AW_SKT_UI_PROJECT,
-+ AW_DSP_CFG,
-+ AW_MONITOR,
-+ AW_BIN_TYPE_MAX,
-+};
-+
-+enum {
-+ AW_DEV_TYPE_OK = 0,
-+ AW_DEV_TYPE_NONE = 1,
-+};
-+
-+enum aw_profile_status {
-+ AW_PROFILE_WAIT = 0,
-+ AW_PROFILE_OK,
-+};
-+
-+enum aw_acf_load_status {
-+ AW_ACF_WAIT = 0,
-+ AW_ACF_UPDATE,
-+};
-+
-+enum aw_bin_dev_profile_id {
-+ AW_PROFILE_MUSIC = 0x0000,
-+ AW_PROFILE_VOICE,
-+ AW_PROFILE_VOIP,
-+ AW_PROFILE_RINGTONE,
-+ AW_PROFILE_RINGTONE_HS,
-+ AW_PROFILE_LOWPOWER,
-+ AW_PROFILE_BYPASS,
-+ AW_PROFILE_MMI,
-+ AW_PROFILE_FM,
-+ AW_PROFILE_NOTIFICATION,
-+ AW_PROFILE_RECEIVER,
-+ AW_PROFILE_OFF,
-+ AW_PROFILE_MAX,
-+};
-+
-+struct aw_acf_hdr {
-+ int32_t a_id; /* acf file ID 0xa15f908 */
-+ char project[AW_PROJECT_NAME_MAX]; /* project name */
-+ char custom[AW_CUSTOMER_NAME_MAX]; /* custom name :huawei xiaomi vivo oppo */
-+ uint8_t version[AW_CFG_VERSION_MAX]; /* author update version */
-+ int32_t author_id; /* author id */
-+ int32_t ddt_size; /* sub section table entry size */
-+ int32_t dde_num; /* sub section table entry num */
-+ int32_t ddt_offset; /* sub section table offset in file */
-+ int32_t hdr_version; /* sub section table version */
-+ int32_t reserve[3]; /* Reserved Bits */
-+};
-+
-+struct aw_acf_dde {
-+ int32_t type; /* dde type id */
-+ char dev_name[AW_CUSTOMER_NAME_MAX]; /* customer dev name */
-+ int16_t dev_index; /* dev id */
-+ int16_t dev_bus; /* dev bus id */
-+ int16_t dev_addr; /* dev addr id */
-+ int16_t dev_profile; /* dev profile id */
-+ int32_t data_type; /* data type id */
-+ int32_t data_size; /* dde data size in block */
-+ int32_t data_offset; /* dde data offset in block */
-+ int32_t data_crc; /* dde data crc checkout */
-+ int32_t reserve[5]; /* Reserved Bits */
-+};
-+
-+struct aw_acf_dde_v_1_0_0_0 {
-+ uint32_t type; /* DDE type id */
-+ char dev_name[AW_CUSTOMER_NAME_MAX]; /* customer dev name */
-+ uint16_t dev_index; /* dev id */
-+ uint16_t dev_bus; /* dev bus id */
-+ uint16_t dev_addr; /* dev addr id */
-+ uint16_t dev_profile; /* dev profile id*/
-+ uint32_t data_type; /* data type id */
-+ uint32_t data_size; /* dde data size in block */
-+ uint32_t data_offset; /* dde data offset in block */
-+ uint32_t data_crc; /* dde data crc checkout */
-+ char dev_profile_str[AW_PROFILE_STR_MAX]; /* dde custom profile name */
-+ uint32_t chip_id; /* dde custom product chip id */
-+ uint32_t reserve[4];
-+};
-+
-+struct aw_data_with_header {
-+ uint32_t check_sum;
-+ uint32_t header_ver;
-+ uint32_t bin_data_type;
-+ uint32_t bin_data_ver;
-+ uint32_t bin_data_size;
-+ uint32_t ui_ver;
-+ char product[8];
-+ uint32_t addr_byte_len;
-+ uint32_t data_byte_len;
-+ uint32_t device_addr;
-+ uint32_t reserve[4];
-+};
-+
-+struct aw_data_container {
-+ uint32_t len;
-+ uint8_t *data;
-+};
-+
-+struct aw_prof_desc {
-+ uint32_t prof_st;
-+ char *prof_name;
-+ char dev_name[AW_CUSTOMER_NAME_MAX];
-+ struct aw_data_container data_container;
-+};
-+
-+struct aw_all_prof_info {
-+ struct aw_prof_desc prof_desc[AW_PROFILE_MAX];
-+};
-+
-+struct aw_prof_info {
-+ int count;
-+ int status;
-+ int prof_type;
-+ char (*prof_name_list)[AW_PROFILE_STR_MAX];
-+ struct aw_prof_desc *prof_desc;
-+};
-+
-+struct acf_bin_info {
-+ int load_count;
-+ int fw_size;
-+ int16_t dev_index;
-+ char *fw_data;
-+ int product_cnt;
-+ const char **product_tab;
-+ struct aw_device *aw_dev;
-+
-+ struct aw_acf_hdr acf_hdr;
-+ struct aw_prof_info prof_info;
-+};
-+
-+char *aw87xxx_ctos_get_prof_name(int profile_id);
-+void aw87xxx_acf_profile_free(struct device *dev,
-+ struct acf_bin_info *acf_info);
-+int aw87xxx_acf_parse(struct device *dev, struct acf_bin_info *acf_info);
-+struct aw_prof_desc *aw87xxx_acf_get_prof_desc_form_name(struct device *dev,
-+ struct acf_bin_info *acf_info, char *profile_name);
-+int aw87xxx_acf_get_prof_index_form_name(struct device *dev,
-+ struct acf_bin_info *acf_info, char *profile_name);
-+char *aw87xxx_acf_get_prof_name_form_index(struct device *dev,
-+ struct acf_bin_info *acf_info, int index);
-+int aw87xxx_acf_get_profile_count(struct device *dev,
-+ struct acf_bin_info *acf_info);
-+char *aw87xxx_acf_get_prof_off_name(struct device *dev,
-+ struct acf_bin_info *acf_info);
-+void aw87xxx_acf_init(struct aw_device *aw_dev, struct acf_bin_info *acf_info, int index);
-+
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.c b/sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.c
-new file mode 100644
-index 000000000..7eab9efde
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.c
-@@ -0,0 +1,515 @@
-+/*
-+* aw87xxx_bin_parse.c
-+*
-+* Copyright (c) 2020 AWINIC Technology CO., LTD
-+*
-+* This program is free software; you can redistribute it and/or modify it
-+* under the terms of the GNU General Public License as published by the
-+* Free Software Foundation; either version 2 of the License, or (at your
-+* option) any later version.
-+*/
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/i2c.h>
-+#include <linux/of_gpio.h>
-+#include <linux/delay.h>
-+#include <linux/device.h>
-+#include <linux/firmware.h>
-+#include <linux/slab.h>
-+#include <linux/version.h>
-+#include <linux/input.h>
-+#include <linux/interrupt.h>
-+#include <linux/debugfs.h>
-+#include <linux/miscdevice.h>
-+#include <asm/uaccess.h>
-+#include <linux/regmap.h>
-+#include <linux/timer.h>
-+#include <linux/workqueue.h>
-+#include <linux/hrtimer.h>
-+#include <linux/mutex.h>
-+#include <linux/cdev.h>
-+#include <linux/list.h>
-+#include <linux/string.h>
-+#include "aw87xxx_bin_parse.h"
-+
-+#define AWINIC_CODE_VERSION "V0.0.7-V1.0.4" /* "code version"-"excel version" */
-+
-+#define DEBUG_LOG_LEVEL
-+#ifdef DEBUG_LOG_LEVEL
-+#define DBG(fmt, arg...) do {\
-+printk("AWINIC_BIN %s,line= %d,"fmt, __func__, __LINE__, ##arg);\
-+} while (0)
-+#define DBG_ERR(fmt, arg...) do {\
-+printk("AWINIC_BIN_ERR %s,line= %d,"fmt, __func__, __LINE__, ##arg);\
-+} while (0)
-+#else
-+#define DBG(fmt, arg...) do {} while (0)
-+#define DBG_ERR(fmt, arg...) do {} while (0)
-+#endif
-+
-+#define printing_data_code
-+
-+typedef unsigned short int aw_uint16;
-+typedef unsigned long int aw_uint32;
-+
-+#define BigLittleSwap16(A) ((((aw_uint16)(A) & 0xff00) >> 8) | \
-+ (((aw_uint16)(A) & 0x00ff) << 8))
-+
-+#define BigLittleSwap32(A) ((((aw_uint32)(A) & 0xff000000) >> 24) | \
-+ (((aw_uint32)(A) & 0x00ff0000) >> 8) | \
-+ (((aw_uint32)(A) & 0x0000ff00) << 8) | \
-+ (((aw_uint32)(A) & 0x000000ff) << 24))
-+
-+
-+static int aw_parse_bin_header_1_0_0(struct aw_bin *bin);
-+
-+/**
-+*
-+* Interface function
-+*
-+* return value:
-+* value = 0 :success;
-+* value = -1 :check bin header version
-+* value = -2 :check bin data type
-+* value = -3 :check sum or check bin data len error
-+* value = -4 :check data version
-+* value = -5 :check register num
-+* value = -6 :check dsp reg num
-+* value = -7 :check soc app num
-+* value = -8 :bin is NULL point
-+*
-+**/
-+
-+/********************************************************
-+*
-+* check sum data
-+*
-+********************************************************/
-+static int aw_check_sum(struct aw_bin *bin, int bin_num)
-+{
-+ unsigned int i = 0;
-+ unsigned int sum_data = 0;
-+ unsigned int check_sum = 0;
-+ unsigned char *p_check_sum = NULL;
-+
-+ DBG("enter\n");
-+
-+ p_check_sum =
-+ &(bin->info.data[(bin->header_info[bin_num].valid_data_addr -
-+ bin->header_info[bin_num].header_len)]);
-+ DBG("aw_bin_parse p_check_sum = %p\n", p_check_sum);
-+ check_sum = GET_32_DATA(*(p_check_sum + 3),
-+ *(p_check_sum + 2),
-+ *(p_check_sum + 1), *(p_check_sum));
-+
-+ for (i = 4;
-+ i <
-+ bin->header_info[bin_num].bin_data_len +
-+ bin->header_info[bin_num].header_len; i++) {
-+ sum_data += *(p_check_sum + i);
-+ }
-+ DBG("aw_bin_parse bin_num=%d, check_sum = 0x%x, sum_data = 0x%x\n",
-+ bin_num, check_sum, sum_data);
-+ if (sum_data != check_sum) {
-+ p_check_sum = NULL;
-+ DBG_ERR("aw_bin_parse check sum or check bin data len error\n");
-+ DBG_ERR("aw_bin_parse bin_num=%d, check_sum = 0x%x, sum_data = 0x%x\n", bin_num, check_sum, sum_data);
-+ return -3;
-+ }
-+ p_check_sum = NULL;
-+
-+ return 0;
-+}
-+
-+static int aw_check_data_version(struct aw_bin *bin, int bin_num)
-+{
-+ int i = 0;
-+ DBG("enter\n");
-+
-+ for (i = DATA_VERSION_V1; i < DATA_VERSION_MAX; i++) {
-+ if (bin->header_info[bin_num].bin_data_ver == i) {
-+ return 0;
-+ }
-+ }
-+ DBG_ERR("aw_bin_parse Unrecognized this bin data version\n");
-+ return -4;
-+}
-+
-+static int aw_check_register_num_v1(struct aw_bin *bin, int bin_num)
-+{
-+ unsigned int check_register_num = 0;
-+ unsigned int parse_register_num = 0;
-+ unsigned char *p_check_sum = NULL;
-+
-+ DBG("enter\n");
-+
-+ p_check_sum =
-+ &(bin->info.data[(bin->header_info[bin_num].valid_data_addr)]);
-+ DBG("aw_bin_parse p_check_sum = %p\n", p_check_sum);
-+ parse_register_num = GET_32_DATA(*(p_check_sum + 3),
-+ *(p_check_sum + 2),
-+ *(p_check_sum + 1), *(p_check_sum));
-+ check_register_num = (bin->header_info[bin_num].bin_data_len - 4) /
-+ (bin->header_info[bin_num].reg_byte_len +
-+ bin->header_info[bin_num].data_byte_len);
-+ DBG
-+ ("aw_bin_parse bin_num=%d, parse_register_num = 0x%x, check_register_num = 0x%x\n",
-+ bin_num, parse_register_num, check_register_num);
-+ if (parse_register_num != check_register_num) {
-+ p_check_sum = NULL;
-+ DBG_ERR("aw_bin_parse register num is error\n");
-+ DBG_ERR("aw_bin_parse bin_num=%d, parse_register_num = 0x%x, check_register_num = 0x%x\n", bin_num, parse_register_num, check_register_num);
-+ return -5;
-+ }
-+ bin->header_info[bin_num].reg_num = parse_register_num;
-+ bin->header_info[bin_num].valid_data_len =
-+ bin->header_info[bin_num].bin_data_len - 4;
-+ p_check_sum = NULL;
-+ bin->header_info[bin_num].valid_data_addr =
-+ bin->header_info[bin_num].valid_data_addr + 4;
-+ return 0;
-+}
-+
-+static int aw_check_dsp_reg_num_v1(struct aw_bin *bin, int bin_num)
-+{
-+ unsigned int check_dsp_reg_num = 0;
-+ unsigned int parse_dsp_reg_num = 0;
-+ unsigned char *p_check_sum = NULL;
-+
-+ DBG("enter\n");
-+
-+ p_check_sum =
-+ &(bin->info.data[(bin->header_info[bin_num].valid_data_addr)]);
-+ DBG("aw_bin_parse p_check_sum = %p\n", p_check_sum);
-+ parse_dsp_reg_num = GET_32_DATA(*(p_check_sum + 7),
-+ *(p_check_sum + 6),
-+ *(p_check_sum + 5), *(p_check_sum + 4));
-+ bin->header_info[bin_num].reg_data_byte_len =
-+ GET_32_DATA(*(p_check_sum + 11), *(p_check_sum + 10),
-+ *(p_check_sum + 9), *(p_check_sum + 8));
-+ check_dsp_reg_num =
-+ (bin->header_info[bin_num].bin_data_len -
-+ 12) / bin->header_info[bin_num].reg_data_byte_len;
-+ DBG
-+ ("aw_bin_parse bin_num=%d, parse_dsp_reg_num = 0x%x, check_dsp_reg_num = 0x%x\n",
-+ bin_num, parse_dsp_reg_num, check_dsp_reg_num);
-+ if (parse_dsp_reg_num != check_dsp_reg_num) {
-+ p_check_sum = NULL;
-+ DBG_ERR("aw_bin_parse dsp reg num is error\n");
-+ DBG_ERR("aw_bin_parse bin_num=%d, parse_dsp_reg_num = 0x%x, check_dsp_reg_num = 0x%x\n", bin_num, parse_dsp_reg_num, check_dsp_reg_num);
-+ return -6;
-+ }
-+ bin->header_info[bin_num].download_addr =
-+ GET_32_DATA(*(p_check_sum + 3), *(p_check_sum + 2),
-+ *(p_check_sum + 1), *(p_check_sum));
-+ bin->header_info[bin_num].reg_num = parse_dsp_reg_num;
-+ bin->header_info[bin_num].valid_data_len =
-+ bin->header_info[bin_num].bin_data_len - 12;
-+ p_check_sum = NULL;
-+ bin->header_info[bin_num].valid_data_addr =
-+ bin->header_info[bin_num].valid_data_addr + 12;
-+ return 0;
-+}
-+
-+static int aw_check_soc_app_num_v1(struct aw_bin *bin, int bin_num)
-+{
-+ unsigned int check_soc_app_num = 0;
-+ unsigned int parse_soc_app_num = 0;
-+ unsigned char *p_check_sum = NULL;
-+
-+ DBG("enter\n");
-+
-+ p_check_sum =
-+ &(bin->info.data[(bin->header_info[bin_num].valid_data_addr)]);
-+ DBG("aw_bin_parse p_check_sum = %p\n", p_check_sum);
-+ bin->header_info[bin_num].app_version = GET_32_DATA(*(p_check_sum + 3),
-+ *(p_check_sum + 2),
-+ *(p_check_sum + 1),
-+ *(p_check_sum));
-+ parse_soc_app_num = GET_32_DATA(*(p_check_sum + 11),
-+ *(p_check_sum + 10),
-+ *(p_check_sum + 9), *(p_check_sum + 8));
-+ check_soc_app_num = bin->header_info[bin_num].bin_data_len - 12;
-+ DBG
-+ ("aw_bin_parse bin_num=%d, parse_soc_app_num = 0x%x, check_soc_app_num = 0x%x\n",
-+ bin_num, parse_soc_app_num, check_soc_app_num);
-+ if (parse_soc_app_num != check_soc_app_num) {
-+ p_check_sum = NULL;
-+ DBG_ERR("aw_bin_parse soc app num is error\n");
-+ DBG_ERR("aw_bin_parse bin_num=%d, parse_soc_app_num = 0x%x, check_soc_app_num = 0x%x\n", bin_num, parse_soc_app_num, check_soc_app_num);
-+ return -7;
-+ }
-+ bin->header_info[bin_num].reg_num = parse_soc_app_num;
-+ bin->header_info[bin_num].download_addr =
-+ GET_32_DATA(*(p_check_sum + 7), *(p_check_sum + 6),
-+ *(p_check_sum + 5), *(p_check_sum + 4));
-+ bin->header_info[bin_num].valid_data_len =
-+ bin->header_info[bin_num].bin_data_len - 12;
-+ p_check_sum = NULL;
-+ bin->header_info[bin_num].valid_data_addr =
-+ bin->header_info[bin_num].valid_data_addr + 12;
-+ return 0;
-+}
-+
-+/************************
-+***
-+***bin header 1_0_0
-+***
-+************************/
-+static void aw_get_single_bin_header_1_0_0(struct aw_bin *bin)
-+{
-+ int i;
-+ DBG("enter %s\n", __func__);
-+ bin->header_info[bin->all_bin_parse_num].header_len = 60;
-+ bin->header_info[bin->all_bin_parse_num].check_sum =
-+ GET_32_DATA(*(bin->p_addr + 3), *(bin->p_addr + 2),
-+ *(bin->p_addr + 1), *(bin->p_addr));
-+ bin->header_info[bin->all_bin_parse_num].header_ver =
-+ GET_32_DATA(*(bin->p_addr + 7), *(bin->p_addr + 6),
-+ *(bin->p_addr + 5), *(bin->p_addr + 4));
-+ bin->header_info[bin->all_bin_parse_num].bin_data_type =
-+ GET_32_DATA(*(bin->p_addr + 11), *(bin->p_addr + 10),
-+ *(bin->p_addr + 9), *(bin->p_addr + 8));
-+ bin->header_info[bin->all_bin_parse_num].bin_data_ver =
-+ GET_32_DATA(*(bin->p_addr + 15), *(bin->p_addr + 14),
-+ *(bin->p_addr + 13), *(bin->p_addr + 12));
-+ bin->header_info[bin->all_bin_parse_num].bin_data_len =
-+ GET_32_DATA(*(bin->p_addr + 19), *(bin->p_addr + 18),
-+ *(bin->p_addr + 17), *(bin->p_addr + 16));
-+ bin->header_info[bin->all_bin_parse_num].ui_ver =
-+ GET_32_DATA(*(bin->p_addr + 23), *(bin->p_addr + 22),
-+ *(bin->p_addr + 21), *(bin->p_addr + 20));
-+ bin->header_info[bin->all_bin_parse_num].reg_byte_len =
-+ GET_32_DATA(*(bin->p_addr + 35), *(bin->p_addr + 34),
-+ *(bin->p_addr + 33), *(bin->p_addr + 32));
-+ bin->header_info[bin->all_bin_parse_num].data_byte_len =
-+ GET_32_DATA(*(bin->p_addr + 39), *(bin->p_addr + 38),
-+ *(bin->p_addr + 37), *(bin->p_addr + 36));
-+ bin->header_info[bin->all_bin_parse_num].device_addr =
-+ GET_32_DATA(*(bin->p_addr + 43), *(bin->p_addr + 42),
-+ *(bin->p_addr + 41), *(bin->p_addr + 40));
-+ for (i = 0; i < 8; i++) {
-+ bin->header_info[bin->all_bin_parse_num].chip_type[i] =
-+ *(bin->p_addr + 24 + i);
-+ }
-+ bin->header_info[bin->all_bin_parse_num].reg_num = 0x00000000;
-+ bin->header_info[bin->all_bin_parse_num].reg_data_byte_len = 0x00000000;
-+ bin->header_info[bin->all_bin_parse_num].download_addr = 0x00000000;
-+ bin->header_info[bin->all_bin_parse_num].app_version = 0x00000000;
-+ bin->header_info[bin->all_bin_parse_num].valid_data_len = 0x00000000;
-+ bin->all_bin_parse_num += 1;
-+}
-+
-+static int aw_parse_each_of_multi_bins_1_0_0(unsigned int bin_num, int bin_serial_num,
-+ struct aw_bin *bin)
-+{
-+ int ret = 0;
-+ unsigned int bin_start_addr = 0;
-+ unsigned int valid_data_len = 0;
-+ DBG("aw_bin_parse enter multi bin branch -- %s\n", __func__);
-+ if (!bin_serial_num) {
-+ bin_start_addr = GET_32_DATA(*(bin->p_addr + 67),
-+ *(bin->p_addr + 66),
-+ *(bin->p_addr + 65),
-+ *(bin->p_addr + 64));
-+ bin->p_addr += (60 + bin_start_addr);
-+ bin->header_info[bin->all_bin_parse_num].valid_data_addr =
-+ bin->header_info[bin->all_bin_parse_num -
-+ 1].valid_data_addr + 4 + 8 * bin_num + 60;
-+ } else {
-+ valid_data_len =
-+ bin->header_info[bin->all_bin_parse_num - 1].bin_data_len;
-+ bin->p_addr += (60 + valid_data_len);
-+ bin->header_info[bin->all_bin_parse_num].valid_data_addr =
-+ bin->header_info[bin->all_bin_parse_num -
-+ 1].valid_data_addr +
-+ bin->header_info[bin->all_bin_parse_num - 1].bin_data_len +
-+ 60;
-+ }
-+
-+ ret = aw_parse_bin_header_1_0_0(bin);
-+ return ret;
-+}
-+
-+/* Get the number of bins in multi bins, and set a for loop, loop processing each bin data */
-+static int aw_get_multi_bin_header_1_0_0(struct aw_bin *bin)
-+{
-+ int i = 0;
-+ int ret = 0;
-+ unsigned int bin_num = 0;
-+ DBG("aw_bin_parse enter multi bin branch -- %s\n", __func__);
-+ bin_num = GET_32_DATA(*(bin->p_addr + 63),
-+ *(bin->p_addr + 62),
-+ *(bin->p_addr + 61), *(bin->p_addr + 60));
-+ if (bin->multi_bin_parse_num == 1) {
-+ bin->header_info[bin->all_bin_parse_num].valid_data_addr = 60;
-+ }
-+ aw_get_single_bin_header_1_0_0(bin);
-+
-+ for (i = 0; i < bin_num; i++) {
-+ DBG("aw_bin_parse enter multi bin for is %d\n", i);
-+ ret = aw_parse_each_of_multi_bins_1_0_0(bin_num, i, bin);
-+ if (ret < 0) {
-+ return ret;
-+ }
-+ }
-+ return 0;
-+}
-+
-+/********************************************************
-+*
-+* If the bin framework header version is 1.0.0,
-+ determine the data type of bin, and then perform different processing
-+ according to the data type
-+ If it is a single bin data type, write the data directly into the structure array
-+ If it is a multi-bin data type, first obtain the number of bins,
-+ and then recursively call the bin frame header processing function
-+ according to the bin number to process the frame header information of each bin separately
-+*
-+********************************************************/
-+static int aw_parse_bin_header_1_0_0(struct aw_bin *bin)
-+{
-+ int ret = 0;
-+ unsigned int bin_data_type;
-+ DBG("enter %s\n", __func__);
-+ bin_data_type = GET_32_DATA(*(bin->p_addr + 11),
-+ *(bin->p_addr + 10),
-+ *(bin->p_addr + 9), *(bin->p_addr + 8));
-+ DBG("aw_bin_parse bin_data_type 0x%x\n", bin_data_type);
-+ switch (bin_data_type) {
-+ case DATA_TYPE_REGISTER:
-+ case DATA_TYPE_DSP_REG:
-+ case DATA_TYPE_SOC_APP:
-+ /* Divided into two processing methods,
-+ one is single bin processing,
-+ and the other is single bin processing in multi bin */
-+ DBG("aw_bin_parse enter single bin branch\n");
-+ bin->single_bin_parse_num += 1;
-+ DBG("%s bin->single_bin_parse_num is %d\n", __func__,
-+ bin->single_bin_parse_num);
-+ if (!bin->multi_bin_parse_num) {
-+ bin->header_info[bin->
-+ all_bin_parse_num].valid_data_addr =
-+ 60;
-+ }
-+ aw_get_single_bin_header_1_0_0(bin);
-+ break;
-+ case DATA_TYPE_MULTI_BINS:
-+ /* Get the number of times to enter multi bins */
-+ DBG("aw_bin_parse enter multi bin branch\n");
-+ bin->multi_bin_parse_num += 1;
-+ DBG("%s bin->multi_bin_parse_num is %d\n", __func__,
-+ bin->multi_bin_parse_num);
-+ ret = aw_get_multi_bin_header_1_0_0(bin);
-+ if (ret < 0) {
-+ return ret;
-+ }
-+ break;
-+ default:
-+ DBG_ERR("aw_bin_parse Unrecognized this bin data type\n");
-+ return -2;
-+ }
-+ return 0;
-+}
-+
-+/* get the bin's header version */
-+static int aw_check_bin_header_version(struct aw_bin *bin)
-+{
-+ int ret = 0;
-+ unsigned int header_version = 0;
-+
-+ header_version = GET_32_DATA(*(bin->p_addr + 7),
-+ *(bin->p_addr + 6),
-+ *(bin->p_addr + 5), *(bin->p_addr + 4));
-+
-+ DBG("aw_bin_parse header_version 0x%x\n", header_version);
-+
-+ /* Write data to the corresponding structure array
-+ according to different formats of the bin frame header version */
-+ switch (header_version) {
-+ case HEADER_VERSION_1_0_0:
-+ ret = aw_parse_bin_header_1_0_0(bin);
-+ return ret;
-+ default:
-+ DBG_ERR("aw_bin_parse Unrecognized this bin header version \n");
-+ return -1;
-+ }
-+}
-+
-+int aw87xxx_parsing_bin_file(struct aw_bin *bin)
-+{
-+ int i = 0;
-+ int ret = 0;
-+
-+ DBG("aw_bin_parse code version:%s\n", AWINIC_CODE_VERSION);
-+ if (!bin) {
-+ DBG_ERR("aw_bin_parse bin is NULL\n");
-+ return -8;
-+ }
-+ bin->p_addr = bin->info.data;
-+ bin->all_bin_parse_num = 0;
-+ bin->multi_bin_parse_num = 0;
-+ bin->single_bin_parse_num = 0;
-+
-+ /* filling bins header info */
-+ ret = aw_check_bin_header_version(bin);
-+ if (ret < 0) {
-+ DBG_ERR("aw_bin_parse check bin header version error\n");
-+ return ret;
-+ }
-+ bin->p_addr = NULL;
-+
-+ /* check bin header info */
-+ for (i = 0; i < bin->all_bin_parse_num; i++) {
-+ /* check sum */
-+ ret = aw_check_sum(bin, i);
-+ if (ret < 0) {
-+ DBG_ERR("aw_bin_parse check sum data error\n");
-+ return ret;
-+ }
-+ /* check bin data version */
-+ ret = aw_check_data_version(bin, i);
-+ if (ret < 0) {
-+ DBG_ERR("aw_bin_parse check data version error\n");
-+ return ret;
-+ }
-+ /* check valid data */
-+ if (bin->header_info[i].bin_data_ver == DATA_VERSION_V1) {
-+ /* check register num */
-+ if (bin->header_info[i].bin_data_type ==
-+ DATA_TYPE_REGISTER) {
-+ ret = aw_check_register_num_v1(bin, i);
-+ if (ret < 0) {
-+ DBG_ERR
-+ ("aw_bin_parse check register num error\n");
-+ return ret;
-+ }
-+ /* check dsp reg num */
-+ } else if (bin->header_info[i].bin_data_type ==
-+ DATA_TYPE_DSP_REG) {
-+ ret = aw_check_dsp_reg_num_v1(bin, i);
-+ if (ret < 0) {
-+ DBG_ERR
-+ ("aw_bin_parse check dsp reg num error\n");
-+ return ret;
-+ }
-+ /* check soc app num */
-+ } else if (bin->header_info[i].bin_data_type ==
-+ DATA_TYPE_SOC_APP) {
-+ ret = aw_check_soc_app_num_v1(bin, i);
-+ if (ret < 0) {
-+ DBG_ERR
-+ ("aw_bin_parse check soc app num error\n");
-+ return ret;
-+ }
-+ } else {
-+ bin->header_info[i].valid_data_len =
-+ bin->header_info[i].bin_data_len;
-+ }
-+ }
-+ }
-+ DBG("aw_bin_parse parsing success\n");
-+
-+ return 0;
-+}
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.h b/sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.h
-new file mode 100644
-index 000000000..c6e6eaa8a
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_bin_parse.h
-@@ -0,0 +1,73 @@
-+#ifndef __AW87XXX_BIN_PARSE_H__
-+#define __AW87XXX_BIN_PARSE_H__
-+
-+#define NULL ((void *)0)
-+#define GET_32_DATA(w, x, y, z) ((unsigned int)(((w) << 24) | ((x) << 16) | ((y) << 8) | (z)))
-+#define BIN_NUM_MAX 100
-+#define HEADER_LEN 60
-+/*********************************************************
-+ *
-+ * header information
-+ *
-+ ********************************************************/
-+enum bin_header_version_enum {
-+ HEADER_VERSION_1_0_0 = 0x01000000,
-+};
-+
-+enum data_type_enum {
-+ DATA_TYPE_REGISTER = 0x00000000,
-+ DATA_TYPE_DSP_REG = 0x00000010,
-+ DATA_TYPE_DSP_CFG = 0x00000011,
-+ DATA_TYPE_SOC_REG = 0x00000020,
-+ DATA_TYPE_SOC_APP = 0x00000021,
-+ DATA_TYPE_MULTI_BINS = 0x00002000,
-+ DATA_TYPE_MONITOR_ANALOG = 0x00020000,
-+};
-+
-+enum data_version_enum {
-+ DATA_VERSION_V1 = 0X00000001, /*default little edian */
-+ DATA_VERSION_MAX,
-+};
-+
-+struct bin_header_info {
-+ unsigned int header_len; /* Frame header length */
-+ unsigned int check_sum; /* Frame header information-Checksum */
-+ unsigned int header_ver; /* Frame header information-Frame header version */
-+ unsigned int bin_data_type; /* Frame header information-Data type */
-+ unsigned int bin_data_ver; /* Frame header information-Data version */
-+ unsigned int bin_data_len; /* Frame header information-Data length */
-+ unsigned int ui_ver; /* Frame header information-ui version */
-+ unsigned char chip_type[8]; /* Frame header information-chip type */
-+ unsigned int reg_byte_len; /* Frame header information-reg byte len */
-+ unsigned int data_byte_len; /* Frame header information-data byte len */
-+ unsigned int device_addr; /* Frame header information-device addr */
-+ unsigned int valid_data_len; /* Length of valid data obtained after parsing */
-+ unsigned int valid_data_addr; /* The offset address of the valid data obtained after parsing relative to info */
-+
-+ unsigned int reg_num; /* The number of registers obtained after parsing */
-+ unsigned int reg_data_byte_len; /* The byte length of the register obtained after parsing */
-+ unsigned int download_addr; /* The starting address or download address obtained after parsing */
-+ unsigned int app_version; /* The software version number obtained after parsing */
-+};
-+
-+/************************************************************
-+*
-+* function define
-+*
-+************************************************************/
-+struct bin_container {
-+ unsigned int len; /* The size of the bin file obtained from the firmware */
-+ unsigned char data[]; /* Store the bin file obtained from the firmware */
-+};
-+
-+struct aw_bin {
-+ unsigned char *p_addr; /* Offset pointer (backward offset pointer to obtain frame header information and important information) */
-+ unsigned int all_bin_parse_num; /* The number of all bin files */
-+ unsigned int multi_bin_parse_num; /* The number of single bin files */
-+ unsigned int single_bin_parse_num; /* The number of multiple bin files */
-+ struct bin_header_info header_info[BIN_NUM_MAX]; /* Frame header information and other important data obtained after parsing */
-+ struct bin_container info; /* Obtained bin file data that needs to be parsed */
-+};
-+
-+extern int aw87xxx_parsing_bin_file(struct aw_bin *bin);
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_device.c b/sound/soc/codecs/aw87xxx/aw87xxx_device.c
-new file mode 100644
-index 000000000..087770857
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_device.c
-@@ -0,0 +1,977 @@
-+/*
-+ * aw87xxx_device.c aw87xxx pa module
-+ *
-+ * Copyright (c) 2021 AWINIC Technology CO., LTD
-+ *
-+ * Author: Barry <zhaozhongbo@awinic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#include <linux/i2c.h>
-+#include <linux/gpio.h>
-+#include <linux/of_gpio.h>
-+#include <linux/interrupt.h>
-+#include <linux/delay.h>
-+#include <linux/kernel.h>
-+#include <linux/device.h>
-+#include <linux/irq.h>
-+#include <linux/io.h>
-+#include <linux/init.h>
-+#include <linux/timer.h>
-+#include "aw87xxx.h"
-+#include "aw87xxx_device.h"
-+#include "aw87xxx_log.h"
-+#include "aw87xxx_pid_9b_reg.h"
-+#include "aw87xxx_pid_18_reg.h"
-+#include "aw87xxx_pid_39_reg.h"
-+#include "aw87xxx_pid_59_3x9_reg.h"
-+#include "aw87xxx_pid_59_5x9_reg.h"
-+#include "aw87xxx_pid_5a_reg.h"
-+#include "aw87xxx_pid_76_reg.h"
-+#include "aw87xxx_pid_60_reg.h"
-+
-+/*************************************************************************
-+ * aw87xxx variable
-+ ************************************************************************/
-+const char *g_aw_pid_9b_product[] = {
-+ "aw87319",
-+};
-+const char *g_aw_pid_18_product[] = {
-+ "aw87418",
-+};
-+
-+const char *g_aw_pid_39_product[] = {
-+ "aw87329",
-+ "aw87339",
-+ "aw87349",
-+};
-+
-+const char *g_aw_pid_59_3x9_product[] = {
-+ "aw87359",
-+ "aw87389",
-+};
-+
-+const char *g_aw_pid_59_5x9_product[] = {
-+ "aw87509",
-+ "aw87519",
-+ "aw87529",
-+ "aw87539",
-+};
-+
-+const char *g_aw_pid_5a_product[] = {
-+ "aw87549",
-+ "aw87559",
-+ "aw87569",
-+ "aw87579",
-+ "aw81509",
-+};
-+
-+const char *g_aw_pid_76_product[] = {
-+ "aw87390",
-+ "aw87320",
-+ "aw87401",
-+ "aw87360",
-+};
-+
-+const char *g_aw_pid_60_product[] = {
-+ "aw87560",
-+ "aw87561",
-+ "aw87562",
-+ "aw87501",
-+ "aw87550",
-+};
-+
-+static int aw87xxx_dev_get_chipid(struct aw_device *aw_dev);
-+
-+/***************************************************************************
-+ *
-+ * reading and writing of I2C bus
-+ *
-+ ***************************************************************************/
-+int aw87xxx_dev_i2c_write_byte(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t reg_data)
-+{
-+ int ret = -1;
-+ unsigned char cnt = 0;
-+
-+ while (cnt < AW_I2C_RETRIES) {
-+ ret = i2c_smbus_write_byte_data(aw_dev->i2c, reg_addr, reg_data);
-+ if (ret < 0)
-+ AW_DEV_LOGE(aw_dev->dev, "i2c_write cnt=%d error=%d",
-+ cnt, ret);
-+ else
-+ break;
-+
-+ cnt++;
-+ msleep(AW_I2C_RETRY_DELAY);
-+ }
-+
-+ return ret;
-+}
-+
-+int aw87xxx_dev_i2c_read_byte(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t *reg_data)
-+{
-+ int ret = -1;
-+ unsigned char cnt = 0;
-+
-+ while (cnt < AW_I2C_RETRIES) {
-+ ret = i2c_smbus_read_byte_data(aw_dev->i2c, reg_addr);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "i2c_read cnt=%d error=%d",
-+ cnt, ret);
-+ } else {
-+ *reg_data = ret;
-+ break;
-+ }
-+ cnt++;
-+ msleep(AW_I2C_RETRY_DELAY);
-+ }
-+
-+ return ret;
-+}
-+
-+int aw87xxx_dev_i2c_read_msg(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len)
-+{
-+ int ret = -1;
-+
-+ struct i2c_msg msg[] = {
-+ [0] = {
-+ .addr = aw_dev->i2c_addr,
-+ .flags = 0,
-+ .len = sizeof(uint8_t),
-+ .buf = &reg_addr,
-+ },
-+ [1] = {
-+ .addr = aw_dev->i2c_addr,
-+ .flags = I2C_M_RD,
-+ .len = data_len,
-+ .buf = data_buf,
-+ },
-+ };
-+
-+ ret = i2c_transfer(aw_dev->i2c->adapter, msg, ARRAY_SIZE(msg));
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "transfer failed");
-+ return ret;
-+ } else if (ret != AW_I2C_READ_MSG_NUM) {
-+ AW_DEV_LOGE(aw_dev->dev, "transfer failed(size error)");
-+ return -ENXIO;
-+ }
-+
-+ return 0;
-+}
-+
-+int aw87xxx_dev_i2c_write_bits(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t mask, uint8_t reg_data)
-+{
-+ int ret = -1;
-+ unsigned char reg_val = 0;
-+
-+ ret = aw87xxx_dev_i2c_read_byte(aw_dev, reg_addr, &reg_val);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "i2c read error, ret=%d", ret);
-+ return ret;
-+ }
-+ reg_val &= mask;
-+ reg_val |= (reg_data & (~mask));
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, reg_addr, reg_val);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "i2c write error, ret=%d", ret);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+/************************************************************************
-+ *
-+ * aw87xxx device update profile data to registers
-+ *
-+ ************************************************************************/
-+static int aw87xxx_dev_reg_update(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data)
-+{
-+ int i = 0;
-+ int ret = -1;
-+
-+ if (profile_data == NULL)
-+ return -EINVAL;
-+
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGE(aw_dev->dev, "dev is pwr_off,can not update reg");
-+ return -EINVAL;
-+ }
-+
-+ for (i = 0; i < profile_data->len; i = i + 2) {
-+ AW_DEV_LOGI(aw_dev->dev, "reg=0x%02x, val = 0x%02x",
-+ profile_data->data[i], profile_data->data[i + 1]);
-+
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, profile_data->data[i],
-+ profile_data->data[i + 1]);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static void aw87xxx_dev_reg_mute_bits_set(struct aw_device *aw_dev,
-+ uint8_t *reg_val, bool enable)
-+{
-+ if (enable) {
-+ *reg_val &= aw_dev->mute_desc.mask;
-+ *reg_val |= aw_dev->mute_desc.enable;
-+ } else {
-+ *reg_val &= aw_dev->mute_desc.mask;
-+ *reg_val |= aw_dev->mute_desc.disable;
-+ }
-+}
-+
-+static int aw87xxx_dev_reg_update_mute(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data)
-+{
-+ int i = 0;
-+ int ret = -1;
-+ uint8_t reg_val = 0;
-+
-+ if (profile_data == NULL)
-+ return -EINVAL;
-+
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGE(aw_dev->dev, "hwen is off,can not update reg");
-+ return -EINVAL;
-+ }
-+
-+ if (aw_dev->mute_desc.mask == AW_DEV_REG_INVALID_MASK) {
-+ AW_DEV_LOGE(aw_dev->dev, "mute ctrl mask invalid");
-+ return -EINVAL;
-+ }
-+
-+ for (i = 0; i < profile_data->len; i = i + 2) {
-+ AW_DEV_LOGI(aw_dev->dev, "reg=0x%02x, val = 0x%02x",
-+ profile_data->data[i], profile_data->data[i + 1]);
-+
-+ reg_val = profile_data->data[i + 1];
-+ if (profile_data->data[i] == aw_dev->mute_desc.addr) {
-+ aw87xxx_dev_reg_mute_bits_set(aw_dev, &reg_val, true);
-+ AW_DEV_LOGD(aw_dev->dev, "change mute_mask, val = 0x%02x",
-+ reg_val);
-+ }
-+
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, profile_data->data[i], reg_val);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+/************************************************************************
-+ *
-+ * aw87xxx device hadware and soft contols
-+ *
-+ ************************************************************************/
-+static bool aw87xxx_dev_gpio_is_valid(struct aw_device *aw_dev)
-+{
-+ if (gpio_is_valid(aw_dev->rst_gpio))
-+ return true;
-+ else
-+ return false;
-+}
-+
-+void aw87xxx_dev_hw_pwr_ctrl(struct aw_device *aw_dev, bool enable)
-+{
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_INVALID) {
-+ AW_DEV_LOGD(aw_dev->dev, "product not have reset-pin,hardware pwd control invalid");
-+ return;
-+ }
-+ if (enable) {
-+ if (aw87xxx_dev_gpio_is_valid(aw_dev)) {
-+ gpio_set_value_cansleep(aw_dev->rst_gpio, AW_GPIO_LOW_LEVEL);
-+ mdelay(2);
-+ gpio_set_value_cansleep(aw_dev->rst_gpio, AW_GPIO_HIGHT_LEVEL);
-+ mdelay(2);
-+ aw_dev->hwen_status = AW_DEV_HWEN_ON;
-+ AW_DEV_LOGI(aw_dev->dev, "hw power on");
-+ } else {
-+ AW_DEV_LOGI(aw_dev->dev, "hw already power on");
-+ }
-+ } else {
-+ if (aw87xxx_dev_gpio_is_valid(aw_dev)) {
-+ gpio_set_value_cansleep(aw_dev->rst_gpio, AW_GPIO_LOW_LEVEL);
-+ mdelay(2);
-+ aw_dev->hwen_status = AW_DEV_HWEN_OFF;
-+ AW_DEV_LOGI(aw_dev->dev, "hw power off");
-+ } else {
-+ AW_DEV_LOGI(aw_dev->dev, "hw already power off");
-+ }
-+ }
-+}
-+
-+static int aw87xxx_dev_mute_ctrl(struct aw_device *aw_dev, bool enable)
-+{
-+ int ret = 0;
-+
-+ if (enable) {
-+ ret = aw87xxx_dev_i2c_write_bits(aw_dev, aw_dev->mute_desc.addr,
-+ aw_dev->mute_desc.mask, aw_dev->mute_desc.enable);
-+ if (ret < 0)
-+ return ret;
-+ AW_DEV_LOGI(aw_dev->dev, "set mute down");
-+ } else {
-+ ret = aw87xxx_dev_i2c_write_bits(aw_dev, aw_dev->mute_desc.addr,
-+ aw_dev->mute_desc.mask, aw_dev->mute_desc.disable);
-+ if (ret < 0)
-+ return ret;
-+ AW_DEV_LOGI(aw_dev->dev, "close mute down");
-+ }
-+
-+ return 0;
-+}
-+
-+void aw87xxx_dev_soft_reset(struct aw_device *aw_dev)
-+{
-+ int i = 0;
-+ int ret = -1;
-+ struct aw_soft_rst_desc *soft_rst = &aw_dev->soft_rst_desc;
-+
-+ AW_DEV_LOGD(aw_dev->dev, "enter");
-+
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGE(aw_dev->dev, "hw is off,can not softrst");
-+ return;
-+ }
-+
-+ if (aw_dev->soft_rst_enable == AW_DEV_SOFT_RST_DISENABLE) {
-+ AW_DEV_LOGD(aw_dev->dev, "softrst is disenable");
-+ return;
-+ }
-+
-+ if (soft_rst->access == NULL || soft_rst->len == 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "softrst_info not init");
-+ return;
-+ }
-+
-+ if (soft_rst->len % 2) {
-+ AW_DEV_LOGE(aw_dev->dev, "softrst data_len[%d] is odd number,data not available",
-+ aw_dev->soft_rst_desc.len);
-+ return;
-+ }
-+
-+ for (i = 0; i < soft_rst->len; i += 2) {
-+ AW_DEV_LOGD(aw_dev->dev, "softrst_reg=0x%02x, val = 0x%02x",
-+ soft_rst->access[i], soft_rst->access[i + 1]);
-+
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, soft_rst->access[i],
-+ soft_rst->access[i + 1]);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "write failed,ret = %d,cnt=%d",
-+ ret, i);
-+ return;
-+ }
-+ }
-+ AW_DEV_LOGD(aw_dev->dev, "down");
-+}
-+
-+
-+int aw87xxx_dev_default_pwr_off(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data)
-+{
-+ int ret = 0;
-+
-+ AW_DEV_LOGD(aw_dev->dev, "enter");
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGE(aw_dev->dev, "hwen is already off");
-+ return 0;
-+ }
-+
-+ if (aw_dev->soft_off_enable && profile_data) {
-+ ret = aw87xxx_dev_reg_update(aw_dev, profile_data);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "update profile[Off] fw config failed");
-+ goto reg_off_update_failed;
-+ }
-+ }
-+
-+ aw87xxx_dev_hw_pwr_ctrl(aw_dev, false);
-+ AW_DEV_LOGD(aw_dev->dev, "down");
-+ return 0;
-+
-+reg_off_update_failed:
-+ aw87xxx_dev_hw_pwr_ctrl(aw_dev, false);
-+ return ret;
-+}
-+
-+
-+/************************************************************************
-+ *
-+ * aw87xxx device power on process function
-+ *
-+ ************************************************************************/
-+
-+int aw87xxx_dev_default_pwr_on(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data)
-+{
-+ int ret = 0;
-+
-+ /*hw power on*/
-+ aw87xxx_dev_hw_pwr_ctrl(aw_dev, true);
-+
-+ ret = aw87xxx_dev_reg_update(aw_dev, profile_data);
-+ if (ret < 0)
-+ return ret;
-+
-+ return 0;
-+}
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx chip esd status check
-+ *
-+ ****************************************************************************/
-+int aw87xxx_dev_esd_reg_status_check(struct aw_device *aw_dev)
-+{
-+ int ret;
-+ unsigned char reg_val = 0;
-+ struct aw_esd_check_desc *esd_desc = &aw_dev->esd_desc;
-+
-+ AW_DEV_LOGD(aw_dev->dev, "enter");
-+
-+ if (!esd_desc->first_update_reg_addr) {
-+ AW_DEV_LOGE(aw_dev->dev, "esd check info if not init,please check");
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_dev_i2c_read_byte(aw_dev, esd_desc->first_update_reg_addr,
-+ &reg_val);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "read reg 0x%02x failed",
-+ esd_desc->first_update_reg_addr);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGD(aw_dev->dev, "0x%02x:default val=0x%02x real val=0x%02x",
-+ esd_desc->first_update_reg_addr,
-+ esd_desc->first_update_reg_val, reg_val);
-+
-+ if (reg_val == esd_desc->first_update_reg_val) {
-+ AW_DEV_LOGE(aw_dev->dev, "reg status check failed");
-+ return -EINVAL;
-+ }
-+ return 0;
-+}
-+
-+int aw87xxx_dev_check_reg_is_rec_mode(struct aw_device *aw_dev)
-+{
-+ int ret;
-+ unsigned char reg_val = 0;
-+ struct aw_rec_mode_desc *rec_desc = &aw_dev->rec_desc;
-+
-+ if (!rec_desc->addr) {
-+ AW_DEV_LOGE(aw_dev->dev, "rec check info if not init,please check");
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_dev_i2c_read_byte(aw_dev, rec_desc->addr, &reg_val);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "read reg 0x%02x failed",
-+ rec_desc->addr);
-+ return ret;
-+ }
-+
-+ if (rec_desc->enable) {
-+ if (reg_val & ~(rec_desc->mask)) {
-+ AW_DEV_LOGI(aw_dev->dev, "reg status is receiver mode");
-+ aw_dev->is_rec_mode = AW_IS_REC_MODE;
-+ } else {
-+ aw_dev->is_rec_mode = AW_NOT_REC_MODE;
-+ }
-+ } else {
-+ if (!(reg_val & ~(rec_desc->mask))) {
-+ AW_DEV_LOGI(aw_dev->dev, "reg status is receiver mode");
-+ aw_dev->is_rec_mode = AW_IS_REC_MODE;
-+ } else {
-+ aw_dev->is_rec_mode = AW_NOT_REC_MODE;
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx product attributes init info
-+ *
-+ ****************************************************************************/
-+
-+/********************** aw87xxx_pid_9A attributes ***************************/
-+
-+static int aw_dev_pid_9b_reg_update(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data)
-+{
-+ int i = 0;
-+ int ret = -1;
-+ uint8_t reg_val = 0;
-+
-+ if (profile_data == NULL)
-+ return -EINVAL;
-+
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGE(aw_dev->dev, "dev is pwr_off,can not update reg");
-+ return -EINVAL;
-+ }
-+
-+ if (profile_data->len != AW_PID_9B_BIN_REG_CFG_COUNT) {
-+ AW_DEV_LOGE(aw_dev->dev, "reg_config count of bin is error,can not update reg");
-+ return -EINVAL;
-+ }
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, AW87XXX_PID_9B_ENCRYPTION_REG,
-+ AW87XXX_PID_9B_ENCRYPTION_BOOST_OUTPUT_SET);
-+ if (ret < 0)
-+ return ret;
-+
-+ for (i = 1; i < AW_PID_9B_BIN_REG_CFG_COUNT; i++) {
-+ AW_DEV_LOGI(aw_dev->dev, "reg=0x%02x, val = 0x%02x",
-+ i, profile_data->data[i]);
-+ reg_val = profile_data->data[i];
-+ if (i == AW87XXX_PID_9B_SYSCTRL_REG) {
-+ aw87xxx_dev_reg_mute_bits_set(aw_dev, &reg_val, true);
-+ AW_DEV_LOGD(aw_dev->dev, "change mute_mask, val = 0x%02x",
-+ reg_val);
-+ }
-+
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, i, reg_val);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_dev_pid_9b_pwr_on(struct aw_device *aw_dev, struct aw_data_container *data)
-+{
-+ int ret = 0;
-+
-+ /*hw power on*/
-+ aw87xxx_dev_hw_pwr_ctrl(aw_dev, true);
-+
-+ /* open the mute */
-+ ret = aw87xxx_dev_mute_ctrl(aw_dev, true);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* Update scene parameters in mute mode */
-+ ret = aw_dev_pid_9b_reg_update(aw_dev, data);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* close the mute */
-+ ret = aw87xxx_dev_mute_ctrl(aw_dev, false);
-+ if (ret < 0)
-+ return ret;
-+
-+ return 0;
-+}
-+
-+static void aw_dev_pid_9b_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_9B_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_9b_reg_access;
-+
-+ aw_dev->mute_desc.addr = AW87XXX_PID_9B_SYSCTRL_REG;
-+ aw_dev->mute_desc.mask = AW87XXX_PID_9B_REG_EN_SW_MASK;
-+ aw_dev->mute_desc.enable = AW87XXX_PID_9B_REG_EN_SW_DISABLE_VALUE;
-+ aw_dev->mute_desc.disable = AW87XXX_PID_9B_REG_EN_SW_ENABLE_VALUE;
-+ aw_dev->ops.pwr_on_func = aw_dev_pid_9b_pwr_on;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_9b_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_9b_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* Whether to allow register operation to power off */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_DISENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_9b_product;
-+ aw_dev->product_cnt = AW87XXX_PID_9B_PRODUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_9B_SYSCTRL_REG;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_9B_SPK_MODE_ENABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_9B_SPK_MODE_DISABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_9B_SPK_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_9B_SYSCTRL_REG;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_9B_SYSCTRL_DEFAULT;
-+}
-+
-+static int aw_dev_pid_9a_init(struct aw_device *aw_dev)
-+{
-+ int ret = 0;
-+
-+ ret = aw87xxx_dev_i2c_write_byte(aw_dev, AW87XXX_PID_9B_ENCRYPTION_REG,
-+ AW87XXX_PID_9B_ENCRYPTION_BOOST_OUTPUT_SET);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "write 0x64=0x2C error");
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_dev_get_chipid(aw_dev);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "read chipid is failed,ret=%d", ret);
-+ return ret;
-+ }
-+
-+ if (aw_dev->chipid == AW_DEV_CHIPID_9B) {
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_9B class");
-+ aw_dev_pid_9b_init(aw_dev);
-+ } else {
-+ AW_DEV_LOGE(aw_dev->dev, "product is not pid_9B class,not support");
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+/********************** aw87xxx_pid_9b attributes end ***********************/
-+
-+/********************** aw87xxx_pid_18 attributes ***************************/
-+static int aw_dev_pid_18_pwr_on(struct aw_device *aw_dev, struct aw_data_container *data)
-+{
-+ int ret = 0;
-+
-+ /*hw power on*/
-+ aw87xxx_dev_hw_pwr_ctrl(aw_dev, true);
-+
-+ /* open the mute */
-+ ret = aw87xxx_dev_mute_ctrl(aw_dev, true);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* Update scene parameters in mute mode */
-+ ret = aw87xxx_dev_reg_update_mute(aw_dev, data);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* close the mute */
-+ ret = aw87xxx_dev_mute_ctrl(aw_dev, false);
-+ if (ret < 0)
-+ return ret;
-+
-+ return 0;
-+}
-+
-+static void aw_dev_chipid_18_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_18_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_18_reg_access;
-+
-+ aw_dev->mute_desc.addr = AW87XXX_PID_18_SYSCTRL_REG;
-+ aw_dev->mute_desc.mask = AW87XXX_PID_18_REG_EN_SW_MASK;
-+ aw_dev->mute_desc.enable = AW87XXX_PID_18_REG_EN_SW_DISABLE_VALUE;
-+ aw_dev->mute_desc.disable = AW87XXX_PID_18_REG_EN_SW_ENABLE_VALUE;
-+ aw_dev->ops.pwr_on_func = aw_dev_pid_18_pwr_on;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_18_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_18_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* Whether to allow register operation to power off */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_18_product;
-+ aw_dev->product_cnt = AW87XXX_PID_18_PRODUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_18_SYSCTRL_REG;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_18_REG_REC_MODE_DISABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_18_REG_REC_MODE_ENABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_18_REG_REC_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_18_CLASSD_REG;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_18_CLASSD_DEFAULT;
-+}
-+/********************** aw87xxx_pid_18 attributes end ***********************/
-+
-+/********************** aw87xxx_pid_39 attributes ***************************/
-+static void aw_dev_chipid_39_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_39_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_39_reg_access;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_39_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_39_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* Whether to allow register operation to power off */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_39_product;
-+ aw_dev->product_cnt = AW87XXX_PID_39_PRODUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_39_REG_MODECTRL;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_39_REC_MODE_DISABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_39_REC_MODE_ENABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_39_REC_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_39_REG_MODECTRL;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_39_MODECTRL_DEFAULT;
-+}
-+/********************* aw87xxx_pid_39 attributes end *************************/
-+
-+
-+/********************* aw87xxx_pid_59_5x9 attributes *************************/
-+static void aw_dev_chipid_59_5x9_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_59_5X9_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_59_5x9_reg_access;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_59_5x9_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_59_5x9_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* Whether to allow register operation to power off */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_59_5x9_product;
-+ aw_dev->product_cnt = AW87XXX_PID_59_5X9_PRODUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_59_5X9_REG_SYSCTRL;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_59_5X9_REC_MODE_DISABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_59_5X9_REC_MODE_ENABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_59_5X9_REC_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_59_5X9_REG_ENCR;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_59_5X9_ENCRY_DEFAULT;
-+}
-+/******************* aw87xxx_pid_59_5x9 attributes end ***********************/
-+
-+/********************* aw87xxx_pid_59_3x9 attributes *************************/
-+static void aw_dev_chipid_59_3x9_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_59_3X9_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_59_3x9_reg_access;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_59_3x9_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_59_3x9_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* Whether to allow register operation to power off */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_59_3x9_product;
-+ aw_dev->product_cnt = AW87XXX_PID_59_3X9_PRODUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_59_3X9_REG_MDCRTL;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_59_3X9_SPK_MODE_ENABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_59_3X9_SPK_MODE_DISABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_59_3X9_SPK_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_59_3X9_REG_ENCR;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_59_3X9_ENCR_DEFAULT;
-+}
-+/******************* aw87xxx_pid_59_3x9 attributes end ***********************/
-+
-+/********************** aw87xxx_pid_5a attributes ****************************/
-+static void aw_dev_chipid_5a_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_5A_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_5a_reg_access;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_5a_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_5a_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* Whether to allow register operation to power off */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_5a_product;
-+ aw_dev->product_cnt = AW87XXX_PID_5A_PRODUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_5A_REG_SYSCTRL_REG;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_5A_REG_RCV_MODE_DISABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_5A_REG_RCV_MODE_ENABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_5A_REG_RCV_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_5A_REG_DFT3R_REG;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_5A_DFT3R_DEFAULT;
-+}
-+/********************** aw87xxx_pid_5a attributes end ************************/
-+
-+/********************** aw87xxx_pid_76 attributes ****************************/
-+static void aw_dev_chipid_76_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_76_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_76_reg_access;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_76_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_76_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* software power off control info */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_76_product;
-+ aw_dev->product_cnt = AW87XXX_PID_76_PROFUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_76_MDCTRL_REG;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_76_EN_SPK_ENABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_76_EN_SPK_DISABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_76_EN_SPK_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_76_DFT_ADP1_REG;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_76_DFT_ADP1_CHECK;
-+}
-+/********************** aw87xxx_pid_76 attributes end ************************/
-+
-+/********************** aw87xxx_pid_60 attributes ****************************/
-+static void aw_dev_chipid_60_init(struct aw_device *aw_dev)
-+{
-+ /* Product register permission info */
-+ aw_dev->reg_max_addr = AW87XXX_PID_60_REG_MAX;
-+ aw_dev->reg_access = aw87xxx_pid_60_reg_access;
-+
-+ /* software reset control info */
-+ aw_dev->soft_rst_desc.len = sizeof(aw87xxx_pid_60_softrst_access);
-+ aw_dev->soft_rst_desc.access = aw87xxx_pid_60_softrst_access;
-+ aw_dev->soft_rst_enable = AW_DEV_SOFT_RST_ENABLE;
-+
-+ /* software power off control info */
-+ aw_dev->soft_off_enable = AW_DEV_SOFT_OFF_ENABLE;
-+
-+ aw_dev->product_tab = g_aw_pid_60_product;
-+ aw_dev->product_cnt = AW87XXX_PID_60_PROFUCT_MAX;
-+
-+ aw_dev->rec_desc.addr = AW87XXX_PID_60_SYSCTRL_REG;
-+ aw_dev->rec_desc.disable = AW87XXX_PID_60_RCV_MODE_DISABLE;
-+ aw_dev->rec_desc.enable = AW87XXX_PID_60_RCV_MODE_ENABLE;
-+ aw_dev->rec_desc.mask = AW87XXX_PID_60_RCV_MODE_MASK;
-+
-+ /* esd reg info */
-+ aw_dev->esd_desc.first_update_reg_addr = AW87XXX_PID_60_NG3_REG;
-+ aw_dev->esd_desc.first_update_reg_val = AW87XXX_PID_60_ESD_REG_VAL;
-+}
-+/********************** aw87xxx_pid_60 attributes end ************************/
-+
-+static int aw_dev_chip_init(struct aw_device *aw_dev)
-+{
-+ int ret = 0;
-+
-+ /*get info by chipid*/
-+ switch (aw_dev->chipid) {
-+ case AW_DEV_CHIPID_9A:
-+ ret = aw_dev_pid_9a_init(aw_dev);
-+ if (ret < 0)
-+ AW_DEV_LOGE(aw_dev->dev, "product is pid_9B init failed");
-+ break;
-+ case AW_DEV_CHIPID_9B:
-+ aw_dev_pid_9b_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_9B class");
-+ break;
-+ case AW_DEV_CHIPID_18:
-+ aw_dev_chipid_18_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_18 class");
-+ break;
-+ case AW_DEV_CHIPID_39:
-+ aw_dev_chipid_39_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_39 class");
-+ break;
-+ case AW_DEV_CHIPID_59:
-+ if (aw87xxx_dev_gpio_is_valid(aw_dev)) {
-+ aw_dev_chipid_59_5x9_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_59_5x9 class");
-+ } else {
-+ aw_dev_chipid_59_3x9_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_59_3x9 class");
-+ }
-+ break;
-+ case AW_DEV_CHIPID_5A:
-+ aw_dev_chipid_5a_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_5A class");
-+ break;
-+ case AW_DEV_CHIPID_76:
-+ aw_dev_chipid_76_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_76 class");
-+ break;
-+ case AW_DEV_CHIPID_60:
-+ aw_dev_chipid_60_init(aw_dev);
-+ AW_DEV_LOGI(aw_dev->dev, "product is pid_60 class");
-+ break;
-+ default:
-+ AW_DEV_LOGE(aw_dev->dev, "unsupported device revision [0x%x]",
-+ aw_dev->chipid);
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_dev_get_chipid(struct aw_device *aw_dev)
-+{
-+ int ret = -1;
-+ unsigned int cnt = 0;
-+ unsigned char reg_val = 0;
-+
-+ for (cnt = 0; cnt < AW_READ_CHIPID_RETRIES; cnt++) {
-+ ret = aw87xxx_dev_i2c_read_byte(aw_dev, AW_DEV_REG_CHIPID, &reg_val);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "[%d] read chip is failed, ret=%d",
-+ cnt, ret);
-+ continue;
-+ }
-+ break;
-+ }
-+
-+
-+ if (cnt == AW_READ_CHIPID_RETRIES) {
-+ AW_DEV_LOGE(aw_dev->dev, "read chip is failed,cnt=%d", cnt);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(aw_dev->dev, "read chipid[0x%x] succeed", reg_val);
-+ aw_dev->chipid = reg_val;
-+
-+ return 0;
-+}
-+
-+int aw87xxx_dev_init(struct aw_device *aw_dev)
-+{
-+ int ret = -1;
-+
-+ ret = aw87xxx_dev_get_chipid(aw_dev);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw_dev->dev, "read chipid is failed,ret=%d", ret);
-+ return ret;
-+ }
-+
-+ ret = aw_dev_chip_init(aw_dev);
-+
-+ return ret;
-+}
-+
-+
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_device.h b/sound/soc/codecs/aw87xxx/aw87xxx_device.h
-new file mode 100644
-index 000000000..b063218e3
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_device.h
-@@ -0,0 +1,149 @@
-+#ifndef __AW87XXX_DEVICE_H__
-+#define __AW87XXX_DEVICE_H__
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <sound/control.h>
-+#include <sound/soc.h>
-+#include "aw87xxx_acf_bin.h"
-+
-+#define AW87XXX_PID_9B_PRODUCT_MAX (1)
-+#define AW87XXX_PID_18_PRODUCT_MAX (1)
-+#define AW87XXX_PID_39_PRODUCT_MAX (3)
-+#define AW87XXX_PID_59_3X9_PRODUCT_MAX (2)
-+#define AW87XXX_PID_59_5X9_PRODUCT_MAX (4)
-+#define AW87XXX_PID_5A_PRODUCT_MAX (5)
-+#define AW87XXX_PID_76_PROFUCT_MAX (4)
-+#define AW87XXX_PID_60_PROFUCT_MAX (5)
-+#define AW_PRODUCT_NAME_LEN (8)
-+
-+#define AW_GPIO_HIGHT_LEVEL (1)
-+#define AW_GPIO_LOW_LEVEL (0)
-+
-+#define AW_I2C_RETRIES (5)
-+#define AW_I2C_RETRY_DELAY (2)
-+#define AW_I2C_READ_MSG_NUM (2)
-+
-+#define AW_READ_CHIPID_RETRIES (5)
-+#define AW_READ_CHIPID_RETRY_DELAY (2)
-+#define AW_DEV_REG_CHIPID (0x00)
-+
-+#define AW_DEV_REG_INVALID_MASK (0xff)
-+
-+#define AW_NO_RESET_GPIO (-1)
-+
-+#define AW_PID_9B_BIN_REG_CFG_COUNT (10)
-+
-+/********************************************
-+ *
-+ * aw87xxx devices attributes
-+ *
-+ *******************************************/
-+struct aw_device;
-+
-+struct aw_device_ops {
-+ int (*pwr_on_func)(struct aw_device *aw_dev, struct aw_data_container *data);
-+ int (*pwr_off_func)(struct aw_device *aw_dev, struct aw_data_container *data);
-+};
-+
-+enum aw_dev_chipid {
-+ AW_DEV_CHIPID_18 = 0x18,
-+ AW_DEV_CHIPID_39 = 0x39,
-+ AW_DEV_CHIPID_59 = 0x59,
-+ AW_DEV_CHIPID_69 = 0x69,
-+ AW_DEV_CHIPID_5A = 0x5A,
-+ AW_DEV_CHIPID_9A = 0x9A,
-+ AW_DEV_CHIPID_9B = 0x9B,
-+ AW_DEV_CHIPID_76 = 0x76,
-+ AW_DEV_CHIPID_60 = 0x60,
-+};
-+
-+enum aw_dev_hw_status {
-+ AW_DEV_HWEN_OFF = 0,
-+ AW_DEV_HWEN_ON,
-+ AW_DEV_HWEN_INVALID,
-+ AW_DEV_HWEN_STATUS_MAX,
-+};
-+
-+enum aw_dev_soft_off_enable {
-+ AW_DEV_SOFT_OFF_DISENABLE = 0,
-+ AW_DEV_SOFT_OFF_ENABLE = 1,
-+};
-+
-+enum aw_dev_soft_rst_enable {
-+ AW_DEV_SOFT_RST_DISENABLE = 0,
-+ AW_DEV_SOFT_RST_ENABLE = 1,
-+};
-+
-+enum aw_reg_receiver_mode {
-+ AW_NOT_REC_MODE = 0,
-+ AW_IS_REC_MODE = 1,
-+};
-+
-+struct aw_mute_desc {
-+ uint8_t addr;
-+ uint8_t enable;
-+ uint8_t disable;
-+ uint16_t mask;
-+};
-+
-+struct aw_soft_rst_desc {
-+ int len;
-+ unsigned char *access;
-+};
-+
-+struct aw_esd_check_desc {
-+ uint8_t first_update_reg_addr;
-+ uint8_t first_update_reg_val;
-+};
-+
-+struct aw_rec_mode_desc {
-+ uint8_t addr;
-+ uint8_t enable;
-+ uint8_t disable;
-+ uint8_t mask;
-+};
-+
-+struct aw_device {
-+ uint8_t i2c_addr;
-+ uint8_t chipid;
-+ uint8_t soft_rst_enable;
-+ uint8_t soft_off_enable;
-+ uint8_t is_rec_mode;
-+ int hwen_status;
-+ int i2c_bus;
-+ int rst_gpio;
-+ int reg_max_addr;
-+ int product_cnt;
-+ const char **product_tab;
-+ const unsigned char *reg_access;
-+
-+ struct device *dev;
-+ struct i2c_client *i2c;
-+ struct aw_mute_desc mute_desc;
-+ struct aw_soft_rst_desc soft_rst_desc;
-+ struct aw_esd_check_desc esd_desc;
-+ struct aw_rec_mode_desc rec_desc;
-+
-+ struct aw_device_ops ops;
-+};
-+
-+
-+int aw87xxx_dev_i2c_write_byte(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t reg_data);
-+int aw87xxx_dev_i2c_read_byte(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t *reg_data);
-+int aw87xxx_dev_i2c_read_msg(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len);
-+int aw87xxx_dev_i2c_write_bits(struct aw_device *aw_dev,
-+ uint8_t reg_addr, uint8_t mask, uint8_t reg_data);
-+void aw87xxx_dev_soft_reset(struct aw_device *aw_dev);
-+void aw87xxx_dev_hw_pwr_ctrl(struct aw_device *aw_dev, bool enable);
-+int aw87xxx_dev_default_pwr_on(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data);
-+int aw87xxx_dev_default_pwr_off(struct aw_device *aw_dev,
-+ struct aw_data_container *profile_data);
-+int aw87xxx_dev_esd_reg_status_check(struct aw_device *aw_dev);
-+int aw87xxx_dev_check_reg_is_rec_mode(struct aw_device *aw_dev);
-+int aw87xxx_dev_init(struct aw_device *aw_dev);
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_dsp.c b/sound/soc/codecs/aw87xxx/aw87xxx_dsp.c
-new file mode 100644
-index 000000000..bd9896cd1
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_dsp.c
-@@ -0,0 +1,355 @@
-+/*
-+ * aw87xxx_dsp.c
-+ *
-+ * Copyright (c) 2021 AWINIC Technology CO., LTD
-+ *
-+ * Author: Barry <zhaozhongbo@awinic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+
-+#include <linux/uaccess.h>
-+#include <linux/delay.h>
-+#include <linux/device.h>
-+#include <linux/kernel.h>
-+#include <linux/of.h>
-+#include <linux/slab.h>
-+#include <linux/hrtimer.h>
-+#include <linux/proc_fs.h>
-+#include <linux/init.h>
-+#include "aw87xxx_log.h"
-+#include "aw87xxx_dsp.h"
-+
-+static DEFINE_MUTEX(g_dsp_lock);
-+static unsigned int g_spin_value = 0;
-+
-+static int g_rx_topo_id = AW_RX_DEFAULT_TOPO_ID;
-+static int g_rx_port_id = AW_RX_DEFAULT_PORT_ID;
-+
-+#ifdef AW_MTK_OPEN_DSP_PLATFORM
-+extern int mtk_spk_send_ipi_buf_to_dsp(void *data_buffer,
-+ uint32_t data_size);
-+extern int mtk_spk_recv_ipi_buf_from_dsp(int8_t *buffer,
-+ int16_t size, uint32_t *buf_len);
-+/*
-+static int mtk_spk_send_ipi_buf_to_dsp(void *data_buffer,
-+ uint32_t data_size)
-+{
-+ AW_LOGI("enter");
-+ return 0;
-+}
-+
-+static int mtk_spk_recv_ipi_buf_from_dsp(int8_t *buffer,
-+ int16_t size, uint32_t *buf_len)
-+{
-+ AW_LOGI("enter");
-+ return 0;
-+}
-+*/
-+#elif defined AW_QCOM_OPEN_DSP_PLATFORM
-+extern int afe_get_topology(int port_id);
-+extern int aw_send_afe_cal_apr(uint32_t param_id,
-+ void *buf, int cmd_size, bool write);
-+/*
-+static int afe_get_topology(int port_id)
-+{
-+ return -EPERM;
-+}
-+
-+static int aw_send_afe_cal_apr(uint32_t param_id,
-+ void *buf, int cmd_size, bool write)
-+{
-+ AW_LOGI("enter, no define AWINIC_ADSP_ENABLE", __func__);
-+ return 0;
-+}
-+*/
-+#endif
-+
-+#ifdef AW_QCOM_OPEN_DSP_PLATFORM
-+extern void aw_set_port_id(int rx_port_id);
-+#else
-+static void aw_set_port_id(int rx_port_id)
-+{
-+ return;
-+}
-+#endif
-+
-+uint8_t aw87xxx_dsp_isEnable(void)
-+{
-+#if (defined AW_QCOM_OPEN_DSP_PLATFORM) || (defined AW_MTK_OPEN_DSP_PLATFORM)
-+ return true;
-+#else
-+ return false;
-+#endif
-+}
-+
-+/*****************mtk dsp communication function start**********************/
-+#ifdef AW_MTK_OPEN_DSP_PLATFORM
-+static int aw_mtk_write_data_to_dsp(int32_t param_id,
-+ void *data, int size)
-+{
-+ int32_t *dsp_data = NULL;
-+ mtk_dsp_hdr_t *hdr = NULL;
-+ int ret;
-+
-+ dsp_data = kzalloc(sizeof(mtk_dsp_hdr_t) + size, GFP_KERNEL);
-+ if (!dsp_data) {
-+ AW_LOGE("kzalloc dsp_msg error");
-+ return -ENOMEM;
-+ }
-+
-+ hdr = (mtk_dsp_hdr_t *)dsp_data;
-+ hdr->type = DSP_MSG_TYPE_DATA;
-+ hdr->opcode_id = param_id;
-+ hdr->version = AW_DSP_MSG_HDR_VER;
-+
-+ memcpy(((char *)dsp_data) + sizeof(mtk_dsp_hdr_t),
-+ data, size);
-+
-+ ret = mtk_spk_send_ipi_buf_to_dsp(dsp_data,
-+ sizeof(mtk_dsp_hdr_t) + size);
-+ if (ret < 0) {
-+ AW_LOGE("write data failed");
-+ kfree(dsp_data);
-+ dsp_data = NULL;
-+ return ret;
-+ }
-+
-+ kfree(dsp_data);
-+ dsp_data = NULL;
-+ return 0;
-+}
-+
-+static int aw_mtk_read_data_from_dsp(int32_t param_id, void *data,
-+ int data_size)
-+{
-+ int ret;
-+ mtk_dsp_hdr_t hdr;
-+
-+ mutex_lock(&g_dsp_lock);
-+ hdr.type = DSP_MSG_TYPE_CMD;
-+ hdr.opcode_id = param_id;
-+ hdr.version = AW_DSP_MSG_HDR_VER;
-+
-+ ret = mtk_spk_send_ipi_buf_to_dsp(&hdr, sizeof(mtk_dsp_hdr_t));
-+ if (ret < 0)
-+ goto failed;
-+
-+ ret = mtk_spk_recv_ipi_buf_from_dsp(data, data_size, &data_size);
-+ if (ret < 0)
-+ goto failed;
-+
-+ mutex_unlock(&g_dsp_lock);
-+ return 0;
-+
-+failed:
-+ mutex_unlock(&g_dsp_lock);
-+ return ret;
-+}
-+
-+#endif
-+/********************mtk dsp communication function end***********************/
-+
-+/******************qcom dsp communication function start**********************/
-+#ifdef AW_QCOM_OPEN_DSP_PLATFORM
-+static void aw_check_dsp_ready(void)
-+{
-+ int ret;
-+
-+ ret = afe_get_topology(g_rx_port_id);
-+ AW_LOGD("topo_id 0x%x", ret);
-+
-+ if (ret != g_rx_topo_id)
-+ AW_LOGE("topo id 0x%x", ret);
-+
-+}
-+
-+static int aw_qcom_write_data_to_dsp(int32_t param_id,
-+ void *data, int data_size)
-+{
-+ int ret = 0;
-+
-+ AW_LOGI("enter");
-+ mutex_lock(&g_dsp_lock);
-+ aw_check_dsp_ready();
-+ ret = aw_send_afe_cal_apr(param_id, data,
-+ data_size, true);
-+ mutex_unlock(&g_dsp_lock);
-+ return ret;
-+}
-+
-+static int aw_qcom_read_data_from_dsp(int32_t param_id,
-+ void *data, int data_size)
-+{
-+ int ret = 0;
-+
-+ AW_LOGI("enter");
-+ mutex_lock(&g_dsp_lock);
-+ aw_check_dsp_ready();
-+ ret = aw_send_afe_cal_apr(param_id, data,
-+ data_size, false);
-+ mutex_unlock(&g_dsp_lock);
-+ return ret;
-+}
-+
-+#endif
-+/*****************qcom dsp communication function end*********************/
-+
-+/*****************read/write msg communication function*********************/
-+static int aw_write_data_to_dsp(int32_t param_id, void *data, int data_size)
-+{
-+#if defined AW_QCOM_OPEN_DSP_PLATFORM
-+ return aw_qcom_write_data_to_dsp(param_id, data, data_size);
-+#elif defined AW_MTK_OPEN_DSP_PLATFORM
-+ return aw_mtk_write_data_to_dsp(param_id, data, data_size);
-+#else
-+ return -EINVAL;
-+#endif
-+}
-+
-+static int aw_read_data_from_dsp(int32_t param_id, void *data, int data_size)
-+{
-+#if defined AW_QCOM_OPEN_DSP_PLATFORM
-+ return aw_qcom_read_data_from_dsp(param_id, data, data_size);
-+#elif defined AW_MTK_OPEN_DSP_PLATFORM
-+ return aw_mtk_read_data_from_dsp(param_id, data, data_size);
-+#else
-+ return -EINVAL;
-+#endif
-+}
-+
-+/***************read/write msg communication function end*******************/
-+
-+int aw87xxx_dsp_get_rx_module_enable(int *enable)
-+{
-+ if (!enable) {
-+ AW_LOGE("enable is NULL");
-+ return -EINVAL;
-+ }
-+
-+ return aw_read_data_from_dsp(AWDSP_RX_SET_ENABLE,
-+ (void *)enable, sizeof(uint32_t));
-+}
-+
-+int aw87xxx_dsp_set_rx_module_enable(int enable)
-+{
-+ switch (enable) {
-+ case AW_RX_MODULE_DISENABLE:
-+ AW_LOGD("set enable=%d", enable);
-+ break;
-+ case AW_RX_MODULE_ENABLE:
-+ AW_LOGD("set enable=%d", enable);
-+ break;
-+ default:
-+ AW_LOGE("unsupport enable=%d", enable);
-+ return -EINVAL;
-+ }
-+
-+ return aw_write_data_to_dsp(AWDSP_RX_SET_ENABLE,
-+ &enable, sizeof(uint32_t));
-+}
-+
-+
-+int aw87xxx_dsp_get_vmax(uint32_t *vmax, int dev_index)
-+{
-+ int32_t param_id = 0;
-+
-+ switch (dev_index % AW_DSP_CHANNEL_MAX) {
-+ case AW_DSP_CHANNEL_0:
-+ param_id = AWDSP_RX_VMAX_0;
-+ break;
-+ case AW_DSP_CHANNEL_1:
-+ param_id = AWDSP_RX_VMAX_1;
-+ break;
-+ default:
-+ AW_LOGE("algo only support double PA channel:%d unsupport",
-+ dev_index);
-+ return -EINVAL;
-+ }
-+
-+ return aw_read_data_from_dsp(param_id,
-+ (void *)vmax, sizeof(uint32_t));
-+}
-+
-+int aw87xxx_dsp_set_vmax(uint32_t vmax, int dev_index)
-+{
-+ int32_t param_id = 0;
-+
-+ switch (dev_index % AW_DSP_CHANNEL_MAX) {
-+ case AW_DSP_CHANNEL_0:
-+ param_id = AWDSP_RX_VMAX_0;
-+ break;
-+ case AW_DSP_CHANNEL_1:
-+ param_id = AWDSP_RX_VMAX_1;
-+ break;
-+ default:
-+ AW_LOGE("algo only support double PA channel:%d unsupport",
-+ dev_index);
-+ return -EINVAL;
-+ }
-+
-+ return aw_write_data_to_dsp(param_id, &vmax, sizeof(uint32_t));
-+}
-+
-+int aw87xxx_dsp_set_spin(uint32_t ctrl_value)
-+{
-+ int ret = 0;
-+
-+ if (ctrl_value >= AW_SPIN_MAX) {
-+ AW_LOGE("spin [%d] unsupported ", ctrl_value);
-+ return -EINVAL;
-+ }
-+ ret = aw_write_data_to_dsp(AW_MSG_ID_SPIN, &ctrl_value,
-+ sizeof(uint32_t));
-+ if (ret) {
-+ AW_LOGE("spin [%d] set failed ", ctrl_value);
-+ return ret;
-+ }
-+
-+ g_spin_value = ctrl_value;
-+ return 0;
-+}
-+
-+int aw87xxx_dsp_get_spin(void)
-+{
-+ return g_spin_value;
-+}
-+
-+int aw87xxx_spin_set_record_val(void)
-+{
-+ AW_LOGD("record write spin enter");
-+
-+ return aw87xxx_dsp_set_spin(g_spin_value);
-+}
-+EXPORT_SYMBOL(aw87xxx_spin_set_record_val);
-+
-+void aw87xxx_device_parse_topo_id_dt(struct aw_device *aw_dev)
-+{
-+ int ret;
-+
-+ ret = of_property_read_u32(aw_dev->dev->of_node, "aw-rx-topo-id", &g_rx_topo_id);
-+ if (ret < 0) {
-+ g_rx_topo_id = AW_RX_DEFAULT_TOPO_ID;
-+ AW_DEV_LOGI(aw_dev->dev, "read aw-rx-topo-id failed,use default");
-+ }
-+
-+ AW_DEV_LOGI(aw_dev->dev, "rx-topo-id: 0x%x", g_rx_topo_id);
-+}
-+
-+void aw87xxx_device_parse_port_id_dt(struct aw_device *aw_dev)
-+{
-+ int ret;
-+
-+ ret = of_property_read_u32(aw_dev->dev->of_node, "aw-rx-port-id", &g_rx_port_id);
-+ if (ret < 0) {
-+ g_rx_port_id = AW_RX_DEFAULT_PORT_ID;
-+ AW_DEV_LOGI(aw_dev->dev, "read aw-rx-port-id failed,use default");
-+ }
-+
-+ aw_set_port_id(g_rx_port_id);
-+ AW_DEV_LOGI(aw_dev->dev, "rx-port-id: 0x%x", g_rx_port_id);
-+}
-+
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_dsp.h b/sound/soc/codecs/aw87xxx/aw87xxx_dsp.h
-new file mode 100644
-index 000000000..2668170f1
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_dsp.h
-@@ -0,0 +1,65 @@
-+#ifndef __AW87XXX_DSP_H__
-+#define __AW87XXX_DSP_H__
-+
-+#include "aw87xxx_device.h"
-+
-+/*#define AW_MTK_OPEN_DSP_PLATFORM*/
-+/*#define AW_QCOM_OPEN_DSP_PLATFORM*/
-+
-+/*Note: The pord_ID is configured according to different platforms*/
-+#define AW_DSP_SLEEP_TIME (10)
-+
-+#define AW_DSP_MSG_HDR_VER (1)
-+
-+#define AW_RX_DEFAULT_TOPO_ID (0x1000FF01)
-+#define AW_RX_DEFAULT_PORT_ID (0x4000)
-+
-+#define AWDSP_RX_SET_ENABLE (0x10013D11)
-+#define AWDSP_RX_PARAMS (0x10013D12)
-+#define AWDSP_RX_VMAX_0 (0X10013D17)
-+#define AWDSP_RX_VMAX_1 (0X10013D18)
-+#define AW_MSG_ID_SPIN (0x10013D2E)
-+
-+enum {
-+ AW_SPIN_0 = 0,
-+ AW_SPIN_90,
-+ AW_SPIN_180,
-+ AW_SPIN_270,
-+ AW_SPIN_MAX,
-+};
-+
-+typedef struct mtk_dsp_msg_header {
-+ int32_t type;
-+ int32_t opcode_id;
-+ int32_t version;
-+ int32_t reserver[3];
-+} mtk_dsp_hdr_t;
-+
-+enum aw_rx_module_enable {
-+ AW_RX_MODULE_DISENABLE = 0,
-+ AW_RX_MODULE_ENABLE,
-+};
-+
-+enum aw_dsp_msg_type {
-+ DSP_MSG_TYPE_DATA = 0,
-+ DSP_MSG_TYPE_CMD = 1,
-+};
-+
-+enum aw_dsp_channel {
-+ AW_DSP_CHANNEL_0 = 0,
-+ AW_DSP_CHANNEL_1,
-+ AW_DSP_CHANNEL_MAX,
-+};
-+
-+uint8_t aw87xxx_dsp_isEnable(void);
-+int aw87xxx_dsp_get_rx_module_enable(int *enable);
-+int aw87xxx_dsp_set_rx_module_enable(int enable);
-+int aw87xxx_dsp_get_vmax(uint32_t *vmax, int channel);
-+int aw87xxx_dsp_set_vmax(uint32_t vmax, int channel);
-+int aw87xxx_dsp_set_spin(uint32_t ctrl_value);
-+int aw87xxx_dsp_get_spin(void);
-+int aw87xxx_spin_set_record_val(void);
-+void aw87xxx_device_parse_port_id_dt(struct aw_device *aw_dev);
-+void aw87xxx_device_parse_topo_id_dt(struct aw_device *aw_dev);
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_log.h b/sound/soc/codecs/aw87xxx/aw87xxx_log.h
-new file mode 100644
-index 000000000..67263484d
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_log.h
-@@ -0,0 +1,33 @@
-+#ifndef __AW87XXX_LOG_H__
-+#define __AW87XXX_LOG_H__
-+
-+#include <linux/kernel.h>
-+
-+
-+/********************************************
-+ *
-+ * print information control
-+ *
-+ *******************************************/
-+#define AW_LOGI(fmt, ...)\
-+ pr_info("[Awinic] %s:" fmt "\n", __func__, ##__VA_ARGS__)
-+
-+#define AW_LOGD(fmt, ...)\
-+ pr_debug("[Awinic] %s:" fmt "\n", __func__, ##__VA_ARGS__)
-+
-+#define AW_LOGE(fmt, ...)\
-+ pr_err("[Awinic] %s:" fmt "\n", __func__, ##__VA_ARGS__)
-+
-+
-+#define AW_DEV_LOGI(dev, fmt, ...)\
-+ pr_info("[Awinic] [%s]%s: " fmt "\n", dev_name(dev), __func__, ##__VA_ARGS__)
-+
-+#define AW_DEV_LOGD(dev, fmt, ...)\
-+ pr_debug("[Awinic] [%s]%s: " fmt "\n", dev_name(dev), __func__, ##__VA_ARGS__)
-+
-+#define AW_DEV_LOGE(dev, fmt, ...)\
-+ pr_err("[Awinic] [%s]%s: " fmt "\n", dev_name(dev), __func__, ##__VA_ARGS__)
-+
-+
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_monitor.c b/sound/soc/codecs/aw87xxx/aw87xxx_monitor.c
-new file mode 100644
-index 000000000..92305f9c4
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_monitor.c
-@@ -0,0 +1,1208 @@
-+/*
-+ * aw87xxx_monitor.c
-+ *
-+ * Copyright (c) 2021 AWINIC Technology CO., LTD
-+ *
-+ * Author: Barry <zhaozhongbo@awinic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+#include <linux/module.h>
-+#include <linux/uaccess.h>
-+#include <linux/delay.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/device.h>
-+#include <linux/kernel.h>
-+#include <linux/power_supply.h>
-+#include <linux/of.h>
-+#include <linux/power_supply.h>
-+#include <linux/hrtimer.h>
-+#include <linux/i2c.h>
-+#include <linux/gpio.h>
-+#include <linux/of_gpio.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+#include <linux/firmware.h>
-+#include <linux/platform_device.h>
-+#include <linux/proc_fs.h>
-+#include <linux/io.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/gameport.h>
-+#include <linux/moduleparam.h>
-+#include <linux/mutex.h>
-+#include <linux/workqueue.h>
-+#include "aw87xxx.h"
-+#include "aw87xxx_log.h"
-+#include "aw87xxx_monitor.h"
-+#include "aw87xxx_dsp.h"
-+#include "aw87xxx_bin_parse.h"
-+#include "aw87xxx_device.h"
-+
-+#define AW_MONITOT_BIN_PARSE_VERSION "V0.1.0"
-+
-+#define AW_GET_32_DATA(w, x, y, z) \
-+ ((uint32_t)((((uint8_t)w) << 24) | (((uint8_t)x) << 16) | \
-+ (((uint8_t)y) << 8) | ((uint8_t)z)))
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx monitor bin check
-+ *
-+ ****************************************************************************/
-+static int aw_monitor_check_header_v_1_0_0(struct device *dev,
-+ char *data, uint32_t data_len)
-+{
-+ int i = 0;
-+ struct aw_bin_header *header = (struct aw_bin_header *)data;
-+
-+ if (header->bin_data_type != DATA_TYPE_MONITOR_ANALOG) {
-+ AW_DEV_LOGE(dev, "monitor data_type check error!");
-+ return -EINVAL;
-+ }
-+
-+ if (header->bin_data_size != AW_MONITOR_HDR_DATA_SIZE) {
-+ AW_DEV_LOGE(dev, "monitor data_size error!");
-+ return -EINVAL;
-+ }
-+
-+ if (header->data_byte_len != AW_MONITOR_HDR_DATA_BYTE_LEN) {
-+ AW_DEV_LOGE(dev, "monitor data_byte_len error!");
-+ return -EINVAL;
-+ }
-+
-+ for (i = 0; i < AW_MONITOR_DATA_VER_MAX; i++) {
-+ if (header->bin_data_ver == i) {
-+ AW_LOGD("monitor bin_data_ver[0x%x]", i);
-+ break;
-+ }
-+ }
-+ if (i == AW_MONITOR_DATA_VER_MAX)
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
-+static int aw_monitor_check_data_v1_size(struct device *dev,
-+ char *data, int32_t data_len)
-+{
-+ int32_t bin_header_len = sizeof(struct aw_bin_header);
-+ int32_t monitor_header_len = sizeof(struct aw_monitor_header);
-+ int32_t monitor_data_len = sizeof(struct vmax_step_config);
-+ int32_t len = 0;
-+ struct aw_monitor_header *monitor_header = NULL;
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ if (data_len < bin_header_len + monitor_header_len) {
-+ AW_DEV_LOGE(dev, "bin len is less than aw_bin_header and monitoor_header,check failed");
-+ return -EINVAL;
-+ }
-+
-+ monitor_header = (struct aw_monitor_header *)(data + bin_header_len);
-+ len = data_len - bin_header_len - monitor_header_len;
-+ if (len < monitor_header->step_count * monitor_data_len) {
-+ AW_DEV_LOGE(dev, "bin data len is not enough,check failed");
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGD(dev, "succeed");
-+
-+ return 0;
-+}
-+
-+static int aw_monitor_check_data_size(struct device *dev,
-+ char *data, int32_t data_len)
-+{
-+ int ret = -1;
-+ struct aw_bin_header *header = (struct aw_bin_header *)data;
-+
-+ switch (header->bin_data_ver) {
-+ case AW_MONITOR_DATA_VER:
-+ ret = aw_monitor_check_data_v1_size(dev, data, data_len);
-+ if (ret < 0)
-+ return ret;
-+ break;
-+ default:
-+ AW_DEV_LOGE(dev, "bin data_ver[0x%x] non support",
-+ header->bin_data_ver);
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int aw_monitor_check_bin_header(struct device *dev,
-+ char *data, int32_t data_len)
-+{
-+ int ret = -1;
-+ struct aw_bin_header *header = NULL;
-+
-+ if (data_len < sizeof(struct aw_bin_header)) {
-+ AW_DEV_LOGE(dev, "bin len is less than aw_bin_header,check failed");
-+ return -EINVAL;
-+ }
-+ header = (struct aw_bin_header *)data;
-+
-+ switch (header->header_ver) {
-+ case HEADER_VERSION_1_0_0:
-+ ret = aw_monitor_check_header_v_1_0_0(dev, data, data_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "monitor bin haeder info check error!");
-+ return ret;
-+ }
-+ break;
-+ default:
-+ AW_DEV_LOGE(dev, "bin version[0x%x] non support",
-+ header->header_ver);
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw_monitor_bin_check_sum(struct device *dev,
-+ char *data, int32_t data_len)
-+{
-+ int i, data_sum = 0;
-+ uint32_t *check_sum = (uint32_t *)data;
-+
-+ for (i = 4; i < data_len; i++)
-+ data_sum += data[i];
-+
-+ if (*check_sum != data_sum) {
-+ AW_DEV_LOGE(dev, "check_sum[%d] is not equal to data_sum[%d]",
-+ *check_sum, data_sum);
-+ return -ENOMEM;
-+ }
-+
-+ AW_DEV_LOGD(dev, "succeed");
-+
-+ return 0;
-+}
-+
-+static int aw_monitor_bin_check(struct device *dev,
-+ char *monitor_data, uint32_t data_len)
-+{
-+ int ret = -1;
-+
-+ if (monitor_data == NULL || data_len == 0) {
-+ AW_DEV_LOGE(dev, "none data to parse");
-+ return -EINVAL;
-+ }
-+
-+ ret = aw_monitor_bin_check_sum(dev, monitor_data, data_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "bin data check sum failed");
-+ return ret;
-+ }
-+
-+ ret = aw_monitor_check_bin_header(dev, monitor_data, data_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "bin data len check failed");
-+ return ret;
-+ }
-+
-+ ret = aw_monitor_check_data_size(dev, monitor_data, data_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "bin header info check failed");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+/*****************************************************************************
-+ *
-+ * aw87xxx monitor header bin parse
-+ *
-+ *****************************************************************************/
-+static void aw_monitor_write_to_table_v1(struct device *dev,
-+ struct vmax_step_config *vmax_step,
-+ char *vmax_data, uint32_t step_count)
-+{
-+ int i = 0;
-+ int index = 0;
-+ int vmax_step_size = (int)sizeof(struct vmax_step_config);
-+
-+ for (i = 0; i < step_count; i++) {
-+ index = vmax_step_size * i;
-+ vmax_step[i].vbat_min =
-+ AW_GET_32_DATA(vmax_data[index + 3],
-+ vmax_data[index + 2],
-+ vmax_data[index + 1],
-+ vmax_data[index + 0]);
-+ vmax_step[i].vbat_max =
-+ AW_GET_32_DATA(vmax_data[index + 7],
-+ vmax_data[index + 6],
-+ vmax_data[index + 5],
-+ vmax_data[index + 4]);
-+ vmax_step[i].vmax_vol =
-+ AW_GET_32_DATA(vmax_data[index + 11],
-+ vmax_data[index + 10],
-+ vmax_data[index + 9],
-+ vmax_data[index + 8]);
-+ }
-+
-+ for (i = 0; i < step_count; i++)
-+ AW_DEV_LOGI(dev, "vbat_min:%d, vbat_max%d, vmax_vol:0x%x",
-+ vmax_step[i].vbat_min,
-+ vmax_step[i].vbat_max,
-+ vmax_step[i].vmax_vol);
-+}
-+
-+static int aw_monitor_parse_vol_data_v1(struct device *dev,
-+ struct aw_monitor *monitor, char *monitor_data)
-+{
-+ uint32_t step_count = 0;
-+ char *vmax_data = NULL;
-+ struct vmax_step_config *vmax_step = NULL;
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ step_count = monitor->monitor_hdr.step_count;
-+ if (step_count) {
-+ vmax_step = devm_kzalloc(dev, sizeof(struct vmax_step_config) * step_count,
-+ GFP_KERNEL);
-+ if (vmax_step == NULL) {
-+ AW_DEV_LOGE(dev, "vmax_cfg vmalloc failed");
-+ return -ENOMEM;
-+ }
-+ memset(vmax_step, 0,
-+ sizeof(struct vmax_step_config) * step_count);
-+ }
-+
-+ vmax_data = monitor_data + sizeof(struct aw_bin_header) +
-+ sizeof(struct aw_monitor_header);
-+ aw_monitor_write_to_table_v1(dev, vmax_step, vmax_data, step_count);
-+ monitor->vmax_cfg = vmax_step;
-+
-+ AW_DEV_LOGI(dev, "vmax_data parse succeed");
-+
-+ return 0;
-+}
-+
-+static int aw_monitor_parse_data_v1(struct device *dev,
-+ struct aw_monitor *monitor, char *monitor_data)
-+{
-+ int ret = -1;
-+ int header_len = 0;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ header_len = sizeof(struct aw_bin_header);
-+ memcpy(monitor_hdr, monitor_data + header_len,
-+ sizeof(struct aw_monitor_header));
-+
-+ AW_DEV_LOGI(dev, "monitor_switch:%d, monitor_time:%d (ms), monitor_count:%d, step_count:%d",
-+ monitor_hdr->monitor_switch, monitor_hdr->monitor_time,
-+ monitor_hdr->monitor_count, monitor_hdr->step_count);
-+
-+ ret = aw_monitor_parse_vol_data_v1(dev, monitor, monitor_data);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "vmax_data parse failed");
-+ return ret;
-+ }
-+
-+ monitor->bin_status = AW_MONITOR_CFG_OK;
-+
-+ return 0;
-+}
-+
-+
-+static int aw_monitor_parse_v_1_0_0(struct device *dev,
-+ struct aw_monitor *monitor, char *monitor_data)
-+{
-+ int ret = -1;
-+ struct aw_bin_header *header = (struct aw_bin_header *)monitor_data;
-+
-+ switch (header->bin_data_ver) {
-+ case AW_MONITOR_DATA_VER:
-+ ret = aw_monitor_parse_data_v1(dev, monitor, monitor_data);
-+ if (ret < 0)
-+ return ret;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+void aw87xxx_monitor_cfg_free(struct aw_monitor *monitor)
-+{
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+
-+ monitor->bin_status = AW_MONITOR_CFG_WAIT;
-+ memset(&monitor->monitor_hdr, 0,
-+ sizeof(struct aw_monitor_header));
-+ if (monitor->vmax_cfg) {
-+ devm_kfree(aw87xxx->dev, monitor->vmax_cfg);
-+ monitor->vmax_cfg = NULL;
-+ }
-+}
-+
-+int aw87xxx_monitor_bin_parse(struct device *dev,
-+ char *monitor_data, uint32_t data_len)
-+{
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = NULL;
-+ struct aw_bin_header *bin_header = NULL;
-+
-+ if (aw87xxx == NULL) {
-+ AW_DEV_LOGE(dev, "get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ monitor = &aw87xxx->monitor;
-+ monitor->bin_status = AW_MONITOR_CFG_WAIT;
-+
-+ AW_DEV_LOGI(dev, "monitor bin parse version: %s",
-+ AW_MONITOT_BIN_PARSE_VERSION);
-+
-+ ret = aw_monitor_bin_check(dev, monitor_data, data_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "monitor bin check failed");
-+ return ret;
-+ }
-+
-+ bin_header = (struct aw_bin_header *)monitor_data;
-+ switch (bin_header->bin_data_ver) {
-+ case DATA_VERSION_V1:
-+ ret = aw_monitor_parse_v_1_0_0(dev, monitor,
-+ monitor_data);
-+ if (ret < 0) {
-+ aw87xxx_monitor_cfg_free(monitor);
-+ return ret;
-+ }
-+ break;
-+ default:
-+ AW_DEV_LOGE(dev, "Unrecognized this bin data version[0x%x]",
-+ bin_header->bin_data_ver);
-+ }
-+
-+ return 0;
-+}
-+
-+/***************************************************************************
-+ *
-+ * aw87xxx monitor get adjustment vmax of power
-+ *
-+ ***************************************************************************/
-+static int aw_monitor_get_battery_capacity(struct device *dev,
-+ struct aw_monitor *monitor, int *vbat_capacity)
-+{
-+ char name[] = "battery";
-+ int ret = -1;
-+ union power_supply_propval prop = { 0 };
-+ struct power_supply *psy = NULL;
-+
-+ psy = power_supply_get_by_name(name);
-+ if (psy == NULL) {
-+ AW_DEV_LOGE(dev, "no struct power supply name:%s", name);
-+ return -EINVAL;
-+ }
-+
-+ ret = power_supply_get_property(psy, POWER_SUPPLY_PROP_CAPACITY, &prop);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "get vbat capacity failed");
-+ return -EINVAL;
-+ }
-+ *vbat_capacity = prop.intval;
-+ AW_DEV_LOGI(dev, "The percentage is %d",
-+ *vbat_capacity);
-+
-+ return 0;
-+}
-+
-+static int aw_search_vmax_from_table(struct device *dev,
-+ struct aw_monitor *monitor,
-+ const int vbat_vol, int *vmax_vol)
-+{
-+ int i = 0;
-+ int vmax_set = 0;
-+ uint32_t vmax_flag = 0;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+ struct vmax_step_config *vmax_cfg = monitor->vmax_cfg;
-+
-+ if (monitor->bin_status == AW_MONITOR_CFG_WAIT) {
-+ AW_DEV_LOGE(dev, "vmax_cfg not loaded or parse failed");
-+ return -ENODATA;
-+ }
-+
-+ for (i = 0; i < monitor_hdr->step_count; i++) {
-+ if (vbat_vol == AW_VBAT_MAX) {
-+ vmax_set = AW_VMAX_MAX;
-+ vmax_flag = 1;
-+ AW_DEV_LOGD(dev, "vbat=%d, setting vmax=0x%x",
-+ vbat_vol, vmax_set);
-+ break;
-+ }
-+
-+ if (vbat_vol >= vmax_cfg[i].vbat_min &&
-+ vbat_vol < vmax_cfg[i].vbat_max) {
-+ vmax_set = vmax_cfg[i].vmax_vol;
-+ vmax_flag = 1;
-+ AW_DEV_LOGD(dev, "read setting vmax=0x%x, step[%d]: vbat_min=%d,vbat_max=%d",
-+ vmax_set, i,
-+ vmax_cfg[i].vbat_min,
-+ vmax_cfg[i].vbat_max);
-+ break;
-+ }
-+ }
-+
-+ if (!vmax_flag) {
-+ AW_DEV_LOGE(dev, "vmax_cfg not found");
-+ return -ENODATA;
-+ }
-+
-+ *vmax_vol = vmax_set;
-+ return 0;
-+}
-+
-+
-+/***************************************************************************
-+ *
-+ *monitor_esd_func
-+ *
-+ ***************************************************************************/
-+static int aw_chip_status_recover(struct aw87xxx *aw87xxx)
-+{
-+ int ret = -1;
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ char *profile = aw87xxx->current_profile;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ ret = aw87xxx_update_profile_esd(aw87xxx, profile);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-+ profile);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "current prof[%s], dev_index[%d] ",
-+ profile, aw87xxx->dev_index);
-+
-+ monitor->pre_vmax = AW_VMAX_INIT_VAL;
-+ monitor->first_entry = AW_FIRST_ENTRY;
-+ monitor->timer_cnt = 0;
-+ monitor->vbat_sum = 0;
-+
-+ return 0;
-+}
-+
-+static int aw_monitor_chip_esd_check_work(struct aw87xxx *aw87xxx)
-+{
-+ int ret = 0;
-+ int i = 0;
-+
-+ for (i = 0; i < REG_STATUS_CHECK_MAX; i++) {
-+ AW_DEV_LOGD(aw87xxx->dev, "reg_status_check[%d]", i);
-+
-+ ret = aw87xxx_dev_esd_reg_status_check(&aw87xxx->aw_dev);
-+ if (ret < 0) {
-+ aw_chip_status_recover(aw87xxx);
-+ } else {
-+ AW_DEV_LOGD(aw87xxx->dev, "chip status check succeed");
-+ break;
-+ }
-+ msleep(AW_ESD_CHECK_DELAY);
-+ }
-+
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "chip status recover failed,chip off");
-+ aw87xxx_update_profile_esd(aw87xxx, aw87xxx->prof_off_name);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+/***************************************************************************
-+ *
-+ * aw87xxx monitor work with dsp
-+ *
-+ ***************************************************************************/
-+static int aw_monitor_update_vmax_to_dsp(struct device *dev,
-+ struct aw_monitor *monitor, int vmax_set)
-+{
-+ int ret = -1;
-+ uint32_t enable = 0;
-+
-+ if (monitor->pre_vmax != vmax_set) {
-+ ret = aw87xxx_dsp_get_rx_module_enable(&enable);
-+ if (!enable || ret < 0) {
-+ AW_DEV_LOGE(dev, "get rx failed or rx disable, ret=%d, enable=%d",
-+ ret, enable);
-+ return -EPERM;
-+ }
-+
-+ ret = aw87xxx_dsp_set_vmax(vmax_set, monitor->dev_index);
-+ if (ret) {
-+ AW_DEV_LOGE(dev, "set dsp msg fail, ret=%d", ret);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(dev, "set dsp vmax=0x%x sucess", vmax_set);
-+ monitor->pre_vmax = vmax_set;
-+ } else {
-+ AW_DEV_LOGI(dev, "vmax=0x%x no change", vmax_set);
-+ }
-+
-+ return 0;
-+}
-+
-+static void aw_monitor_with_dsp_vmax_work(struct device *dev,
-+ struct aw_monitor *monitor)
-+{
-+ int ret = -1;
-+ int vmax_set = 0;
-+ int vbat_capacity = 0;
-+ int ave_capacity = 0;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ AW_DEV_LOGD(dev, "enter with dsp monitor");
-+
-+ ret = aw_monitor_get_battery_capacity(dev, monitor, &vbat_capacity);
-+ if (ret < 0)
-+ return;
-+
-+ if (monitor->timer_cnt < monitor_hdr->monitor_count) {
-+ monitor->timer_cnt++;
-+ monitor->vbat_sum += vbat_capacity;
-+ AW_DEV_LOGI(dev, "timer_cnt = %d",
-+ monitor->timer_cnt);
-+ }
-+ if ((monitor->timer_cnt >= monitor_hdr->monitor_count) ||
-+ (monitor->first_entry == AW_FIRST_ENTRY)) {
-+ if (monitor->first_entry == AW_FIRST_ENTRY)
-+ monitor->first_entry = AW_NOT_FIRST_ENTRY;
-+ ave_capacity = monitor->vbat_sum / monitor->timer_cnt;
-+
-+ if (monitor->custom_capacity)
-+ ave_capacity = monitor->custom_capacity;
-+
-+ AW_DEV_LOGI(dev, "get average capacity = %d", ave_capacity);
-+
-+ ret = aw_search_vmax_from_table(dev, monitor,
-+ ave_capacity, &vmax_set);
-+ if (ret < 0)
-+ AW_DEV_LOGE(dev, "not find vmax_vol");
-+ else
-+ aw_monitor_update_vmax_to_dsp(dev, monitor, vmax_set);
-+
-+ monitor->timer_cnt = 0;
-+ monitor->vbat_sum = 0;
-+ }
-+}
-+
-+static void aw_monitor_work_func(struct work_struct *work)
-+{
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = container_of(work,
-+ struct aw87xxx, monitor.with_dsp_work.work);
-+ struct device *dev = aw87xxx->dev;
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ AW_DEV_LOGD(dev, "enter");
-+
-+ if (monitor->esd_enable) {
-+ ret = aw_monitor_chip_esd_check_work(aw87xxx);
-+ if (ret < 0)
-+ return;
-+ }
-+
-+ if (monitor_hdr->monitor_switch && !(aw87xxx->aw_dev.is_rec_mode) &&
-+ monitor->open_dsp_en && monitor->bin_status == AW_ACF_UPDATE) {
-+ AW_DEV_LOGD(dev, "start low power protection");
-+ aw_monitor_with_dsp_vmax_work(dev, monitor);
-+ }
-+
-+ if (monitor->esd_enable || (monitor_hdr->monitor_switch &&
-+ !(aw87xxx->aw_dev.is_rec_mode) && monitor->open_dsp_en &&
-+ monitor->bin_status == AW_ACF_UPDATE)) {
-+ schedule_delayed_work(&monitor->with_dsp_work,
-+ msecs_to_jiffies(monitor_hdr->monitor_time));
-+ }
-+}
-+
-+void aw87xxx_monitor_stop(struct aw_monitor *monitor)
-+{
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ cancel_delayed_work_sync(&monitor->with_dsp_work);
-+}
-+
-+void aw87xxx_monitor_start(struct aw_monitor *monitor)
-+{
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+ int ret = 0;
-+
-+ ret = aw87xxx_dev_check_reg_is_rec_mode(&aw87xxx->aw_dev);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "get reg current mode failed");
-+ return;
-+ }
-+
-+ if (monitor->esd_enable || (monitor->monitor_hdr.monitor_switch &&
-+ !(aw87xxx->aw_dev.is_rec_mode) && monitor->open_dsp_en
-+ && monitor->bin_status == AW_ACF_UPDATE)) {
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ monitor->pre_vmax = AW_VMAX_INIT_VAL;
-+ monitor->first_entry = AW_FIRST_ENTRY;
-+ monitor->timer_cnt = 0;
-+ monitor->vbat_sum = 0;
-+
-+ schedule_delayed_work(&monitor->with_dsp_work,
-+ msecs_to_jiffies(monitor->monitor_hdr.monitor_time));
-+ }
-+}
-+/***************************************************************************
-+ *
-+ * aw87xxx no dsp monitor func
-+ *
-+ ***************************************************************************/
-+int aw87xxx_monitor_no_dsp_get_vmax(struct aw_monitor *monitor, int32_t *vmax)
-+{
-+ int vbat_capacity = 0;
-+ int ret = -1;
-+ int vmax_vol = 0;
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+ struct device *dev = aw87xxx->dev;
-+
-+ ret = aw_monitor_get_battery_capacity(dev, monitor, &vbat_capacity);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (monitor->custom_capacity)
-+ vbat_capacity = monitor->custom_capacity;
-+ AW_DEV_LOGI(dev, "get_battery_capacity is[%d]", vbat_capacity);
-+
-+ ret = aw_search_vmax_from_table(dev, monitor,
-+ vbat_capacity, &vmax_vol);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(dev, "not find vmax_vol");
-+ return ret;
-+ }
-+
-+ *vmax = vmax_vol;
-+ return 0;
-+}
-+
-+
-+/***************************************************************************
-+ *
-+ * aw87xxx monitor sysfs nodes
-+ *
-+ ***************************************************************************/
-+static ssize_t aw_attr_get_esd_enable(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ if (monitor->esd_enable) {
-+ AW_DEV_LOGI(aw87xxx->dev, "esd-enable=true");
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "esd-enable=true\n");
-+ } else {
-+ AW_DEV_LOGI(aw87xxx->dev, "esd-enable=false");
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "esd-enable=false\n");
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw_attr_set_esd_enable(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t len)
-+{
-+ char esd_enable[AW_ESD_ENABLE_STRLEN] = {0};
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ if (strlen(buf) > AW_ESD_ENABLE_STRLEN) {
-+ AW_DEV_LOGE(aw87xxx->dev, "input esd_enable_str_len is out of max[%d]",
-+ AW_ESD_ENABLE_STRLEN);
-+ return -EINVAL;
-+ }
-+
-+ if (sscanf(buf, "%s", esd_enable) == 1) {
-+ AW_DEV_LOGD(aw87xxx->dev, "input esd-enable=[%s]", esd_enable);
-+ if (!strcmp(esd_enable, "true"))
-+ monitor->esd_enable = AW_ESD_ENABLE;
-+ else
-+ monitor->esd_enable = AW_ESD_DISABLE;
-+ AW_DEV_LOGI(dev, "set esd-enable=[%s]",
-+ monitor->esd_enable ? "true" : "false");
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "input esd-enable error");
-+ return -EINVAL;
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw_attr_get_vbat(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ int ret = -1;
-+ int vbat_capacity = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ if (monitor->custom_capacity == 0) {
-+ ret = aw_monitor_get_battery_capacity(dev, monitor,
-+ &vbat_capacity);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "get battery_capacity failed");
-+ return ret;
-+ }
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "vbat capacity=%d\n", vbat_capacity);
-+ } else {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "vbat capacity=%d\n",
-+ monitor->custom_capacity);
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw_attr_set_vbat(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t len)
-+{
-+ int ret = -1;
-+ int capacity = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ ret = kstrtouint(buf, 0, &capacity);
-+ if (ret < 0)
-+ return ret;
-+ AW_DEV_LOGI(aw87xxx->dev, "set capacity = %d", capacity);
-+ if (capacity >= AW_VBAT_CAPACITY_MIN &&
-+ capacity <= AW_VBAT_CAPACITY_MAX){
-+ monitor->custom_capacity = capacity;
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "vbat_set=invalid,please input value [%d-%d]",
-+ AW_VBAT_CAPACITY_MIN, AW_VBAT_CAPACITY_MAX);
-+ return -EINVAL;
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw_attr_get_vmax(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ int ret = -1;
-+ int vbat_capacity = 0;
-+ int vmax_get = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ if (monitor->open_dsp_en) {
-+ ret = aw87xxx_dsp_get_vmax(&vmax_get, aw87xxx->dev_index);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev,
-+ "get dsp vmax fail, ret=%d", ret);
-+ return ret;
-+ }
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "get_vmax=%d\n", vmax_get);
-+ } else {
-+ ret = aw_monitor_get_battery_capacity(dev, monitor,
-+ &vbat_capacity);
-+ if (ret < 0)
-+ return ret;
-+ AW_DEV_LOGI(aw87xxx->dev, "get_battery_capacity is [%d]",
-+ vbat_capacity);
-+
-+ if (monitor->custom_capacity) {
-+ vbat_capacity = monitor->custom_capacity;
-+ AW_DEV_LOGI(aw87xxx->dev, "get custom_capacity is [%d]",
-+ vbat_capacity);
-+ }
-+
-+ ret = aw_search_vmax_from_table(aw87xxx->dev, monitor,
-+ vbat_capacity, &vmax_get);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not find vmax_vol");
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "not_find_vmax_vol\n");
-+ return len;
-+ }
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "0x%x\n", vmax_get);
-+ AW_DEV_LOGI(aw87xxx->dev, "0x%x", vmax_get);
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw_attr_set_vmax(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ uint32_t vmax_set = 0;
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ ret = kstrtouint(buf, 0, &vmax_set);
-+ if (ret < 0)
-+ return ret;
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "vmax_set=0x%x", vmax_set);
-+
-+ if (monitor->open_dsp_en) {
-+ ret = aw87xxx_dsp_set_vmax(vmax_set, aw87xxx->dev_index);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "send dsp_msg error, ret = %d",
-+ ret);
-+ return ret;
-+ }
-+ msleep(2);
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "no_dsp system,vmax_set invalid");
-+ return -EINVAL;
-+ }
-+
-+ return count;
-+}
-+
-+static ssize_t aw_attr_get_monitor_switch(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "aw87xxx monitor switch: %u\n",
-+ monitor_hdr->monitor_switch);
-+ return len;
-+}
-+
-+
-+int aw87xxx_dev_monitor_switch_set(struct aw_monitor *monitor, uint32_t enable)
-+{
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "monitor switch set =%d", enable);
-+
-+ if (!monitor->bin_status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "bin parse faile or not loaded,set invalid");
-+ return -EINVAL;
-+ }
-+
-+ if (monitor_hdr->monitor_switch == enable)
-+ return 0;
-+
-+ if (enable > 0) {
-+ monitor_hdr->monitor_switch = 1;
-+ if (monitor->open_dsp_en) {
-+ monitor->pre_vmax = AW_VMAX_INIT_VAL;
-+ monitor->first_entry = AW_FIRST_ENTRY;
-+ monitor->timer_cnt = 0;
-+ monitor->vbat_sum = 0;
-+ }
-+ } else {
-+ monitor_hdr->monitor_switch = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+static ssize_t aw_attr_set_monitor_switch(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ uint32_t enable = 0;
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+
-+ ret = kstrtouint(buf, 0, &enable);
-+ if (ret < 0)
-+ return ret;
-+
-+ ret = aw87xxx_dev_monitor_switch_set(monitor, enable);
-+ if (ret)
-+ return ret;
-+
-+ return count;
-+}
-+
-+static ssize_t aw_attr_get_monitor_time(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "aw_monitor_timer = %u(ms)\n",
-+ monitor_hdr->monitor_time);
-+ return len;
-+}
-+
-+static ssize_t aw_attr_set_monitor_time(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ unsigned int timer_val = 0;
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ ret = kstrtouint(buf, 0, &timer_val);
-+ if (ret < 0)
-+ return ret;
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "input monitor timer=%d(ms)", timer_val);
-+
-+ if (!monitor->bin_status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "bin parse faile or not loaded,set invalid");
-+ return -EINVAL;
-+ }
-+
-+ if (timer_val != monitor_hdr->monitor_time)
-+ monitor_hdr->monitor_time = timer_val;
-+ else
-+ AW_DEV_LOGI(aw87xxx->dev, "no_change monitor_time");
-+
-+ return count;
-+}
-+
-+static ssize_t aw_attr_get_monitor_count(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "aw_monitor_count = %u\n",
-+ monitor_hdr->monitor_count);
-+ return len;
-+}
-+
-+static ssize_t aw_attr_set_monitor_count(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ unsigned int monitor_count = 0;
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ struct aw_monitor_header *monitor_hdr = &monitor->monitor_hdr;
-+
-+ ret = kstrtouint(buf, 0, &monitor_count);
-+ if (ret < 0)
-+ return ret;
-+ AW_DEV_LOGI(aw87xxx->dev, "input monitor count=%d", monitor_count);
-+
-+ if (!monitor->bin_status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "bin parse faile or not loaded,set invalid");
-+ return -EINVAL;
-+ }
-+
-+ if (monitor_count != monitor_hdr->monitor_count)
-+ monitor_hdr->monitor_count = monitor_count;
-+ else
-+ AW_DEV_LOGI(aw87xxx->dev, "no_change monitor_count");
-+
-+ return count;
-+}
-+
-+
-+static ssize_t aw_attr_get_rx(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ ssize_t len = 0;
-+ int ret = -1;
-+ uint32_t enable = 0;
-+
-+ if (monitor->open_dsp_en) {
-+ ret = aw87xxx_dsp_get_rx_module_enable(&enable);
-+ if (ret) {
-+ AW_DEV_LOGE(aw87xxx->dev, "dsp_msg error, ret=%d", ret);
-+ return ret;
-+ }
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "aw87xxx rx: %u\n", enable);
-+ } else {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "command is invalid\n");
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw_attr_set_rx(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_monitor *monitor = &aw87xxx->monitor;
-+ int ret = -1;
-+ uint32_t enable;
-+
-+ ret = kstrtouint(buf, 0, &enable);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (monitor->open_dsp_en) {
-+ AW_DEV_LOGI(aw87xxx->dev, "set rx enable=%d", enable);
-+
-+ ret = aw87xxx_dsp_set_rx_module_enable(enable);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "dsp_msg error, ret=%d",
-+ ret);
-+ return ret;
-+ }
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "command is invalid");
-+ return -EINVAL;
-+ }
-+
-+ return count;
-+}
-+
-+
-+static DEVICE_ATTR(esd_enable, S_IWUSR | S_IRUGO,
-+ aw_attr_get_esd_enable, aw_attr_set_esd_enable);
-+static DEVICE_ATTR(vbat, S_IWUSR | S_IRUGO,
-+ aw_attr_get_vbat, aw_attr_set_vbat);
-+static DEVICE_ATTR(vmax, S_IWUSR | S_IRUGO,
-+ aw_attr_get_vmax, aw_attr_set_vmax);
-+
-+static DEVICE_ATTR(monitor_switch, S_IWUSR | S_IRUGO,
-+ aw_attr_get_monitor_switch, aw_attr_set_monitor_switch);
-+static DEVICE_ATTR(monitor_time, S_IWUSR | S_IRUGO,
-+ aw_attr_get_monitor_time, aw_attr_set_monitor_time);
-+static DEVICE_ATTR(monitor_count, S_IWUSR | S_IRUGO,
-+ aw_attr_get_monitor_count, aw_attr_set_monitor_count);
-+static DEVICE_ATTR(rx, S_IWUSR | S_IRUGO,
-+ aw_attr_get_rx, aw_attr_set_rx);
-+
-+static struct attribute *aw_monitor_vol_adjust[] = {
-+ &dev_attr_esd_enable.attr,
-+ &dev_attr_vbat.attr,
-+ &dev_attr_vmax.attr,
-+ NULL
-+};
-+
-+static struct attribute_group aw_monitor_vol_adjust_group = {
-+ .attrs = aw_monitor_vol_adjust,
-+};
-+
-+static struct attribute *aw_monitor_control[] = {
-+ &dev_attr_monitor_switch.attr,
-+ &dev_attr_monitor_time.attr,
-+ &dev_attr_monitor_count.attr,
-+ &dev_attr_rx.attr,
-+ NULL
-+};
-+
-+static struct attribute_group aw_monitor_control_group = {
-+ .attrs = aw_monitor_control,
-+};
-+
-+/***************************************************************************
-+ *
-+ * aw87xxx monitor init
-+ *
-+ ***************************************************************************/
-+static void aw_monitor_dtsi_parse(struct device *dev,
-+ struct aw_monitor *monitor,
-+ struct device_node *dev_node)
-+{
-+ int ret = -1;
-+ const char *esd_enable;
-+
-+ ret = of_property_read_string(dev_node, "esd-enable", &esd_enable);
-+ if (ret < 0) {
-+ AW_DEV_LOGI(dev, "esd_enable parse failed, user default[disable]");
-+ monitor->esd_enable = AW_ESD_DISABLE;
-+ } else {
-+ if (!strcmp(esd_enable, "true"))
-+ monitor->esd_enable = AW_ESD_ENABLE;
-+ else
-+ monitor->esd_enable = AW_ESD_DISABLE;
-+
-+ AW_DEV_LOGI(dev, "parse esd-enable=[%s]",
-+ monitor->esd_enable ? "true" : "false");
-+ }
-+}
-+
-+void aw87xxx_monitor_init(struct device *dev, struct aw_monitor *monitor,
-+ struct device_node *dev_node)
-+{
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+
-+ monitor->dev_index = aw87xxx->dev_index;
-+ monitor->monitor_hdr.monitor_time = AW_DEFAULT_MONITOR_TIME;
-+
-+ aw_monitor_dtsi_parse(dev, monitor, dev_node);
-+
-+ /* get platform open dsp type */
-+ monitor->open_dsp_en = aw87xxx_dsp_isEnable();
-+
-+ ret = sysfs_create_group(&dev->kobj, &aw_monitor_vol_adjust_group);
-+ if (ret < 0)
-+ AW_DEV_LOGE(dev, "failed to create monitor vol_adjust sysfs nodes");
-+
-+ INIT_DELAYED_WORK(&monitor->with_dsp_work, aw_monitor_work_func);
-+
-+ if (monitor->open_dsp_en) {
-+ ret = sysfs_create_group(&dev->kobj, &aw_monitor_control_group);
-+ if (ret < 0)
-+ AW_DEV_LOGE(dev, "failed to create monitor dsp control sysfs nodes");
-+ }
-+
-+ if (!ret)
-+ AW_DEV_LOGI(dev, "monitor init succeed");
-+}
-+
-+void aw87xxx_monitor_exit(struct aw_monitor *monitor)
-+{
-+ struct aw87xxx *aw87xxx =
-+ container_of(monitor, struct aw87xxx, monitor);
-+ /*rm attr node*/
-+ sysfs_remove_group(&aw87xxx->dev->kobj,
-+ &aw_monitor_vol_adjust_group);
-+
-+ aw87xxx_monitor_stop(monitor);
-+
-+ if (monitor->open_dsp_en) {
-+ sysfs_remove_group(&aw87xxx->dev->kobj,
-+ &aw_monitor_control_group);
-+ }
-+}
-+
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_monitor.h b/sound/soc/codecs/aw87xxx/aw87xxx_monitor.h
-new file mode 100644
-index 000000000..4b0282b41
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_monitor.h
-@@ -0,0 +1,96 @@
-+#ifndef __AW87XXX_MONITOR_H__
-+#define __AW87XXX_MONITOR_H__
-+
-+#define AW_WAIT_DSP_OPEN_TIME (3000)
-+#define AW_VBAT_CAPACITY_MIN (0)
-+#define AW_VBAT_CAPACITY_MAX (100)
-+#define AW_VMAX_INIT_VAL (0xFFFFFFFF)
-+#define AW_VBAT_MAX (100)
-+#define AW_VMAX_MAX (0)
-+#define AW_DEFAULT_MONITOR_TIME (3000)
-+#define AW_WAIT_TIME (3000)
-+#define REG_STATUS_CHECK_MAX (10)
-+#define AW_ESD_CHECK_DELAY (1)
-+
-+#define AW_ESD_ENABLE (true)
-+#define AW_ESD_DISABLE (false)
-+#define AW_ESD_ENABLE_STRLEN (16)
-+
-+enum aw_monitor_init {
-+ AW_MONITOR_CFG_WAIT = 0,
-+ AW_MONITOR_CFG_OK = 1,
-+};
-+
-+enum aw_monitor_hdr_info {
-+ AW_MONITOR_HDR_DATA_SIZE = 0x00000004,
-+ AW_MONITOR_HDR_DATA_BYTE_LEN = 0x00000004,
-+};
-+
-+enum aw_monitor_data_ver {
-+ AW_MONITOR_DATA_VER = 0x00000001,
-+ AW_MONITOR_DATA_VER_MAX,
-+};
-+
-+enum aw_monitor_first_enter {
-+ AW_FIRST_ENTRY = 0,
-+ AW_NOT_FIRST_ENTRY = 1,
-+};
-+
-+struct aw_bin_header {
-+ uint32_t check_sum;
-+ uint32_t header_ver;
-+ uint32_t bin_data_type;
-+ uint32_t bin_data_ver;
-+ uint32_t bin_data_size;
-+ uint32_t ui_ver;
-+ char product[8];
-+ uint32_t addr_byte_len;
-+ uint32_t data_byte_len;
-+ uint32_t device_addr;
-+ uint32_t reserve[4];
-+};
-+
-+struct aw_monitor_header {
-+ uint32_t monitor_switch;
-+ uint32_t monitor_time;
-+ uint32_t monitor_count;
-+ uint32_t step_count;
-+ uint32_t reserve[4];
-+};
-+
-+struct vmax_step_config {
-+ uint32_t vbat_min;
-+ uint32_t vbat_max;
-+ int vmax_vol;
-+};
-+
-+struct aw_monitor {
-+ bool open_dsp_en;
-+ bool esd_enable;
-+ int32_t dev_index;
-+ uint8_t first_entry;
-+ uint8_t timer_cnt;
-+ uint32_t vbat_sum;
-+ int32_t custom_capacity;
-+ uint32_t pre_vmax;
-+
-+ int bin_status;
-+ struct aw_monitor_header monitor_hdr;
-+ struct vmax_step_config *vmax_cfg;
-+
-+ struct delayed_work with_dsp_work;
-+};
-+
-+void aw87xxx_monitor_cfg_free(struct aw_monitor *monitor);
-+int aw87xxx_monitor_bin_parse(struct device *dev,
-+ char *monitor_data, uint32_t data_len);
-+void aw87xxx_monitor_stop(struct aw_monitor *monitor);
-+void aw87xxx_monitor_start(struct aw_monitor *monitor);
-+int aw87xxx_monitor_no_dsp_get_vmax(struct aw_monitor *monitor,
-+ int32_t *vmax);
-+void aw87xxx_monitor_init(struct device *dev, struct aw_monitor *monitor,
-+ struct device_node *dev_node);
-+void aw87xxx_monitor_exit(struct aw_monitor *monitor);
-+int aw87xxx_dev_monitor_switch_set(struct aw_monitor *monitor, uint32_t enable);
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_18_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_18_reg.h
-new file mode 100644
-index 000000000..7b95d2252
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_18_reg.h
-@@ -0,0 +1,2315 @@
-+#ifndef __AW87XXX_PID_18_REG_H__
-+#define __AW87XXX_PID_18_REG_H__
-+
-+/* registers list */
-+#define AW87XXX_PID_18_CHIPID_REG (0x00)
-+#define AW87XXX_PID_18_SYSST_REG (0x01)
-+#define AW87XXX_PID_18_SYSINT_REG (0x02)
-+#define AW87XXX_PID_18_SYSCTRL_REG (0x03)
-+#define AW87XXX_PID_18_CPOC_REG (0x04)
-+#define AW87XXX_PID_18_CLASSD_REG (0x05)
-+#define AW87XXX_PID_18_MADPVTH_REG (0x06)
-+#define AW87XXX_PID_18_A3PARAM_REG (0x07)
-+#define AW87XXX_PID_18_A3A2PO_REG (0x08)
-+#define AW87XXX_PID_18_A2PARAM_REG (0x09)
-+#define AW87XXX_PID_18_A1PARAM_REG (0x0A)
-+#define AW87XXX_PID_18_POPCLK_REG (0x0B)
-+#define AW87XXX_PID_18_GTDRCPSS_REG (0x0C)
-+#define AW87XXX_PID_18_MULTI_REG (0x0D)
-+#define AW87XXX_PID_18_DFT1_REG (0x61)
-+#define AW87XXX_PID_18_DFT2_REG (0x62)
-+#define AW87XXX_PID_18_DFT3_REG (0x63)
-+#define AW87XXX_PID_18_DFT4_REG (0x64)
-+#define AW87XXX_PID_18_DFT5_REG (0x65)
-+#define AW87XXX_PID_18_DFT6_REG (0x66)
-+
-+#define AW87XXX_PID_18_CLASSD_DEFAULT (0x10)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_18_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_18_REG_MAX (0x67)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_18_reg_access[AW87XXX_PID_18_REG_MAX] = {
-+ [AW87XXX_PID_18_CHIPID_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_18_SYSST_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_18_SYSINT_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_18_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_CPOC_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_CLASSD_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_MADPVTH_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_A3PARAM_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_A3A2PO_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_A2PARAM_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_A1PARAM_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_POPCLK_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_GTDRCPSS_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_MULTI_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_DFT1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_DFT2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_DFT3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_DFT4_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_DFT5_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_18_DFT6_REG] = (REG_RD_ACCESS),
-+};
-+
-+/* detail information of registers begin */
-+/* CHIPID (0x00) detail */
-+/* IDCODE bit 7:0 (CHIPID 0x00) */
-+#define AW87XXX_PID_18_IDCODE_START_BIT (0)
-+#define AW87XXX_PID_18_IDCODE_BITS_LEN (8)
-+#define AW87XXX_PID_18_IDCODE_MASK \
-+ (~(((1<<AW87XXX_PID_18_IDCODE_BITS_LEN)-1) << AW87XXX_PID_18_IDCODE_START_BIT))
-+
-+#define AW87XXX_PID_18_IDCODE_DEFAULT_VALUE (0x18)
-+#define AW87XXX_PID_18_IDCODE_DEFAULT \
-+ (AW87XXX_PID_18_IDCODE_DEFAULT_VALUE << AW87XXX_PID_18_IDCODE_START_BIT)
-+
-+/* default value of CHIPID (0x00) */
-+/* #define AW87XXX_PID_18_CHIPID_DEFAULT (0x18) */
-+
-+/* SYSST (0x01) detail */
-+/* UVLOS bit 7 (SYSST 0x01) */
-+#define AW87XXX_PID_18_UVLOS_START_BIT (7)
-+#define AW87XXX_PID_18_UVLOS_BITS_LEN (1)
-+#define AW87XXX_PID_18_UVLOS_MASK \
-+ (~(((1<<AW87XXX_PID_18_UVLOS_BITS_LEN)-1) << AW87XXX_PID_18_UVLOS_START_BIT))
-+
-+#define AW87XXX_PID_18_UVLOS_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_18_UVLOS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_18_UVLOS_NORMAL_OPERATION << AW87XXX_PID_18_UVLOS_START_BIT)
-+
-+#define AW87XXX_PID_18_UVLOS_VBAT_UNDER_VOLTAGE (1)
-+#define AW87XXX_PID_18_UVLOS_VBAT_UNDER_VOLTAGE_VALUE \
-+ (AW87XXX_PID_18_UVLOS_VBAT_UNDER_VOLTAGE << AW87XXX_PID_18_UVLOS_START_BIT)
-+
-+#define AW87XXX_PID_18_UVLOS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_UVLOS_DEFAULT \
-+ (AW87XXX_PID_18_UVLOS_DEFAULT_VALUE << AW87XXX_PID_18_UVLOS_START_BIT)
-+
-+/* OTNS bit 6 (SYSST 0x01) */
-+#define AW87XXX_PID_18_OTNS_START_BIT (6)
-+#define AW87XXX_PID_18_OTNS_BITS_LEN (1)
-+#define AW87XXX_PID_18_OTNS_MASK \
-+ (~(((1<<AW87XXX_PID_18_OTNS_BITS_LEN)-1) << AW87XXX_PID_18_OTNS_START_BIT))
-+
-+#define AW87XXX_PID_18_OTNS_PA_OVER_TEMPRETURE_PROTECTION_DETECTED (0)
-+#define AW87XXX_PID_18_OTNS_PA_OVER_TEMPRETURE_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_18_OTNS_PA_OVER_TEMPRETURE_PROTECTION_DETECTED << AW87XXX_PID_18_OTNS_START_BIT)
-+
-+#define AW87XXX_PID_18_OTNS_NORMAL_OPERATION (1)
-+#define AW87XXX_PID_18_OTNS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_18_OTNS_NORMAL_OPERATION << AW87XXX_PID_18_OTNS_START_BIT)
-+
-+#define AW87XXX_PID_18_OTNS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_OTNS_DEFAULT \
-+ (AW87XXX_PID_18_OTNS_DEFAULT_VALUE << AW87XXX_PID_18_OTNS_START_BIT)
-+
-+/* OC_FLAGS bit 5 (SYSST 0x01) */
-+#define AW87XXX_PID_18_OC_FLAGS_START_BIT (5)
-+#define AW87XXX_PID_18_OC_FLAGS_BITS_LEN (1)
-+#define AW87XXX_PID_18_OC_FLAGS_MASK \
-+ (~(((1<<AW87XXX_PID_18_OC_FLAGS_BITS_LEN)-1) << AW87XXX_PID_18_OC_FLAGS_START_BIT))
-+
-+#define AW87XXX_PID_18_OC_FLAGS_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_18_OC_FLAGS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_18_OC_FLAGS_NORMAL_OPERATION << AW87XXX_PID_18_OC_FLAGS_START_BIT)
-+
-+#define AW87XXX_PID_18_OC_FLAGS_PA_OVER_CURRENT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_18_OC_FLAGS_PA_OVER_CURRENT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_18_OC_FLAGS_PA_OVER_CURRENT_PROTECTION_DETECTED << AW87XXX_PID_18_OC_FLAGS_START_BIT)
-+
-+#define AW87XXX_PID_18_OC_FLAGS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_OC_FLAGS_DEFAULT \
-+ (AW87XXX_PID_18_OC_FLAGS_DEFAULT_VALUE << AW87XXX_PID_18_OC_FLAGS_START_BIT)
-+
-+/* VOUTDECTS bit 4 (SYSST 0x01) */
-+#define AW87XXX_PID_18_VOUTDECTS_START_BIT (4)
-+#define AW87XXX_PID_18_VOUTDECTS_BITS_LEN (1)
-+#define AW87XXX_PID_18_VOUTDECTS_MASK \
-+ (~(((1<<AW87XXX_PID_18_VOUTDECTS_BITS_LEN)-1) << AW87XXX_PID_18_VOUTDECTS_START_BIT))
-+
-+#define AW87XXX_PID_18_VOUTDECTS_PVDDBELOWVDD (0)
-+#define AW87XXX_PID_18_VOUTDECTS_PVDDBELOWVDD_VALUE \
-+ (AW87XXX_PID_18_VOUTDECTS_PVDDBELOWVDD << AW87XXX_PID_18_VOUTDECTS_START_BIT)
-+
-+#define AW87XXX_PID_18_VOUTDECTS_PVDDABOVEVDD (1)
-+#define AW87XXX_PID_18_VOUTDECTS_PVDDABOVEVDD_VALUE \
-+ (AW87XXX_PID_18_VOUTDECTS_PVDDABOVEVDD << AW87XXX_PID_18_VOUTDECTS_START_BIT)
-+
-+#define AW87XXX_PID_18_VOUTDECTS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_VOUTDECTS_DEFAULT \
-+ (AW87XXX_PID_18_VOUTDECTS_DEFAULT_VALUE << AW87XXX_PID_18_VOUTDECTS_START_BIT)
-+
-+/* STARTOKS bit 3 (SYSST 0x01) */
-+#define AW87XXX_PID_18_STARTOKS_START_BIT (3)
-+#define AW87XXX_PID_18_STARTOKS_BITS_LEN (1)
-+#define AW87XXX_PID_18_STARTOKS_MASK \
-+ (~(((1<<AW87XXX_PID_18_STARTOKS_BITS_LEN)-1) << AW87XXX_PID_18_STARTOKS_START_BIT))
-+
-+#define AW87XXX_PID_18_STARTOKS_CP_START_FAIL_DECTECTED (0)
-+#define AW87XXX_PID_18_STARTOKS_CP_START_FAIL_DECTECTED_VALUE \
-+ (AW87XXX_PID_18_STARTOKS_CP_START_FAIL_DECTECTED << AW87XXX_PID_18_STARTOKS_START_BIT)
-+
-+#define AW87XXX_PID_18_STARTOKS_NORMAL_OPERATION (1)
-+#define AW87XXX_PID_18_STARTOKS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_18_STARTOKS_NORMAL_OPERATION << AW87XXX_PID_18_STARTOKS_START_BIT)
-+
-+#define AW87XXX_PID_18_STARTOKS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_STARTOKS_DEFAULT \
-+ (AW87XXX_PID_18_STARTOKS_DEFAULT_VALUE << AW87XXX_PID_18_STARTOKS_START_BIT)
-+
-+/* VBGOKN1S bit 2 (SYSST 0x01) */
-+#define AW87XXX_PID_18_VBGOKN1S_START_BIT (2)
-+#define AW87XXX_PID_18_VBGOKN1S_BITS_LEN (1)
-+#define AW87XXX_PID_18_VBGOKN1S_MASK \
-+ (~(((1<<AW87XXX_PID_18_VBGOKN1S_BITS_LEN)-1) << AW87XXX_PID_18_VBGOKN1S_START_BIT))
-+
-+#define AW87XXX_PID_18_VBGOKN1S_NORMAL_WORKS (0)
-+#define AW87XXX_PID_18_VBGOKN1S_NORMAL_WORKS_VALUE \
-+ (AW87XXX_PID_18_VBGOKN1S_NORMAL_WORKS << AW87XXX_PID_18_VBGOKN1S_START_BIT)
-+
-+#define AW87XXX_PID_18_VBGOKN1S_ABNORMAL_WORKS (1)
-+#define AW87XXX_PID_18_VBGOKN1S_ABNORMAL_WORKS_VALUE \
-+ (AW87XXX_PID_18_VBGOKN1S_ABNORMAL_WORKS << AW87XXX_PID_18_VBGOKN1S_START_BIT)
-+
-+#define AW87XXX_PID_18_VBGOKN1S_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_VBGOKN1S_DEFAULT \
-+ (AW87XXX_PID_18_VBGOKN1S_DEFAULT_VALUE << AW87XXX_PID_18_VBGOKN1S_START_BIT)
-+
-+/* OVPS bit 1 (SYSST 0x01) */
-+#define AW87XXX_PID_18_OVPS_START_BIT (1)
-+#define AW87XXX_PID_18_OVPS_BITS_LEN (1)
-+#define AW87XXX_PID_18_OVPS_MASK \
-+ (~(((1<<AW87XXX_PID_18_OVPS_BITS_LEN)-1) << AW87XXX_PID_18_OVPS_START_BIT))
-+
-+#define AW87XXX_PID_18_OVPS_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_18_OVPS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_18_OVPS_NORMAL_OPERATION << AW87XXX_PID_18_OVPS_START_BIT)
-+
-+#define AW87XXX_PID_18_OVPS_CP_OVP_DETECTED (1)
-+#define AW87XXX_PID_18_OVPS_CP_OVP_DETECTED_VALUE \
-+ (AW87XXX_PID_18_OVPS_CP_OVP_DETECTED << AW87XXX_PID_18_OVPS_START_BIT)
-+
-+#define AW87XXX_PID_18_OVPS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_OVPS_DEFAULT \
-+ (AW87XXX_PID_18_OVPS_DEFAULT_VALUE << AW87XXX_PID_18_OVPS_START_BIT)
-+
-+/* CP_2PS bit 0 (SYSST 0x01) */
-+#define AW87XXX_PID_18_CP_2PS_START_BIT (0)
-+#define AW87XXX_PID_18_CP_2PS_BITS_LEN (1)
-+#define AW87XXX_PID_18_CP_2PS_MASK \
-+ (~(((1<<AW87XXX_PID_18_CP_2PS_BITS_LEN)-1) << AW87XXX_PID_18_CP_2PS_START_BIT))
-+
-+#define AW87XXX_PID_18_CP_2PS_WEAK_SIGNAL (0)
-+#define AW87XXX_PID_18_CP_2PS_WEAK_SIGNAL_VALUE \
-+ (AW87XXX_PID_18_CP_2PS_WEAK_SIGNAL << AW87XXX_PID_18_CP_2PS_START_BIT)
-+
-+#define AW87XXX_PID_18_CP_2PS_STRONG_SIGNAL (1)
-+#define AW87XXX_PID_18_CP_2PS_STRONG_SIGNAL_VALUE \
-+ (AW87XXX_PID_18_CP_2PS_STRONG_SIGNAL << AW87XXX_PID_18_CP_2PS_START_BIT)
-+
-+#define AW87XXX_PID_18_CP_2PS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_CP_2PS_DEFAULT \
-+ (AW87XXX_PID_18_CP_2PS_DEFAULT_VALUE << AW87XXX_PID_18_CP_2PS_START_BIT)
-+
-+/* default value of SYSST (0x01) */
-+/* #define AW87XXX_PID_18_SYSST_DEFAULT (0x00) */
-+
-+/* SYSINT (0x02) detail */
-+/* UVLOI bit 7 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_UVLOI_START_BIT (7)
-+#define AW87XXX_PID_18_UVLOI_BITS_LEN (1)
-+#define AW87XXX_PID_18_UVLOI_MASK \
-+ (~(((1<<AW87XXX_PID_18_UVLOI_BITS_LEN)-1) << AW87XXX_PID_18_UVLOI_START_BIT))
-+
-+#define AW87XXX_PID_18_UVLOI_SIGNAL_STATUS_DO_NOT_CHANGE (0)
-+#define AW87XXX_PID_18_UVLOI_SIGNAL_STATUS_DO_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_18_UVLOI_SIGNAL_STATUS_DO_NOT_CHANGE << AW87XXX_PID_18_UVLOI_START_BIT)
-+
-+#define AW87XXX_PID_18_UVLOI_UNDER_VOLTAGE_LOCK_OUT_DETECTED (1)
-+#define AW87XXX_PID_18_UVLOI_UNDER_VOLTAGE_LOCK_OUT_DETECTED_VALUE \
-+ (AW87XXX_PID_18_UVLOI_UNDER_VOLTAGE_LOCK_OUT_DETECTED << AW87XXX_PID_18_UVLOI_START_BIT)
-+
-+#define AW87XXX_PID_18_UVLOI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_UVLOI_DEFAULT \
-+ (AW87XXX_PID_18_UVLOI_DEFAULT_VALUE << AW87XXX_PID_18_UVLOI_START_BIT)
-+
-+/* OTNI bit 6 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_OTNI_START_BIT (6)
-+#define AW87XXX_PID_18_OTNI_BITS_LEN (1)
-+#define AW87XXX_PID_18_OTNI_MASK \
-+ (~(((1<<AW87XXX_PID_18_OTNI_BITS_LEN)-1) << AW87XXX_PID_18_OTNI_START_BIT))
-+
-+#define AW87XXX_PID_18_OTNI_SIGNAL_STATUS_DO_NOT_CHANGE (0)
-+#define AW87XXX_PID_18_OTNI_SIGNAL_STATUS_DO_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_18_OTNI_SIGNAL_STATUS_DO_NOT_CHANGE << AW87XXX_PID_18_OTNI_START_BIT)
-+
-+#define AW87XXX_PID_18_OTNI_OVER_TEMPRETURE_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_18_OTNI_OVER_TEMPRETURE_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_18_OTNI_OVER_TEMPRETURE_PROTECTION_DETECTED << AW87XXX_PID_18_OTNI_START_BIT)
-+
-+#define AW87XXX_PID_18_OTNI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_OTNI_DEFAULT \
-+ (AW87XXX_PID_18_OTNI_DEFAULT_VALUE << AW87XXX_PID_18_OTNI_START_BIT)
-+
-+/* OC_FLAGI bit 5 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_OC_FLAGI_START_BIT (5)
-+#define AW87XXX_PID_18_OC_FLAGI_BITS_LEN (1)
-+#define AW87XXX_PID_18_OC_FLAGI_MASK \
-+ (~(((1<<AW87XXX_PID_18_OC_FLAGI_BITS_LEN)-1) << AW87XXX_PID_18_OC_FLAGI_START_BIT))
-+
-+#define AW87XXX_PID_18_OC_FLAGI_SIGNAL_STATUS_DO_NOT_CHANGE (0)
-+#define AW87XXX_PID_18_OC_FLAGI_SIGNAL_STATUS_DO_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_18_OC_FLAGI_SIGNAL_STATUS_DO_NOT_CHANGE << AW87XXX_PID_18_OC_FLAGI_START_BIT)
-+
-+#define AW87XXX_PID_18_OC_FLAGI_PA_OVER_CURRENT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_18_OC_FLAGI_PA_OVER_CURRENT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_18_OC_FLAGI_PA_OVER_CURRENT_PROTECTION_DETECTED << AW87XXX_PID_18_OC_FLAGI_START_BIT)
-+
-+#define AW87XXX_PID_18_OC_FLAGI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_OC_FLAGI_DEFAULT \
-+ (AW87XXX_PID_18_OC_FLAGI_DEFAULT_VALUE << AW87XXX_PID_18_OC_FLAGI_START_BIT)
-+
-+/* VOUTDECTI bit 4 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_VOUTDECTI_START_BIT (4)
-+#define AW87XXX_PID_18_VOUTDECTI_BITS_LEN (1)
-+#define AW87XXX_PID_18_VOUTDECTI_MASK \
-+ (~(((1<<AW87XXX_PID_18_VOUTDECTI_BITS_LEN)-1) << AW87XXX_PID_18_VOUTDECTI_START_BIT))
-+
-+#define AW87XXX_PID_18_VOUTDECTI_PVDDBELOWVDD (0)
-+#define AW87XXX_PID_18_VOUTDECTI_PVDDBELOWVDD_VALUE \
-+ (AW87XXX_PID_18_VOUTDECTI_PVDDBELOWVDD << AW87XXX_PID_18_VOUTDECTI_START_BIT)
-+
-+#define AW87XXX_PID_18_VOUTDECTI_PVDDABOVEVDD (1)
-+#define AW87XXX_PID_18_VOUTDECTI_PVDDABOVEVDD_VALUE \
-+ (AW87XXX_PID_18_VOUTDECTI_PVDDABOVEVDD << AW87XXX_PID_18_VOUTDECTI_START_BIT)
-+
-+#define AW87XXX_PID_18_VOUTDECTI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_VOUTDECTI_DEFAULT \
-+ (AW87XXX_PID_18_VOUTDECTI_DEFAULT_VALUE << AW87XXX_PID_18_VOUTDECTI_START_BIT)
-+
-+/* STARTOKI bit 3 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_STARTOKI_START_BIT (3)
-+#define AW87XXX_PID_18_STARTOKI_BITS_LEN (1)
-+#define AW87XXX_PID_18_STARTOKI_MASK \
-+ (~(((1<<AW87XXX_PID_18_STARTOKI_BITS_LEN)-1) << AW87XXX_PID_18_STARTOKI_START_BIT))
-+
-+#define AW87XXX_PID_18_STARTOKI_SIGNAL_STATUS_DO_NOT_CHANGE (0)
-+#define AW87XXX_PID_18_STARTOKI_SIGNAL_STATUS_DO_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_18_STARTOKI_SIGNAL_STATUS_DO_NOT_CHANGE << AW87XXX_PID_18_STARTOKI_START_BIT)
-+
-+#define AW87XXX_PID_18_STARTOKI_CHARGEPUMB_START_UP_OK_DECTECTED (1)
-+#define AW87XXX_PID_18_STARTOKI_CHARGEPUMB_START_UP_OK_DECTECTED_VALUE \
-+ (AW87XXX_PID_18_STARTOKI_CHARGEPUMB_START_UP_OK_DECTECTED << AW87XXX_PID_18_STARTOKI_START_BIT)
-+
-+#define AW87XXX_PID_18_STARTOKI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_STARTOKI_DEFAULT \
-+ (AW87XXX_PID_18_STARTOKI_DEFAULT_VALUE << AW87XXX_PID_18_STARTOKI_START_BIT)
-+
-+/* VBGOKN1I bit 2 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_VBGOKN1I_START_BIT (2)
-+#define AW87XXX_PID_18_VBGOKN1I_BITS_LEN (1)
-+#define AW87XXX_PID_18_VBGOKN1I_MASK \
-+ (~(((1<<AW87XXX_PID_18_VBGOKN1I_BITS_LEN)-1) << AW87XXX_PID_18_VBGOKN1I_START_BIT))
-+
-+#define AW87XXX_PID_18_VBGOKN1I_NORMAL_WORKS (0)
-+#define AW87XXX_PID_18_VBGOKN1I_NORMAL_WORKS_VALUE \
-+ (AW87XXX_PID_18_VBGOKN1I_NORMAL_WORKS << AW87XXX_PID_18_VBGOKN1I_START_BIT)
-+
-+#define AW87XXX_PID_18_VBGOKN1I_ABNORMAL_WORKS (1)
-+#define AW87XXX_PID_18_VBGOKN1I_ABNORMAL_WORKS_VALUE \
-+ (AW87XXX_PID_18_VBGOKN1I_ABNORMAL_WORKS << AW87XXX_PID_18_VBGOKN1I_START_BIT)
-+
-+#define AW87XXX_PID_18_VBGOKN1I_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_VBGOKN1I_DEFAULT \
-+ (AW87XXX_PID_18_VBGOKN1I_DEFAULT_VALUE << AW87XXX_PID_18_VBGOKN1I_START_BIT)
-+
-+/* OVPI bit 1 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_OVPI_START_BIT (1)
-+#define AW87XXX_PID_18_OVPI_BITS_LEN (1)
-+#define AW87XXX_PID_18_OVPI_MASK \
-+ (~(((1<<AW87XXX_PID_18_OVPI_BITS_LEN)-1) << AW87XXX_PID_18_OVPI_START_BIT))
-+
-+#define AW87XXX_PID_18_OVPI_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_18_OVPI_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_18_OVPI_NORMAL_OPERATION << AW87XXX_PID_18_OVPI_START_BIT)
-+
-+#define AW87XXX_PID_18_OVPI_CP_OVP_DETECTED (1)
-+#define AW87XXX_PID_18_OVPI_CP_OVP_DETECTED_VALUE \
-+ (AW87XXX_PID_18_OVPI_CP_OVP_DETECTED << AW87XXX_PID_18_OVPI_START_BIT)
-+
-+#define AW87XXX_PID_18_OVPI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_OVPI_DEFAULT \
-+ (AW87XXX_PID_18_OVPI_DEFAULT_VALUE << AW87XXX_PID_18_OVPI_START_BIT)
-+
-+/* CP_2PI bit 0 (SYSINT 0x02) */
-+#define AW87XXX_PID_18_CP_2PI_START_BIT (0)
-+#define AW87XXX_PID_18_CP_2PI_BITS_LEN (1)
-+#define AW87XXX_PID_18_CP_2PI_MASK \
-+ (~(((1<<AW87XXX_PID_18_CP_2PI_BITS_LEN)-1) << AW87XXX_PID_18_CP_2PI_START_BIT))
-+
-+#define AW87XXX_PID_18_CP_2PI_WEAK_SIGNAL (0)
-+#define AW87XXX_PID_18_CP_2PI_WEAK_SIGNAL_VALUE \
-+ (AW87XXX_PID_18_CP_2PI_WEAK_SIGNAL << AW87XXX_PID_18_CP_2PI_START_BIT)
-+
-+#define AW87XXX_PID_18_CP_2PI_STRONG_SIGNAL (1)
-+#define AW87XXX_PID_18_CP_2PI_STRONG_SIGNAL_VALUE \
-+ (AW87XXX_PID_18_CP_2PI_STRONG_SIGNAL << AW87XXX_PID_18_CP_2PI_START_BIT)
-+
-+#define AW87XXX_PID_18_CP_2PI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_CP_2PI_DEFAULT \
-+ (AW87XXX_PID_18_CP_2PI_DEFAULT_VALUE << AW87XXX_PID_18_CP_2PI_START_BIT)
-+
-+/* default value of SYSINT (0x02) */
-+/* #define AW87XXX_PID_18_SYSINT_DEFAULT (0x00) */
-+
-+/* SYSCTRL (0x03) detail */
-+/* EN_SS bit 7 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_EN_SS_START_BIT (7)
-+#define AW87XXX_PID_18_EN_SS_BITS_LEN (1)
-+#define AW87XXX_PID_18_EN_SS_MASK \
-+ (~(((1<<AW87XXX_PID_18_EN_SS_BITS_LEN)-1) << AW87XXX_PID_18_EN_SS_START_BIT))
-+
-+#define AW87XXX_PID_18_EN_SS_DISABLE_REG_FSS11001P6MHZ (0)
-+#define AW87XXX_PID_18_EN_SS_DISABLE_REG_FSS11001P6MHZ_VALUE \
-+ (AW87XXX_PID_18_EN_SS_DISABLE_REG_FSS11001P6MHZ << AW87XXX_PID_18_EN_SS_START_BIT)
-+
-+#define AW87XXX_PID_18_EN_SS_ENABLE (1)
-+#define AW87XXX_PID_18_EN_SS_ENABLE_VALUE \
-+ (AW87XXX_PID_18_EN_SS_ENABLE << AW87XXX_PID_18_EN_SS_START_BIT)
-+
-+#define AW87XXX_PID_18_EN_SS_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_EN_SS_DEFAULT \
-+ (AW87XXX_PID_18_EN_SS_DEFAULT_VALUE << AW87XXX_PID_18_EN_SS_START_BIT)
-+
-+/* REG_EN_SW bit 6 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_EN_SW_START_BIT (6)
-+#define AW87XXX_PID_18_REG_EN_SW_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_SW_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_SW_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_SW_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_SW_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_SW_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_SW_DISABLE << AW87XXX_PID_18_REG_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_SW_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_SW_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_SW_ENABLE << AW87XXX_PID_18_REG_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_SW_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_EN_SW_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_SW_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_SW_START_BIT)
-+
-+/* REG_EN_PA bit 5 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_EN_PA_START_BIT (5)
-+#define AW87XXX_PID_18_REG_EN_PA_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_PA_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_PA_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_PA_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_PA_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_PA_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_PA_DISABLE << AW87XXX_PID_18_REG_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_PA_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_PA_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_PA_ENABLE << AW87XXX_PID_18_REG_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_PA_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_EN_PA_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_PA_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_PA_START_BIT)
-+
-+/* REG_EN_ADAP bit 4 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_EN_ADAP_START_BIT (4)
-+#define AW87XXX_PID_18_REG_EN_ADAP_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_ADAP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_ADAP_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_ADAP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_ADAP_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_ADAP_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_ADAP_DISABLE << AW87XXX_PID_18_REG_EN_ADAP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_ADAP_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_ADAP_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_ADAP_ENABLE << AW87XXX_PID_18_REG_EN_ADAP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_ADAP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_ADAP_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_ADAP_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_ADAP_START_BIT)
-+
-+/* REG_EN_MPD bit 3 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_EN_MPD_START_BIT (3)
-+#define AW87XXX_PID_18_REG_EN_MPD_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_MPD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_MPD_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_MPD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_MPD_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_MPD_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_MPD_DISABLE << AW87XXX_PID_18_REG_EN_MPD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_MPD_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_MPD_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_MPD_ENABLE << AW87XXX_PID_18_REG_EN_MPD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_MPD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_MPD_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_MPD_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_MPD_START_BIT)
-+
-+/* REG_EN_CP bit 2 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_EN_CP_START_BIT (2)
-+#define AW87XXX_PID_18_REG_EN_CP_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_CP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_CP_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_CP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_CP_DISABLE_PVDDVBAT_DIRECT_TROUGH_MODE (0)
-+#define AW87XXX_PID_18_REG_EN_CP_DISABLE_PVDDVBAT_DIRECT_TROUGH_MODE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_CP_DISABLE_PVDDVBAT_DIRECT_TROUGH_MODE << AW87XXX_PID_18_REG_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_CP_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_CP_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_CP_ENABLE << AW87XXX_PID_18_REG_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_CP_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_EN_CP_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_CP_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_CP_START_BIT)
-+
-+/* REG_REC_MODE bit 1 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_REC_MODE_START_BIT (1)
-+#define AW87XXX_PID_18_REG_REC_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_REC_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_REC_MODE_BITS_LEN)-1) << AW87XXX_PID_18_REG_REC_MODE_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_REC_MODE_DISABLE (0)
-+#define AW87XXX_PID_18_REG_REC_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_REC_MODE_DISABLE << AW87XXX_PID_18_REG_REC_MODE_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_REC_MODE_ENABLE (1)
-+#define AW87XXX_PID_18_REG_REC_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_REC_MODE_ENABLE << AW87XXX_PID_18_REG_REC_MODE_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_REC_MODE_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_REC_MODE_DEFAULT \
-+ (AW87XXX_PID_18_REG_REC_MODE_DEFAULT_VALUE << AW87XXX_PID_18_REG_REC_MODE_START_BIT)
-+
-+/* REG_FORCE_2X bit 0 (SYSCTRL 0x03) */
-+#define AW87XXX_PID_18_REG_FORCE_2X_START_BIT (0)
-+#define AW87XXX_PID_18_REG_FORCE_2X_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_FORCE_2X_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_FORCE_2X_BITS_LEN)-1) << AW87XXX_PID_18_REG_FORCE_2X_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_FORCE_2X_DISABLE_CPS_WORKING_STATUS_DEPENDS_ON_THE_SYSTEM (0)
-+#define AW87XXX_PID_18_REG_FORCE_2X_DISABLE_CPS_WORKING_STATUS_DEPENDS_ON_THE_SYSTEM_VALUE \
-+ (AW87XXX_PID_18_REG_FORCE_2X_DISABLE_CPS_WORKING_STATUS_DEPENDS_ON_THE_SYSTEM << AW87XXX_PID_18_REG_FORCE_2X_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FORCE_2X_ENABLE_FORCE_THE_CP_WORKS_IN_X2_MODE (1)
-+#define AW87XXX_PID_18_REG_FORCE_2X_ENABLE_FORCE_THE_CP_WORKS_IN_X2_MODE_VALUE \
-+ (AW87XXX_PID_18_REG_FORCE_2X_ENABLE_FORCE_THE_CP_WORKS_IN_X2_MODE << AW87XXX_PID_18_REG_FORCE_2X_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FORCE_2X_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_FORCE_2X_DEFAULT \
-+ (AW87XXX_PID_18_REG_FORCE_2X_DEFAULT_VALUE << AW87XXX_PID_18_REG_FORCE_2X_START_BIT)
-+
-+/* default value of SYSCTRL (0x03) */
-+/* #define AW87XXX_PID_18_SYSCTRL_DEFAULT (0xE5) */
-+
-+/* CPOC (0x04) detail */
-+/* REG_CP_OVP bit 5:2 (CPOC 0x04) */
-+#define AW87XXX_PID_18_REG_CP_OVP_START_BIT (2)
-+#define AW87XXX_PID_18_REG_CP_OVP_BITS_LEN (4)
-+#define AW87XXX_PID_18_REG_CP_OVP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CP_OVP_BITS_LEN)-1) << AW87XXX_PID_18_REG_CP_OVP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_8P5V (8)
-+#define AW87XXX_PID_18_REG_CP_OVP_8P5V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_8P5V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_8P25V (7)
-+#define AW87XXX_PID_18_REG_CP_OVP_8P25V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_8P25V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_8V (6)
-+#define AW87XXX_PID_18_REG_CP_OVP_8V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_8V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_7P75V (5)
-+#define AW87XXX_PID_18_REG_CP_OVP_7P75V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_7P75V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_7P5V (4)
-+#define AW87XXX_PID_18_REG_CP_OVP_7P5V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_7P5V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_7P25V (3)
-+#define AW87XXX_PID_18_REG_CP_OVP_7P25V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_7P25V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_7V (2)
-+#define AW87XXX_PID_18_REG_CP_OVP_7V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_7V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_6P75V (1)
-+#define AW87XXX_PID_18_REG_CP_OVP_6P75V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_6P75V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_6P5V (0)
-+#define AW87XXX_PID_18_REG_CP_OVP_6P5V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_6P5V << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_DEFAULT_VALUE (0x6)
-+#define AW87XXX_PID_18_REG_CP_OVP_DEFAULT \
-+ (AW87XXX_PID_18_REG_CP_OVP_DEFAULT_VALUE << AW87XXX_PID_18_REG_CP_OVP_START_BIT)
-+
-+/* REG_OC_DELAY bit 1:0 (CPOC 0x04) */
-+#define AW87XXX_PID_18_REG_OC_DELAY_START_BIT (0)
-+#define AW87XXX_PID_18_REG_OC_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_OC_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_OC_DELAY_BITS_LEN)-1) << AW87XXX_PID_18_REG_OC_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_OC_DELAY_60NS (0)
-+#define AW87XXX_PID_18_REG_OC_DELAY_60NS_VALUE \
-+ (AW87XXX_PID_18_REG_OC_DELAY_60NS << AW87XXX_PID_18_REG_OC_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_OC_DELAY_80NS (1)
-+#define AW87XXX_PID_18_REG_OC_DELAY_80NS_VALUE \
-+ (AW87XXX_PID_18_REG_OC_DELAY_80NS << AW87XXX_PID_18_REG_OC_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_OC_DELAY_90NS (2)
-+#define AW87XXX_PID_18_REG_OC_DELAY_90NS_VALUE \
-+ (AW87XXX_PID_18_REG_OC_DELAY_90NS << AW87XXX_PID_18_REG_OC_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_OC_DELAY_110NS (3)
-+#define AW87XXX_PID_18_REG_OC_DELAY_110NS_VALUE \
-+ (AW87XXX_PID_18_REG_OC_DELAY_110NS << AW87XXX_PID_18_REG_OC_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_OC_DELAY_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_OC_DELAY_DEFAULT \
-+ (AW87XXX_PID_18_REG_OC_DELAY_DEFAULT_VALUE << AW87XXX_PID_18_REG_OC_DELAY_START_BIT)
-+
-+/* default value of CPOC (0x04) */
-+/* #define AW87XXX_PID_18_CPOC_DEFAULT (0x18) */
-+
-+/* CLASSD (0x05) detail */
-+/* REG_BK1 bit 7 (CLASSD 0x05) */
-+#define AW87XXX_PID_18_REG_BK1_START_BIT (7)
-+#define AW87XXX_PID_18_REG_BK1_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_BK1_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_BK1_BITS_LEN)-1) << AW87XXX_PID_18_REG_BK1_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_BK1_22MV (0)
-+#define AW87XXX_PID_18_REG_BK1_22MV_VALUE \
-+ (AW87XXX_PID_18_REG_BK1_22MV << AW87XXX_PID_18_REG_BK1_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_BK1_15MV (1)
-+#define AW87XXX_PID_18_REG_BK1_15MV_VALUE \
-+ (AW87XXX_PID_18_REG_BK1_15MV << AW87XXX_PID_18_REG_BK1_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_BK1_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_BK1_DEFAULT \
-+ (AW87XXX_PID_18_REG_BK1_DEFAULT_VALUE << AW87XXX_PID_18_REG_BK1_START_BIT)
-+
-+/* REG_BK2 bit 6 (CLASSD 0x05) */
-+#define AW87XXX_PID_18_REG_BK2_START_BIT (6)
-+#define AW87XXX_PID_18_REG_BK2_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_BK2_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_BK2_BITS_LEN)-1) << AW87XXX_PID_18_REG_BK2_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_BK2_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_BK2_DEFAULT \
-+ (AW87XXX_PID_18_REG_BK2_DEFAULT_VALUE << AW87XXX_PID_18_REG_BK2_START_BIT)
-+
-+/* REG_BK3 bit 5 (CLASSD 0x05) */
-+#define AW87XXX_PID_18_REG_BK3_START_BIT (5)
-+#define AW87XXX_PID_18_REG_BK3_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_BK3_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_BK3_BITS_LEN)-1) << AW87XXX_PID_18_REG_BK3_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_BK3_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_BK3_DEFAULT \
-+ (AW87XXX_PID_18_REG_BK3_DEFAULT_VALUE << AW87XXX_PID_18_REG_BK3_START_BIT)
-+
-+/* REG_D_GAIN bit 4:0 (CLASSD 0x05) */
-+#define AW87XXX_PID_18_REG_D_GAIN_START_BIT (0)
-+#define AW87XXX_PID_18_REG_D_GAIN_BITS_LEN (5)
-+#define AW87XXX_PID_18_REG_D_GAIN_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_D_GAIN_BITS_LEN)-1) << AW87XXX_PID_18_REG_D_GAIN_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_0DB (0)
-+#define AW87XXX_PID_18_REG_D_GAIN_0DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_0DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_1P5DB (1)
-+#define AW87XXX_PID_18_REG_D_GAIN_1P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_1P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_3DB (2)
-+#define AW87XXX_PID_18_REG_D_GAIN_3DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_3DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_4P5DB (3)
-+#define AW87XXX_PID_18_REG_D_GAIN_4P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_4P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_6DB (4)
-+#define AW87XXX_PID_18_REG_D_GAIN_6DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_6DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_7P5DB (5)
-+#define AW87XXX_PID_18_REG_D_GAIN_7P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_7P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_9DB (6)
-+#define AW87XXX_PID_18_REG_D_GAIN_9DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_9DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_10P5DB (7)
-+#define AW87XXX_PID_18_REG_D_GAIN_10P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_10P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_12DB (8)
-+#define AW87XXX_PID_18_REG_D_GAIN_12DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_12DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_13P5DB (9)
-+#define AW87XXX_PID_18_REG_D_GAIN_13P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_13P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_15DB (10)
-+#define AW87XXX_PID_18_REG_D_GAIN_15DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_15DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_16P5DB (11)
-+#define AW87XXX_PID_18_REG_D_GAIN_16P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_16P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_18DB (12)
-+#define AW87XXX_PID_18_REG_D_GAIN_18DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_18DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_19P5DB (13)
-+#define AW87XXX_PID_18_REG_D_GAIN_19P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_19P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_21DB (14)
-+#define AW87XXX_PID_18_REG_D_GAIN_21DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_21DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_22P5DB (15)
-+#define AW87XXX_PID_18_REG_D_GAIN_22P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_22P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_24DB (16)
-+#define AW87XXX_PID_18_REG_D_GAIN_24DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_24DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_25P5DB (17)
-+#define AW87XXX_PID_18_REG_D_GAIN_25P5DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_25P5DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_27DB (18)
-+#define AW87XXX_PID_18_REG_D_GAIN_27DB_VALUE \
-+ (AW87XXX_PID_18_REG_D_GAIN_27DB << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_D_GAIN_DEFAULT_VALUE (0x10)
-+#define AW87XXX_PID_18_REG_D_GAIN_DEFAULT \
-+ (AW87XXX_PID_18_REG_D_GAIN_DEFAULT_VALUE << AW87XXX_PID_18_REG_D_GAIN_START_BIT)
-+
-+/* default value of CLASSD (0x05) */
-+/* #define AW87XXX_PID_18_CLASSD_DEFAULT (0x10) */
-+
-+/* MADPVTH (0x06) detail */
-+/* REG_ADAP_VTH bit 3:2 (MADPVTH 0x06) */
-+#define AW87XXX_PID_18_REG_ADAP_VTH_START_BIT (2)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_ADAP_VTH_BITS_LEN)-1) << AW87XXX_PID_18_REG_ADAP_VTH_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P1W0P05W (0)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P1W0P05W_VALUE \
-+ (AW87XXX_PID_18_REG_ADAP_VTH_0P1W0P05W << AW87XXX_PID_18_REG_ADAP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P2W0P15W (1)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P2W0P15W_VALUE \
-+ (AW87XXX_PID_18_REG_ADAP_VTH_0P2W0P15W << AW87XXX_PID_18_REG_ADAP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P3W0P25W (2)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P3W0P25W_VALUE \
-+ (AW87XXX_PID_18_REG_ADAP_VTH_0P3W0P25W << AW87XXX_PID_18_REG_ADAP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P4W0P35W (3)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_0P4W0P35W_VALUE \
-+ (AW87XXX_PID_18_REG_ADAP_VTH_0P4W0P35W << AW87XXX_PID_18_REG_ADAP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_ADAP_VTH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_ADAP_VTH_DEFAULT \
-+ (AW87XXX_PID_18_REG_ADAP_VTH_DEFAULT_VALUE << AW87XXX_PID_18_REG_ADAP_VTH_START_BIT)
-+
-+/* REG_MPD_VTH bit 1:0 (MADPVTH 0x06) */
-+#define AW87XXX_PID_18_REG_MPD_VTH_START_BIT (0)
-+#define AW87XXX_PID_18_REG_MPD_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_MPD_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_MPD_VTH_BITS_LEN)-1) << AW87XXX_PID_18_REG_MPD_VTH_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_MPD_VTH_8P1MW3P6MW (0)
-+#define AW87XXX_PID_18_REG_MPD_VTH_8P1MW3P6MW_VALUE \
-+ (AW87XXX_PID_18_REG_MPD_VTH_8P1MW3P6MW << AW87XXX_PID_18_REG_MPD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_MPD_VTH_11MW5P6MW (1)
-+#define AW87XXX_PID_18_REG_MPD_VTH_11MW5P6MW_VALUE \
-+ (AW87XXX_PID_18_REG_MPD_VTH_11MW5P6MW << AW87XXX_PID_18_REG_MPD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_MPD_VTH_14P4MW8P1MW (2)
-+#define AW87XXX_PID_18_REG_MPD_VTH_14P4MW8P1MW_VALUE \
-+ (AW87XXX_PID_18_REG_MPD_VTH_14P4MW8P1MW << AW87XXX_PID_18_REG_MPD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_MPD_VTH_18P2MW11W (3)
-+#define AW87XXX_PID_18_REG_MPD_VTH_18P2MW11W_VALUE \
-+ (AW87XXX_PID_18_REG_MPD_VTH_18P2MW11W << AW87XXX_PID_18_REG_MPD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_MPD_VTH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_MPD_VTH_DEFAULT \
-+ (AW87XXX_PID_18_REG_MPD_VTH_DEFAULT_VALUE << AW87XXX_PID_18_REG_MPD_VTH_START_BIT)
-+
-+/* default value of MADPVTH (0x06) */
-+/* #define AW87XXX_PID_18_MADPVTH_DEFAULT (0x05) */
-+
-+/* A3PARAM (0x07) detail */
-+/* REG_AGC3_RT bit 7:5 (A3PARAM 0x07) */
-+#define AW87XXX_PID_18_REG_AGC3_RT_START_BIT (5)
-+#define AW87XXX_PID_18_REG_AGC3_RT_BITS_LEN (3)
-+#define AW87XXX_PID_18_REG_AGC3_RT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC3_RT_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC3_RT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_69P12MS (0)
-+#define AW87XXX_PID_18_REG_AGC3_RT_69P12MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_69P12MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_138P24MS (1)
-+#define AW87XXX_PID_18_REG_AGC3_RT_138P24MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_138P24MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_276P48MS (2)
-+#define AW87XXX_PID_18_REG_AGC3_RT_276P48MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_276P48MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_552P96MS (3)
-+#define AW87XXX_PID_18_REG_AGC3_RT_552P96MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_552P96MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_1107MS (4)
-+#define AW87XXX_PID_18_REG_AGC3_RT_1107MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_1107MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_2160MS (5)
-+#define AW87XXX_PID_18_REG_AGC3_RT_2160MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_2160MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_4320MS (6)
-+#define AW87XXX_PID_18_REG_AGC3_RT_4320MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_RT_4320MS << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_RT_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_18_REG_AGC3_RT_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC3_RT_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC3_RT_START_BIT)
-+
-+/* REG_AGC3_AT bit 4:2 (A3PARAM 0x07) */
-+#define AW87XXX_PID_18_REG_AGC3_AT_START_BIT (2)
-+#define AW87XXX_PID_18_REG_AGC3_AT_BITS_LEN (3)
-+#define AW87XXX_PID_18_REG_AGC3_AT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC3_AT_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC3_AT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_5P76MS_0P32MSSTEP (0)
-+#define AW87XXX_PID_18_REG_AGC3_AT_5P76MS_0P32MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_5P76MS_0P32MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_11P52MS_0P64MSSTEP (1)
-+#define AW87XXX_PID_18_REG_AGC3_AT_11P52MS_0P64MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_11P52MS_0P64MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_23P04MS_1P28MSSTEP (2)
-+#define AW87XXX_PID_18_REG_AGC3_AT_23P04MS_1P28MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_23P04MS_1P28MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_92P16MS_5P12MSSTEP (3)
-+#define AW87XXX_PID_18_REG_AGC3_AT_92P16MS_5P12MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_92P16MS_5P12MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_368P64MS_20P48MSSTEP (4)
-+#define AW87XXX_PID_18_REG_AGC3_AT_368P64MS_20P48MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_368P64MS_20P48MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_738MS_41MSSTEP (5)
-+#define AW87XXX_PID_18_REG_AGC3_AT_738MS_41MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_738MS_41MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_1476MS_82MSSTEP (6)
-+#define AW87XXX_PID_18_REG_AGC3_AT_1476MS_82MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_1476MS_82MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_2952MS_164MSSTEP (7)
-+#define AW87XXX_PID_18_REG_AGC3_AT_2952MS_164MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_AT_2952MS_164MSSTEP << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_AT_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_18_REG_AGC3_AT_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC3_AT_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC3_AT_START_BIT)
-+
-+/* REG_AGC3_1ST_AT bit 1:0 (A3PARAM 0x07) */
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT (0)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC3_1ST_AT_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_5P12MS (0)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_5P12MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_1ST_AT_5P12MS << AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_10P24MS (1)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_10P24MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_1ST_AT_10P24MS << AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_20P48MS (2)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_20P48MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_1ST_AT_20P48MS << AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_41MS (3)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_41MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_1ST_AT_41MS << AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_18_REG_AGC3_1ST_AT_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC3_1ST_AT_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC3_1ST_AT_START_BIT)
-+
-+/* default value of A3PARAM (0x07) */
-+/* #define AW87XXX_PID_18_A3PARAM_DEFAULT (0x52) */
-+
-+/* A3A2PO (0x08) detail */
-+/* REG_AGC3_PO bit 7:4 (A3A2PO 0x08) */
-+#define AW87XXX_PID_18_REG_AGC3_PO_START_BIT (4)
-+#define AW87XXX_PID_18_REG_AGC3_PO_BITS_LEN (4)
-+#define AW87XXX_PID_18_REG_AGC3_PO_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC3_PO_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC3_PO_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P2W8_OHM_0P27W6_OHM_0P05W32_OHM (0)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P2W8_OHM_0P27W6_OHM_0P05W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P2W8_OHM_0P27W6_OHM_0P05W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P3W8_OHM_0P4W6_OHM_0P075W32_OHM (1)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P3W8_OHM_0P4W6_OHM_0P075W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P3W8_OHM_0P4W6_OHM_0P075W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P4W8_OHM_0P53W6_OHM_0P1W32_OHM (2)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P4W8_OHM_0P53W6_OHM_0P1W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P4W8_OHM_0P53W6_OHM_0P1W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P5W8_OHM_0P67W6_OHM_0P125W32_OHM (3)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P5W8_OHM_0P67W6_OHM_0P125W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P5W8_OHM_0P67W6_OHM_0P125W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P6W8_OHM_0P8W6_OHM_0P15W32_OHM (4)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P6W8_OHM_0P8W6_OHM_0P15W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P6W8_OHM_0P8W6_OHM_0P15W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P7W8_OHM_0P93W6_OHM_0P175W32_OHM (5)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P7W8_OHM_0P93W6_OHM_0P175W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P7W8_OHM_0P93W6_OHM_0P175W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P8W8_OHM_1P06W6_OHM_0P2W32_OHM (6)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P8W8_OHM_1P06W6_OHM_0P2W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P8W8_OHM_1P06W6_OHM_0P2W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P9W8_OHM_1P2W6_OHM_0P225W32_OHM (7)
-+#define AW87XXX_PID_18_REG_AGC3_PO_0P9W8_OHM_1P2W6_OHM_0P225W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_0P9W8_OHM_1P2W6_OHM_0P225W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P0W8_OHM_1P33W6_OHM_0P25W32_OHM (8)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P0W8_OHM_1P33W6_OHM_0P25W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P0W8_OHM_1P33W6_OHM_0P25W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P1W8_OHM_1P46W6_OHM_0P275W32_OHM (9)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P1W8_OHM_1P46W6_OHM_0P275W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P1W8_OHM_1P46W6_OHM_0P275W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P2W8_OHM_1P6W6_OHM_0P30W32_OHM (10)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P2W8_OHM_1P6W6_OHM_0P30W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P2W8_OHM_1P6W6_OHM_0P30W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P3W8_OHM_1P73W6_OHM_0P325W32_OHM (11)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P3W8_OHM_1P73W6_OHM_0P325W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P3W8_OHM_1P73W6_OHM_0P325W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P4W8_OHM_1P86W6_OHM_0P35W32_OHM (12)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P4W8_OHM_1P86W6_OHM_0P35W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P4W8_OHM_1P86W6_OHM_0P35W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P5W8_OHM_2W6_OHM_0P375W32_OHM (13)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P5W8_OHM_2W6_OHM_0P375W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P5W8_OHM_2W6_OHM_0P375W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P6W8_OHM_2P13W6_OHM_0P4W32_OHM (14)
-+#define AW87XXX_PID_18_REG_AGC3_PO_1P6W8_OHM_2P13W6_OHM_0P4W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_1P6W8_OHM_2P13W6_OHM_0P4W32_OHM << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_AGC3_OFF (15)
-+#define AW87XXX_PID_18_REG_AGC3_PO_AGC3_OFF_VALUE \
-+ (AW87XXX_PID_18_REG_AGC3_PO_AGC3_OFF << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC3_PO_DEFAULT_VALUE (0xA)
-+#define AW87XXX_PID_18_REG_AGC3_PO_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC3_PO_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC3_PO_START_BIT)
-+
-+/* REG_AGC2_PO bit 3:0 (A3A2PO 0x08) */
-+#define AW87XXX_PID_18_REG_AGC2_PO_START_BIT (0)
-+#define AW87XXX_PID_18_REG_AGC2_PO_BITS_LEN (4)
-+#define AW87XXX_PID_18_REG_AGC2_PO_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC2_PO_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC2_PO_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_0P4W8_OHM_0P53W6_OHM_0P1W32_OHM (0)
-+#define AW87XXX_PID_18_REG_AGC2_PO_0P4W8_OHM_0P53W6_OHM_0P1W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_0P4W8_OHM_0P53W6_OHM_0P1W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_0P6W8_OHM_0P8W6_OHM_0P15W32_OHM (1)
-+#define AW87XXX_PID_18_REG_AGC2_PO_0P6W8_OHM_0P8W6_OHM_0P15W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_0P6W8_OHM_0P8W6_OHM_0P15W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_0P8W8_OHM_1P06W6_OHM_0P2W32_OHM (2)
-+#define AW87XXX_PID_18_REG_AGC2_PO_0P8W8_OHM_1P06W6_OHM_0P2W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_0P8W8_OHM_1P06W6_OHM_0P2W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P0W8_OHM_1P33W6_OHM_0P25W32_OHM (3)
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P0W8_OHM_1P33W6_OHM_0P25W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_1P0W8_OHM_1P33W6_OHM_0P25W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P2W8_OHM_1P6W6_OHM_0P3W32_OHM (4)
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P2W8_OHM_1P6W6_OHM_0P3W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_1P2W8_OHM_1P6W6_OHM_0P3W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P4W8_OHM_1P86W6_OHM_0P35W32_OHM (5)
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P4W8_OHM_1P86W6_OHM_0P35W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_1P4W8_OHM_1P86W6_OHM_0P35W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P6W8_OHM_2P13W6_OHM_0P4W32_OHM (6)
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P6W8_OHM_2P13W6_OHM_0P4W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_1P6W8_OHM_2P13W6_OHM_0P4W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P8W8_OHM_2P4W6_OHM_0P45W32_OHM (7)
-+#define AW87XXX_PID_18_REG_AGC2_PO_1P8W8_OHM_2P4W6_OHM_0P45W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_1P8W8_OHM_2P4W6_OHM_0P45W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_2P0W8_OHM_2P66W6_OHM_0P5W32_OHM (8)
-+#define AW87XXX_PID_18_REG_AGC2_PO_2P0W8_OHM_2P66W6_OHM_0P5W32_OHM_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_2P0W8_OHM_2P66W6_OHM_0P5W32_OHM << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_AGC2_OFF (9)
-+#define AW87XXX_PID_18_REG_AGC2_PO_AGC2_OFF_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_PO_AGC2_OFF << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_PO_DEFAULT_VALUE (0x6)
-+#define AW87XXX_PID_18_REG_AGC2_PO_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC2_PO_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC2_PO_START_BIT)
-+
-+/* default value of A3A2PO (0x08) */
-+/* #define AW87XXX_PID_18_A3A2PO_DEFAULT (0xA6) */
-+
-+/* A2PARAM (0x09) detail */
-+/* REG_TEDGE bit 5 (A2PARAM 0x09) */
-+#define AW87XXX_PID_18_REG_TEDGE_START_BIT (5)
-+#define AW87XXX_PID_18_REG_TEDGE_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_TEDGE_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_TEDGE_BITS_LEN)-1) << AW87XXX_PID_18_REG_TEDGE_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_TEDGE_4NS (0)
-+#define AW87XXX_PID_18_REG_TEDGE_4NS_VALUE \
-+ (AW87XXX_PID_18_REG_TEDGE_4NS << AW87XXX_PID_18_REG_TEDGE_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TEDGE_12NS (1)
-+#define AW87XXX_PID_18_REG_TEDGE_12NS_VALUE \
-+ (AW87XXX_PID_18_REG_TEDGE_12NS << AW87XXX_PID_18_REG_TEDGE_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TEDGE_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_TEDGE_DEFAULT \
-+ (AW87XXX_PID_18_REG_TEDGE_DEFAULT_VALUE << AW87XXX_PID_18_REG_TEDGE_START_BIT)
-+
-+/* REG_AGC2_AT bit 4:2 (A2PARAM 0x09) */
-+#define AW87XXX_PID_18_REG_AGC2_AT_START_BIT (2)
-+#define AW87XXX_PID_18_REG_AGC2_AT_BITS_LEN (3)
-+#define AW87XXX_PID_18_REG_AGC2_AT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC2_AT_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC2_AT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_1P44MS_0P08MSSTEP (0)
-+#define AW87XXX_PID_18_REG_AGC2_AT_1P44MS_0P08MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_1P44MS_0P08MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_2P88MS_0P16MSSTEP (1)
-+#define AW87XXX_PID_18_REG_AGC2_AT_2P88MS_0P16MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_2P88MS_0P16MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_5P76MS_0P32MSSTEP (2)
-+#define AW87XXX_PID_18_REG_AGC2_AT_5P76MS_0P32MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_5P76MS_0P32MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_23P04MS_1P28MSSTEP (3)
-+#define AW87XXX_PID_18_REG_AGC2_AT_23P04MS_1P28MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_23P04MS_1P28MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_92P16MS_5P12MSSTEP (4)
-+#define AW87XXX_PID_18_REG_AGC2_AT_92P16MS_5P12MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_92P16MS_5P12MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_368P64MS_20P48MSSTEP (5)
-+#define AW87XXX_PID_18_REG_AGC2_AT_368P64MS_20P48MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_368P64MS_20P48MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_737P28MS_41MSSTEP (6)
-+#define AW87XXX_PID_18_REG_AGC2_AT_737P28MS_41MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_737P28MS_41MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_1474P56MS_82MSSTEP (7)
-+#define AW87XXX_PID_18_REG_AGC2_AT_1474P56MS_82MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_AT_1474P56MS_82MSSTEP << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_AT_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_18_REG_AGC2_AT_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC2_AT_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC2_AT_START_BIT)
-+
-+/* REG_AGC2_1ST_AT bit 1:0 (A2PARAM 0x09) */
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT (0)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC2_1ST_AT_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_0P08MS (0)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_0P08MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_1ST_AT_0P08MS << AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_0P32MS (1)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_0P32MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_1ST_AT_0P32MS << AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_1P28MS (2)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_1P28MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_1ST_AT_1P28MS << AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_5P12MS (3)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_5P12MS_VALUE \
-+ (AW87XXX_PID_18_REG_AGC2_1ST_AT_5P12MS << AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_AGC2_1ST_AT_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC2_1ST_AT_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC2_1ST_AT_START_BIT)
-+
-+/* default value of A2PARAM (0x09) */
-+/* #define AW87XXX_PID_18_A2PARAM_DEFAULT (0x08) */
-+
-+/* A1PARAM (0x0A) detail */
-+/* REG_AGC1_PO bit 6:3 (A1PARAM 0x0A) */
-+#define AW87XXX_PID_18_REG_AGC1_PO_START_BIT (3)
-+#define AW87XXX_PID_18_REG_AGC1_PO_BITS_LEN (4)
-+#define AW87XXX_PID_18_REG_AGC1_PO_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC1_PO_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC1_PO_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_5V (0)
-+#define AW87XXX_PID_18_REG_AGC1_PO_5V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_5V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P2V (1)
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P2V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_5P2V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P4V (2)
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P4V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_5P4V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P6V (3)
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P6V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_5P6V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P8V (4)
-+#define AW87XXX_PID_18_REG_AGC1_PO_5P8V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_5P8V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P0V (5)
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P0V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_6P0V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P2V (6)
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P2V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_6P2V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P4V (7)
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P4V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_6P4V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P6V (8)
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P6V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_6P6V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P8V (9)
-+#define AW87XXX_PID_18_REG_AGC1_PO_6P8V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_6P8V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_7V (10)
-+#define AW87XXX_PID_18_REG_AGC1_PO_7V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_7V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P2V (11)
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P2V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_7P2V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P4V (12)
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P4V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_7P4V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P6V (13)
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P6V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_7P6V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P8V (14)
-+#define AW87XXX_PID_18_REG_AGC1_PO_7P8V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_7P8V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_8V (15)
-+#define AW87XXX_PID_18_REG_AGC1_PO_8V_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_PO_8V << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_PO_DEFAULT_VALUE (0x9)
-+#define AW87XXX_PID_18_REG_AGC1_PO_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC1_PO_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC1_PO_START_BIT)
-+
-+/* REG_AGC1_AT bit 2:1 (A1PARAM 0x0A) */
-+#define AW87XXX_PID_18_REG_AGC1_AT_START_BIT (1)
-+#define AW87XXX_PID_18_REG_AGC1_AT_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_AGC1_AT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC1_AT_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC1_AT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC1_AT_0P48MS_0P02MSSTEP (0)
-+#define AW87XXX_PID_18_REG_AGC1_AT_0P48MS_0P02MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_AT_0P48MS_0P02MSSTEP << AW87XXX_PID_18_REG_AGC1_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_AT_0P96MS_0P04MSSTEP (1)
-+#define AW87XXX_PID_18_REG_AGC1_AT_0P96MS_0P04MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_AT_0P96MS_0P04MSSTEP << AW87XXX_PID_18_REG_AGC1_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_AT_1P92MS_0P08MSSTEP (2)
-+#define AW87XXX_PID_18_REG_AGC1_AT_1P92MS_0P08MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_AT_1P92MS_0P08MSSTEP << AW87XXX_PID_18_REG_AGC1_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_AT_3P84MS_0P16MSSTEP (3)
-+#define AW87XXX_PID_18_REG_AGC1_AT_3P84MS_0P16MSSTEP_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_AT_3P84MS_0P16MSSTEP << AW87XXX_PID_18_REG_AGC1_AT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_AT_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_AGC1_AT_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC1_AT_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC1_AT_START_BIT)
-+
-+/* REG_PD_AGC1 bit 0 (A1PARAM 0x0A) */
-+#define AW87XXX_PID_18_REG_PD_AGC1_START_BIT (0)
-+#define AW87XXX_PID_18_REG_PD_AGC1_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_PD_AGC1_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_PD_AGC1_BITS_LEN)-1) << AW87XXX_PID_18_REG_PD_AGC1_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_PD_AGC1_ENABLE_FASTEST_LEVEL_AGC (0)
-+#define AW87XXX_PID_18_REG_PD_AGC1_ENABLE_FASTEST_LEVEL_AGC_VALUE \
-+ (AW87XXX_PID_18_REG_PD_AGC1_ENABLE_FASTEST_LEVEL_AGC << AW87XXX_PID_18_REG_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_AGC1_DISABLE_FASTEST_LEVEL_AGC (1)
-+#define AW87XXX_PID_18_REG_PD_AGC1_DISABLE_FASTEST_LEVEL_AGC_VALUE \
-+ (AW87XXX_PID_18_REG_PD_AGC1_DISABLE_FASTEST_LEVEL_AGC << AW87XXX_PID_18_REG_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_AGC1_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_PD_AGC1_DEFAULT \
-+ (AW87XXX_PID_18_REG_PD_AGC1_DEFAULT_VALUE << AW87XXX_PID_18_REG_PD_AGC1_START_BIT)
-+
-+/* default value of A1PARAM (0x0A) */
-+/* #define AW87XXX_PID_18_A1PARAM_DEFAULT (0x4A) */
-+
-+/* POPCLK (0x0B) detail */
-+/* REG_DCLK_L bit 7 (POPCLK 0x0B) */
-+#define AW87XXX_PID_18_REG_DCLK_L_START_BIT (7)
-+#define AW87XXX_PID_18_REG_DCLK_L_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_DCLK_L_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_DCLK_L_BITS_LEN)-1) << AW87XXX_PID_18_REG_DCLK_L_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_DCLK_L_30NS (0)
-+#define AW87XXX_PID_18_REG_DCLK_L_30NS_VALUE \
-+ (AW87XXX_PID_18_REG_DCLK_L_30NS << AW87XXX_PID_18_REG_DCLK_L_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_DCLK_L_45NS (1)
-+#define AW87XXX_PID_18_REG_DCLK_L_45NS_VALUE \
-+ (AW87XXX_PID_18_REG_DCLK_L_45NS << AW87XXX_PID_18_REG_DCLK_L_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_DCLK_L_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_DCLK_L_DEFAULT \
-+ (AW87XXX_PID_18_REG_DCLK_L_DEFAULT_VALUE << AW87XXX_PID_18_REG_DCLK_L_START_BIT)
-+
-+/* REG_CLK_MAPD bit 6:5 (POPCLK 0x0B) */
-+#define AW87XXX_PID_18_REG_CLK_MAPD_START_BIT (5)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CLK_MAPD_BITS_LEN)-1) << AW87XXX_PID_18_REG_CLK_MAPD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CLK_MAPD_40MS (0)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_40MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_MAPD_40MS << AW87XXX_PID_18_REG_CLK_MAPD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_MAPD_80MS (1)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_80MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_MAPD_80MS << AW87XXX_PID_18_REG_CLK_MAPD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_MAPD_160MS (2)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_160MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_MAPD_160MS << AW87XXX_PID_18_REG_CLK_MAPD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_MAPD_320MS (3)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_320MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_MAPD_320MS << AW87XXX_PID_18_REG_CLK_MAPD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_MAPD_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_CLK_MAPD_DEFAULT \
-+ (AW87XXX_PID_18_REG_CLK_MAPD_DEFAULT_VALUE << AW87XXX_PID_18_REG_CLK_MAPD_START_BIT)
-+
-+/* REG_CLK_POP bit 4:3 (POPCLK 0x0B) */
-+#define AW87XXX_PID_18_REG_CLK_POP_START_BIT (3)
-+#define AW87XXX_PID_18_REG_CLK_POP_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_CLK_POP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CLK_POP_BITS_LEN)-1) << AW87XXX_PID_18_REG_CLK_POP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CLK_POP_40MS (0)
-+#define AW87XXX_PID_18_REG_CLK_POP_40MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_POP_40MS << AW87XXX_PID_18_REG_CLK_POP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_POP_10MS (1)
-+#define AW87XXX_PID_18_REG_CLK_POP_10MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_POP_10MS << AW87XXX_PID_18_REG_CLK_POP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_POP_5MS (2)
-+#define AW87XXX_PID_18_REG_CLK_POP_5MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_POP_5MS << AW87XXX_PID_18_REG_CLK_POP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_POP_2P5MS (3)
-+#define AW87XXX_PID_18_REG_CLK_POP_2P5MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_POP_2P5MS << AW87XXX_PID_18_REG_CLK_POP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_POP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_CLK_POP_DEFAULT \
-+ (AW87XXX_PID_18_REG_CLK_POP_DEFAULT_VALUE << AW87XXX_PID_18_REG_CLK_POP_START_BIT)
-+
-+/* REG_CLK_OC bit 2:1 (POPCLK 0x0B) */
-+#define AW87XXX_PID_18_REG_CLK_OC_START_BIT (1)
-+#define AW87XXX_PID_18_REG_CLK_OC_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_CLK_OC_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CLK_OC_BITS_LEN)-1) << AW87XXX_PID_18_REG_CLK_OC_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CLK_OC_160MS (0)
-+#define AW87XXX_PID_18_REG_CLK_OC_160MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_OC_160MS << AW87XXX_PID_18_REG_CLK_OC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_OC_640MS (1)
-+#define AW87XXX_PID_18_REG_CLK_OC_640MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_OC_640MS << AW87XXX_PID_18_REG_CLK_OC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_OC_1280MS (2)
-+#define AW87XXX_PID_18_REG_CLK_OC_1280MS_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_OC_1280MS << AW87XXX_PID_18_REG_CLK_OC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_OC_SHUTDOWN_OUTPUT (3)
-+#define AW87XXX_PID_18_REG_CLK_OC_SHUTDOWN_OUTPUT_VALUE \
-+ (AW87XXX_PID_18_REG_CLK_OC_SHUTDOWN_OUTPUT << AW87XXX_PID_18_REG_CLK_OC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CLK_OC_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_CLK_OC_DEFAULT \
-+ (AW87XXX_PID_18_REG_CLK_OC_DEFAULT_VALUE << AW87XXX_PID_18_REG_CLK_OC_START_BIT)
-+
-+/* REG_AGC1_VTH bit 0 (POPCLK 0x0B) */
-+#define AW87XXX_PID_18_REG_AGC1_VTH_START_BIT (0)
-+#define AW87XXX_PID_18_REG_AGC1_VTH_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_AGC1_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_AGC1_VTH_BITS_LEN)-1) << AW87XXX_PID_18_REG_AGC1_VTH_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_AGC1_VTH_AGC1_VTH_SELECT_ONLY_FROM_RAMP_GEN (0)
-+#define AW87XXX_PID_18_REG_AGC1_VTH_AGC1_VTH_SELECT_ONLY_FROM_RAMP_GEN_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_VTH_AGC1_VTH_SELECT_ONLY_FROM_RAMP_GEN << AW87XXX_PID_18_REG_AGC1_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_VTH_AGC1_VTH_ADAPTIVELY_SELECT_FROM_RAMP_GEN_AND_THGEN (1)
-+#define AW87XXX_PID_18_REG_AGC1_VTH_AGC1_VTH_ADAPTIVELY_SELECT_FROM_RAMP_GEN_AND_THGEN_VALUE \
-+ (AW87XXX_PID_18_REG_AGC1_VTH_AGC1_VTH_ADAPTIVELY_SELECT_FROM_RAMP_GEN_AND_THGEN << AW87XXX_PID_18_REG_AGC1_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_AGC1_VTH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_AGC1_VTH_DEFAULT \
-+ (AW87XXX_PID_18_REG_AGC1_VTH_DEFAULT_VALUE << AW87XXX_PID_18_REG_AGC1_VTH_START_BIT)
-+
-+/* default value of POPCLK (0x0B) */
-+/* #define AW87XXX_PID_18_POPCLK_DEFAULT (0x21) */
-+
-+/* GTDRCPSS (0x0C) detail */
-+/* REG_TDEAD bit 5 (GTDRCPSS 0x0C) */
-+#define AW87XXX_PID_18_REG_TDEAD_START_BIT (5)
-+#define AW87XXX_PID_18_REG_TDEAD_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_TDEAD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_TDEAD_BITS_LEN)-1) << AW87XXX_PID_18_REG_TDEAD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_TDEAD_17NS (0)
-+#define AW87XXX_PID_18_REG_TDEAD_17NS_VALUE \
-+ (AW87XXX_PID_18_REG_TDEAD_17NS << AW87XXX_PID_18_REG_TDEAD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TDEAD_25NS (1)
-+#define AW87XXX_PID_18_REG_TDEAD_25NS_VALUE \
-+ (AW87XXX_PID_18_REG_TDEAD_25NS << AW87XXX_PID_18_REG_TDEAD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TDEAD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_TDEAD_DEFAULT \
-+ (AW87XXX_PID_18_REG_TDEAD_DEFAULT_VALUE << AW87XXX_PID_18_REG_TDEAD_START_BIT)
-+
-+/* REG_CZ_35MV bit 4 (GTDRCPSS 0x0C) */
-+#define AW87XXX_PID_18_REG_CZ_35MV_START_BIT (4)
-+#define AW87XXX_PID_18_REG_CZ_35MV_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_CZ_35MV_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CZ_35MV_BITS_LEN)-1) << AW87XXX_PID_18_REG_CZ_35MV_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CZ_35MV_25MV (0)
-+#define AW87XXX_PID_18_REG_CZ_35MV_25MV_VALUE \
-+ (AW87XXX_PID_18_REG_CZ_35MV_25MV << AW87XXX_PID_18_REG_CZ_35MV_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CZ_35MV_35MV (1)
-+#define AW87XXX_PID_18_REG_CZ_35MV_35MV_VALUE \
-+ (AW87XXX_PID_18_REG_CZ_35MV_35MV << AW87XXX_PID_18_REG_CZ_35MV_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CZ_35MV_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_CZ_35MV_DEFAULT \
-+ (AW87XXX_PID_18_REG_CZ_35MV_DEFAULT_VALUE << AW87XXX_PID_18_REG_CZ_35MV_START_BIT)
-+
-+/* BIT_CTRL bit 3 (GTDRCPSS 0x0C) */
-+#define AW87XXX_PID_18_BIT_CTRL_START_BIT (3)
-+#define AW87XXX_PID_18_BIT_CTRL_BITS_LEN (1)
-+#define AW87XXX_PID_18_BIT_CTRL_MASK \
-+ (~(((1<<AW87XXX_PID_18_BIT_CTRL_BITS_LEN)-1) << AW87XXX_PID_18_BIT_CTRL_START_BIT))
-+
-+#define AW87XXX_PID_18_BIT_CTRL_32_STEP_SPREAD_SPECTRUM (0)
-+#define AW87XXX_PID_18_BIT_CTRL_32_STEP_SPREAD_SPECTRUM_VALUE \
-+ (AW87XXX_PID_18_BIT_CTRL_32_STEP_SPREAD_SPECTRUM << AW87XXX_PID_18_BIT_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_18_BIT_CTRL_14_STEP_SPREAD_SPECTRUM (1)
-+#define AW87XXX_PID_18_BIT_CTRL_14_STEP_SPREAD_SPECTRUM_VALUE \
-+ (AW87XXX_PID_18_BIT_CTRL_14_STEP_SPREAD_SPECTRUM << AW87XXX_PID_18_BIT_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_18_BIT_CTRL_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_BIT_CTRL_DEFAULT \
-+ (AW87XXX_PID_18_BIT_CTRL_DEFAULT_VALUE << AW87XXX_PID_18_BIT_CTRL_START_BIT)
-+
-+/* SS_EXCH bit 2 (GTDRCPSS 0x0C) */
-+#define AW87XXX_PID_18_SS_EXCH_START_BIT (2)
-+#define AW87XXX_PID_18_SS_EXCH_BITS_LEN (1)
-+#define AW87XXX_PID_18_SS_EXCH_MASK \
-+ (~(((1<<AW87XXX_PID_18_SS_EXCH_BITS_LEN)-1) << AW87XXX_PID_18_SS_EXCH_START_BIT))
-+
-+#define AW87XXX_PID_18_SS_EXCH_12_RANGE (0)
-+#define AW87XXX_PID_18_SS_EXCH_12_RANGE_VALUE \
-+ (AW87XXX_PID_18_SS_EXCH_12_RANGE << AW87XXX_PID_18_SS_EXCH_START_BIT)
-+
-+#define AW87XXX_PID_18_SS_EXCH_6_RANGE (1)
-+#define AW87XXX_PID_18_SS_EXCH_6_RANGE_VALUE \
-+ (AW87XXX_PID_18_SS_EXCH_6_RANGE << AW87XXX_PID_18_SS_EXCH_START_BIT)
-+
-+#define AW87XXX_PID_18_SS_EXCH_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_SS_EXCH_DEFAULT \
-+ (AW87XXX_PID_18_SS_EXCH_DEFAULT_VALUE << AW87XXX_PID_18_SS_EXCH_START_BIT)
-+
-+/* REG_ISTART bit 1 (GTDRCPSS 0x0C) */
-+#define AW87XXX_PID_18_REG_ISTART_START_BIT (1)
-+#define AW87XXX_PID_18_REG_ISTART_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_ISTART_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_ISTART_BITS_LEN)-1) << AW87XXX_PID_18_REG_ISTART_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_ISTART_IBIAS_WI_46P8NA (0)
-+#define AW87XXX_PID_18_REG_ISTART_IBIAS_WI_46P8NA_VALUE \
-+ (AW87XXX_PID_18_REG_ISTART_IBIAS_WI_46P8NA << AW87XXX_PID_18_REG_ISTART_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_ISTART_IBIAS_WI_62P5NA (1)
-+#define AW87XXX_PID_18_REG_ISTART_IBIAS_WI_62P5NA_VALUE \
-+ (AW87XXX_PID_18_REG_ISTART_IBIAS_WI_62P5NA << AW87XXX_PID_18_REG_ISTART_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_ISTART_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_ISTART_DEFAULT \
-+ (AW87XXX_PID_18_REG_ISTART_DEFAULT_VALUE << AW87XXX_PID_18_REG_ISTART_START_BIT)
-+
-+/* REG_PD_OVPICTRL bit 0 (GTDRCPSS 0x0C) */
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_START_BIT (0)
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_PD_OVPICTRL_BITS_LEN)-1) << AW87XXX_PID_18_REG_PD_OVPICTRL_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_DISABLE (0)
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_OVPICTRL_DISABLE << AW87XXX_PID_18_REG_PD_OVPICTRL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_ENABLE (1)
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_OVPICTRL_ENABLE << AW87XXX_PID_18_REG_PD_OVPICTRL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_PD_OVPICTRL_DEFAULT \
-+ (AW87XXX_PID_18_REG_PD_OVPICTRL_DEFAULT_VALUE << AW87XXX_PID_18_REG_PD_OVPICTRL_START_BIT)
-+
-+/* default value of GTDRCPSS (0x0C) */
-+/* #define AW87XXX_PID_18_GTDRCPSS_DEFAULT (0x08) */
-+
-+/* MULTI (0x0D) detail */
-+/* REG_CP_FREQ bit 7:6 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_CP_FREQ_START_BIT (6)
-+#define AW87XXX_PID_18_REG_CP_FREQ_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_CP_FREQ_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CP_FREQ_BITS_LEN)-1) << AW87XXX_PID_18_REG_CP_FREQ_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CP_FREQ_1P8MHZ (0)
-+#define AW87XXX_PID_18_REG_CP_FREQ_1P8MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_CP_FREQ_1P8MHZ << AW87XXX_PID_18_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_FREQ_1P6MHZ (1)
-+#define AW87XXX_PID_18_REG_CP_FREQ_1P6MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_CP_FREQ_1P6MHZ << AW87XXX_PID_18_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_FREQ_1P4MHZ (2)
-+#define AW87XXX_PID_18_REG_CP_FREQ_1P4MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_CP_FREQ_1P4MHZ << AW87XXX_PID_18_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_FREQ_2P1MHZ (3)
-+#define AW87XXX_PID_18_REG_CP_FREQ_2P1MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_CP_FREQ_2P1MHZ << AW87XXX_PID_18_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_FREQ_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_CP_FREQ_DEFAULT \
-+ (AW87XXX_PID_18_REG_CP_FREQ_DEFAULT_VALUE << AW87XXX_PID_18_REG_CP_FREQ_START_BIT)
-+
-+/* REG_EN_OT150 bit 5 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_EN_OT150_START_BIT (5)
-+#define AW87XXX_PID_18_REG_EN_OT150_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_OT150_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_OT150_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_OT150_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_OT150_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_OT150_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_OT150_DISABLE << AW87XXX_PID_18_REG_EN_OT150_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_OT150_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_OT150_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_OT150_ENABLE << AW87XXX_PID_18_REG_EN_OT150_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_OT150_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_EN_OT150_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_OT150_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_OT150_START_BIT)
-+
-+/* REG_EN_TEST bit 4 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_EN_TEST_START_BIT (4)
-+#define AW87XXX_PID_18_REG_EN_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_TEST_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_TEST_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_TEST_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_TEST_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_TEST_DISABLE << AW87XXX_PID_18_REG_EN_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_TEST_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_TEST_ENABLE << AW87XXX_PID_18_REG_EN_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_TEST_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_TEST_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_TEST_START_BIT)
-+
-+/* REG_EN_CLASSD bit 3 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_EN_CLASSD_START_BIT (3)
-+#define AW87XXX_PID_18_REG_EN_CLASSD_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_CLASSD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_CLASSD_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_CLASSD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_CLASSD_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_CLASSD_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_CLASSD_DISABLE << AW87XXX_PID_18_REG_EN_CLASSD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_CLASSD_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_CLASSD_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_CLASSD_ENABLE << AW87XXX_PID_18_REG_EN_CLASSD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_CLASSD_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_EN_CLASSD_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_CLASSD_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_CLASSD_START_BIT)
-+
-+/* REG_EN_DEFAULT bit 2 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_START_BIT (2)
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_DEFAULT_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_DEFAULT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_SELF_DEFINE_THE_SETTINGS (0)
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_SELF_DEFINE_THE_SETTINGS_VALUE \
-+ (AW87XXX_PID_18_REG_EN_DEFAULT_SELF_DEFINE_THE_SETTINGS << AW87XXX_PID_18_REG_EN_DEFAULT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_USE_THE_DEFAULT_SETTING_IN_THE_SYSCTRL_BLOCK (1)
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_USE_THE_DEFAULT_SETTING_IN_THE_SYSCTRL_BLOCK_VALUE \
-+ (AW87XXX_PID_18_REG_EN_DEFAULT_USE_THE_DEFAULT_SETTING_IN_THE_SYSCTRL_BLOCK << AW87XXX_PID_18_REG_EN_DEFAULT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_DEFAULT_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_DEFAULT_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_DEFAULT_START_BIT)
-+
-+/* REG_EN_ESD bit 1 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_EN_ESD_START_BIT (1)
-+#define AW87XXX_PID_18_REG_EN_ESD_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_ESD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_ESD_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_ESD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_ESD_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_ESD_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_ESD_DISABLE << AW87XXX_PID_18_REG_EN_ESD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_ESD_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_ESD_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_ESD_ENABLE << AW87XXX_PID_18_REG_EN_ESD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_ESD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_ESD_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_ESD_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_ESD_START_BIT)
-+
-+/* REG_EN_MT bit 0 (MULTI 0x0D) */
-+#define AW87XXX_PID_18_REG_EN_MT_START_BIT (0)
-+#define AW87XXX_PID_18_REG_EN_MT_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_MT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_MT_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_MT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_MT_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_MT_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_MT_DISABLE << AW87XXX_PID_18_REG_EN_MT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_MT_ENBLAE (1)
-+#define AW87XXX_PID_18_REG_EN_MT_ENBLAE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_MT_ENBLAE << AW87XXX_PID_18_REG_EN_MT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_MT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_MT_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_MT_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_MT_START_BIT)
-+
-+/* default value of MULTI (0x0D) */
-+/* #define AW87XXX_PID_18_MULTI_DEFAULT (0x68) */
-+
-+/* DFT1 (0x61) detail */
-+/* REG_SET_R2 bit 7 (DFT1 0x61) */
-+#define AW87XXX_PID_18_REG_SET_R2_START_BIT (7)
-+#define AW87XXX_PID_18_REG_SET_R2_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_SET_R2_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_SET_R2_BITS_LEN)-1) << AW87XXX_PID_18_REG_SET_R2_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_SET_R2_NOT_LIMIT_THE_HIGH_LEVEL_VTH (0)
-+#define AW87XXX_PID_18_REG_SET_R2_NOT_LIMIT_THE_HIGH_LEVEL_VTH_VALUE \
-+ (AW87XXX_PID_18_REG_SET_R2_NOT_LIMIT_THE_HIGH_LEVEL_VTH << AW87XXX_PID_18_REG_SET_R2_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_SET_R2_LIMIT_THE_HIGH_LEVEL_VTH (1)
-+#define AW87XXX_PID_18_REG_SET_R2_LIMIT_THE_HIGH_LEVEL_VTH_VALUE \
-+ (AW87XXX_PID_18_REG_SET_R2_LIMIT_THE_HIGH_LEVEL_VTH << AW87XXX_PID_18_REG_SET_R2_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_SET_R2_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_SET_R2_DEFAULT \
-+ (AW87XXX_PID_18_REG_SET_R2_DEFAULT_VALUE << AW87XXX_PID_18_REG_SET_R2_START_BIT)
-+
-+/* REG_CP_ISOFT bit 6:5 (DFT1 0x61) */
-+#define AW87XXX_PID_18_REG_CP_ISOFT_START_BIT (5)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CP_ISOFT_BITS_LEN)-1) << AW87XXX_PID_18_REG_CP_ISOFT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P2A (0)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P2A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_ISOFT_0P2A << AW87XXX_PID_18_REG_CP_ISOFT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P3A (1)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P3A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_ISOFT_0P3A << AW87XXX_PID_18_REG_CP_ISOFT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P4A (2)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P4A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_ISOFT_0P4A << AW87XXX_PID_18_REG_CP_ISOFT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P5A (3)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_0P5A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_ISOFT_0P5A << AW87XXX_PID_18_REG_CP_ISOFT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_ISOFT_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_CP_ISOFT_DEFAULT \
-+ (AW87XXX_PID_18_REG_CP_ISOFT_DEFAULT_VALUE << AW87XXX_PID_18_REG_CP_ISOFT_START_BIT)
-+
-+/* REG_CP_IPEAK bit 4:2 (DFT1 0x61) */
-+#define AW87XXX_PID_18_REG_CP_IPEAK_START_BIT (2)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_BITS_LEN (3)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CP_IPEAK_BITS_LEN)-1) << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CP_IPEAK_2A (0)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_2A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_IPEAK_2A << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_IPEAK_2P5A (1)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_2P5A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_IPEAK_2P5A << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_IPEAK_3A (2)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_3A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_IPEAK_3A << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_IPEAK_3P5A (3)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_3P5A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_IPEAK_3P5A << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_IPEAK_4A (4)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_4A_VALUE \
-+ (AW87XXX_PID_18_REG_CP_IPEAK_4A << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_IPEAK_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_CP_IPEAK_DEFAULT \
-+ (AW87XXX_PID_18_REG_CP_IPEAK_DEFAULT_VALUE << AW87XXX_PID_18_REG_CP_IPEAK_START_BIT)
-+
-+/* REG_SET_OCDT bit 1:0 (DFT1 0x61) */
-+#define AW87XXX_PID_18_REG_SET_OCDT_START_BIT (0)
-+#define AW87XXX_PID_18_REG_SET_OCDT_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_SET_OCDT_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_SET_OCDT_BITS_LEN)-1) << AW87XXX_PID_18_REG_SET_OCDT_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_SET_OCDT_4P1A (0)
-+#define AW87XXX_PID_18_REG_SET_OCDT_4P1A_VALUE \
-+ (AW87XXX_PID_18_REG_SET_OCDT_4P1A << AW87XXX_PID_18_REG_SET_OCDT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_SET_OCDT_4P5A (1)
-+#define AW87XXX_PID_18_REG_SET_OCDT_4P5A_VALUE \
-+ (AW87XXX_PID_18_REG_SET_OCDT_4P5A << AW87XXX_PID_18_REG_SET_OCDT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_SET_OCDT_4P9A (2)
-+#define AW87XXX_PID_18_REG_SET_OCDT_4P9A_VALUE \
-+ (AW87XXX_PID_18_REG_SET_OCDT_4P9A << AW87XXX_PID_18_REG_SET_OCDT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_SET_OCDT_5P3A (3)
-+#define AW87XXX_PID_18_REG_SET_OCDT_5P3A_VALUE \
-+ (AW87XXX_PID_18_REG_SET_OCDT_5P3A << AW87XXX_PID_18_REG_SET_OCDT_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_SET_OCDT_DEFAULT_VALUE (0X2)
-+#define AW87XXX_PID_18_REG_SET_OCDT_DEFAULT \
-+ (AW87XXX_PID_18_REG_SET_OCDT_DEFAULT_VALUE << AW87XXX_PID_18_REG_SET_OCDT_START_BIT)
-+
-+/* default value of DFT1 (0x61) */
-+/* #define AW87XXX_PID_18_DFT1_DEFAULT (0xA6) */
-+
-+/* DFT2 (0x62) detail */
-+/* REG_CP_TEST bit 7 (DFT2 0x62) */
-+#define AW87XXX_PID_18_REG_CP_TEST_START_BIT (7)
-+#define AW87XXX_PID_18_REG_CP_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_CP_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CP_TEST_BITS_LEN)-1) << AW87XXX_PID_18_REG_CP_TEST_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CP_TEST_DISABLE (0)
-+#define AW87XXX_PID_18_REG_CP_TEST_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_CP_TEST_DISABLE << AW87XXX_PID_18_REG_CP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_TEST_ENABLE (1)
-+#define AW87XXX_PID_18_REG_CP_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_CP_TEST_ENABLE << AW87XXX_PID_18_REG_CP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_CP_TEST_DEFAULT \
-+ (AW87XXX_PID_18_REG_CP_TEST_DEFAULT_VALUE << AW87XXX_PID_18_REG_CP_TEST_START_BIT)
-+
-+/* REG_VFAGC bit 6:4 (DFT2 0x62) */
-+#define AW87XXX_PID_18_REG_VFAGC_START_BIT (4)
-+#define AW87XXX_PID_18_REG_VFAGC_BITS_LEN (3)
-+#define AW87XXX_PID_18_REG_VFAGC_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_VFAGC_BITS_LEN)-1) << AW87XXX_PID_18_REG_VFAGC_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P775VDDVREF_FAGC_VHYS0P7VDD (0)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P775VDDVREF_FAGC_VHYS0P7VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P775VDDVREF_FAGC_VHYS0P7VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P8VDDVREF_FAGC_VHYS0P725VDD (1)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P8VDDVREF_FAGC_VHYS0P725VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P8VDDVREF_FAGC_VHYS0P725VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P825VDDVREF_FAGC_VHYS0P75VDD (2)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P825VDDVREF_FAGC_VHYS0P75VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P825VDDVREF_FAGC_VHYS0P75VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P85VDDVREF_FAGC_VHYS0P775VDD (3)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P85VDDVREF_FAGC_VHYS0P775VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P85VDDVREF_FAGC_VHYS0P775VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P875VDDVREF_FAGC_VHYS0P8VDD (4)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P875VDDVREF_FAGC_VHYS0P8VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P875VDDVREF_FAGC_VHYS0P8VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P9VDDVREF_FAGC_VHYS0P825VDD (5)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P9VDDVREF_FAGC_VHYS0P825VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P9VDDVREF_FAGC_VHYS0P825VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P925VDDVREF_FAGC_VHYS0P85VDD (6)
-+#define AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P925VDDVREF_FAGC_VHYS0P85VDD_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_VREF_FAGC0P925VDDVREF_FAGC_VHYS0P85VDD << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_001 (7)
-+#define AW87XXX_PID_18_REG_VFAGC_001_VALUE \
-+ (AW87XXX_PID_18_REG_VFAGC_001 << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_VFAGC_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_VFAGC_DEFAULT \
-+ (AW87XXX_PID_18_REG_VFAGC_DEFAULT_VALUE << AW87XXX_PID_18_REG_VFAGC_START_BIT)
-+
-+/* REG_CP_OVP_TEST bit 3:2 (DFT2 0x62) */
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT (2)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_CP_OVP_TEST_BITS_LEN)-1) << AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_8P7V (0)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_8P7V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_TEST_8P7V << AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_9P0V (1)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_9P0V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_TEST_9P0V << AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_9P20V (2)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_9P20V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_TEST_9P20V << AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_9P5V (3)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_9P5V_VALUE \
-+ (AW87XXX_PID_18_REG_CP_OVP_TEST_9P5V << AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_CP_OVP_TEST_DEFAULT \
-+ (AW87XXX_PID_18_REG_CP_OVP_TEST_DEFAULT_VALUE << AW87XXX_PID_18_REG_CP_OVP_TEST_START_BIT)
-+
-+/* REG_PAVG bit 1:0 (DFT2 0x62) */
-+#define AW87XXX_PID_18_REG_PAVG_START_BIT (0)
-+#define AW87XXX_PID_18_REG_PAVG_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_PAVG_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_PAVG_BITS_LEN)-1) << AW87XXX_PID_18_REG_PAVG_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_PAVG_PO0P94 (0)
-+#define AW87XXX_PID_18_REG_PAVG_PO0P94_VALUE \
-+ (AW87XXX_PID_18_REG_PAVG_PO0P94 << AW87XXX_PID_18_REG_PAVG_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PAVG_PO1 (1)
-+#define AW87XXX_PID_18_REG_PAVG_PO1_VALUE \
-+ (AW87XXX_PID_18_REG_PAVG_PO1 << AW87XXX_PID_18_REG_PAVG_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PAVG_PO1P06 (2)
-+#define AW87XXX_PID_18_REG_PAVG_PO1P06_VALUE \
-+ (AW87XXX_PID_18_REG_PAVG_PO1P06 << AW87XXX_PID_18_REG_PAVG_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PAVG_TURN_TO_10 (3)
-+#define AW87XXX_PID_18_REG_PAVG_TURN_TO_10_VALUE \
-+ (AW87XXX_PID_18_REG_PAVG_TURN_TO_10 << AW87XXX_PID_18_REG_PAVG_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PAVG_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_PAVG_DEFAULT \
-+ (AW87XXX_PID_18_REG_PAVG_DEFAULT_VALUE << AW87XXX_PID_18_REG_PAVG_START_BIT)
-+
-+/* default value of DFT2 (0x62) */
-+/* #define AW87XXX_PID_18_DFT2_DEFAULT (0x11) */
-+
-+/* DFT3 (0x63) detail */
-+/* REG_TDEAD_CP bit 7 (DFT3 0x63) */
-+#define AW87XXX_PID_18_REG_TDEAD_CP_START_BIT (7)
-+#define AW87XXX_PID_18_REG_TDEAD_CP_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_TDEAD_CP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_TDEAD_CP_BITS_LEN)-1) << AW87XXX_PID_18_REG_TDEAD_CP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_TDEAD_CP_DEFAULT_SETTIG (0)
-+#define AW87XXX_PID_18_REG_TDEAD_CP_DEFAULT_SETTIG_VALUE \
-+ (AW87XXX_PID_18_REG_TDEAD_CP_DEFAULT_SETTIG << AW87XXX_PID_18_REG_TDEAD_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TDEAD_CP_ENLARGE_THE_DEAD_TIME (1)
-+#define AW87XXX_PID_18_REG_TDEAD_CP_ENLARGE_THE_DEAD_TIME_VALUE \
-+ (AW87XXX_PID_18_REG_TDEAD_CP_ENLARGE_THE_DEAD_TIME << AW87XXX_PID_18_REG_TDEAD_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TDEAD_CP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_TDEAD_CP_DEFAULT \
-+ (AW87XXX_PID_18_REG_TDEAD_CP_DEFAULT_VALUE << AW87XXX_PID_18_REG_TDEAD_CP_START_BIT)
-+
-+/* REG_EN_EXPVDD bit 6 (DFT3 0x63) */
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_START_BIT (6)
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_EXPVDD_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_EXPVDD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_DISABLE (0)
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_EXPVDD_DISABLE << AW87XXX_PID_18_REG_EN_EXPVDD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_ENABLE (1)
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_EN_EXPVDD_ENABLE << AW87XXX_PID_18_REG_EN_EXPVDD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EN_EXPVDD_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_EXPVDD_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_EXPVDD_START_BIT)
-+
-+/* REG_TM_MADP bit 5 (DFT3 0x63) */
-+#define AW87XXX_PID_18_REG_TM_MADP_START_BIT (5)
-+#define AW87XXX_PID_18_REG_TM_MADP_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_TM_MADP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_TM_MADP_BITS_LEN)-1) << AW87XXX_PID_18_REG_TM_MADP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_TM_MADP_DISABLE (0)
-+#define AW87XXX_PID_18_REG_TM_MADP_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_TM_MADP_DISABLE << AW87XXX_PID_18_REG_TM_MADP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TM_MADP_ENABLE (1)
-+#define AW87XXX_PID_18_REG_TM_MADP_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_TM_MADP_ENABLE << AW87XXX_PID_18_REG_TM_MADP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TM_MADP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_TM_MADP_DEFAULT \
-+ (AW87XXX_PID_18_REG_TM_MADP_DEFAULT_VALUE << AW87XXX_PID_18_REG_TM_MADP_START_BIT)
-+
-+/* REG_PD_UVLO bit 4 (DFT3 0x63) */
-+#define AW87XXX_PID_18_REG_PD_UVLO_START_BIT (4)
-+#define AW87XXX_PID_18_REG_PD_UVLO_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_PD_UVLO_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_PD_UVLO_BITS_LEN)-1) << AW87XXX_PID_18_REG_PD_UVLO_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_PD_UVLO_ENABLE (0)
-+#define AW87XXX_PID_18_REG_PD_UVLO_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_UVLO_ENABLE << AW87XXX_PID_18_REG_PD_UVLO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_UVLO_DISABLE (1)
-+#define AW87XXX_PID_18_REG_PD_UVLO_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_UVLO_DISABLE << AW87XXX_PID_18_REG_PD_UVLO_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_UVLO_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_PD_UVLO_DEFAULT \
-+ (AW87XXX_PID_18_REG_PD_UVLO_DEFAULT_VALUE << AW87XXX_PID_18_REG_PD_UVLO_START_BIT)
-+
-+/* REG_UVLO_VTH bit 3:2 (DFT3 0x63) */
-+#define AW87XXX_PID_18_REG_UVLO_VTH_START_BIT (2)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_UVLO_VTH_BITS_LEN)-1) << AW87XXX_PID_18_REG_UVLO_VTH_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_UVLO_VTH_2P6V2P5V (0)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_2P6V2P5V_VALUE \
-+ (AW87XXX_PID_18_REG_UVLO_VTH_2P6V2P5V << AW87XXX_PID_18_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_UVLO_VTH_2P7V2P6V (1)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_2P7V2P6V_VALUE \
-+ (AW87XXX_PID_18_REG_UVLO_VTH_2P7V2P6V << AW87XXX_PID_18_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_UVLO_VTH_2P5V2P4V (2)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_2P5V2P4V_VALUE \
-+ (AW87XXX_PID_18_REG_UVLO_VTH_2P5V2P4V << AW87XXX_PID_18_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_UVLO_VTH_TURN_TO_00 (3)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_TURN_TO_00_VALUE \
-+ (AW87XXX_PID_18_REG_UVLO_VTH_TURN_TO_00 << AW87XXX_PID_18_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_UVLO_VTH_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_UVLO_VTH_DEFAULT \
-+ (AW87XXX_PID_18_REG_UVLO_VTH_DEFAULT_VALUE << AW87XXX_PID_18_REG_UVLO_VTH_START_BIT)
-+
-+/* REG_PD_CRS0 bit 1:0 (DFT3 0x63) */
-+#define AW87XXX_PID_18_REG_PD_CRS0_START_BIT (0)
-+#define AW87XXX_PID_18_REG_PD_CRS0_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_PD_CRS0_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_PD_CRS0_BITS_LEN)-1) << AW87XXX_PID_18_REG_PD_CRS0_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_PD_CRS0_ALL_OF_AGC1_AGC2_AND_AGC3_CROSS_ZERO_ENABLE (0)
-+#define AW87XXX_PID_18_REG_PD_CRS0_ALL_OF_AGC1_AGC2_AND_AGC3_CROSS_ZERO_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_CRS0_ALL_OF_AGC1_AGC2_AND_AGC3_CROSS_ZERO_ENABLE << AW87XXX_PID_18_REG_PD_CRS0_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_CRS0_BOTH_AGC2_AND_AGC3_CROSS_ZERO_ENABLE_AGC1_CROSS_ZERO_DISABLE (1)
-+#define AW87XXX_PID_18_REG_PD_CRS0_BOTH_AGC2_AND_AGC3_CROSS_ZERO_ENABLE_AGC1_CROSS_ZERO_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_CRS0_BOTH_AGC2_AND_AGC3_CROSS_ZERO_ENABLE_AGC1_CROSS_ZERO_DISABLE << AW87XXX_PID_18_REG_PD_CRS0_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_CRS0_ONLY_AGC3_CROSS_ZERO_ENABLE_AGC1_AND_AGC2_CROSS_ZERO_DISABLE (2)
-+#define AW87XXX_PID_18_REG_PD_CRS0_ONLY_AGC3_CROSS_ZERO_ENABLE_AGC1_AND_AGC2_CROSS_ZERO_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_CRS0_ONLY_AGC3_CROSS_ZERO_ENABLE_AGC1_AND_AGC2_CROSS_ZERO_DISABLE << AW87XXX_PID_18_REG_PD_CRS0_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_CRS0_ALL_OF_AGC1_AGC2_AND_AGC3_CROSS_ZERO_DISABLE (3)
-+#define AW87XXX_PID_18_REG_PD_CRS0_ALL_OF_AGC1_AGC2_AND_AGC3_CROSS_ZERO_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_PD_CRS0_ALL_OF_AGC1_AGC2_AND_AGC3_CROSS_ZERO_DISABLE << AW87XXX_PID_18_REG_PD_CRS0_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_PD_CRS0_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_PD_CRS0_DEFAULT \
-+ (AW87XXX_PID_18_REG_PD_CRS0_DEFAULT_VALUE << AW87XXX_PID_18_REG_PD_CRS0_START_BIT)
-+
-+/* default value of DFT3 (0x63) */
-+/* #define AW87XXX_PID_18_DFT3_DEFAULT (0x00) */
-+
-+/* DFT4 (0x64) detail */
-+/* REG_DEGLITCH_CP bit 7:6 (DFT4 0x64) */
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT (6)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_DEGLITCH_CP_BITS_LEN)-1) << AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_3NS (0)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_3NS_VALUE \
-+ (AW87XXX_PID_18_REG_DEGLITCH_CP_3NS << AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_5NS (1)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_5NS_VALUE \
-+ (AW87XXX_PID_18_REG_DEGLITCH_CP_5NS << AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_1NS (2)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_1NS_VALUE \
-+ (AW87XXX_PID_18_REG_DEGLITCH_CP_1NS << AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_0NS (3)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_0NS_VALUE \
-+ (AW87XXX_PID_18_REG_DEGLITCH_CP_0NS << AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_DEGLITCH_CP_DEFAULT \
-+ (AW87XXX_PID_18_REG_DEGLITCH_CP_DEFAULT_VALUE << AW87XXX_PID_18_REG_DEGLITCH_CP_START_BIT)
-+
-+/* REG_EDGE_CP bit 5:4 (DFT4 0x64) */
-+#define AW87XXX_PID_18_REG_EDGE_CP_START_BIT (4)
-+#define AW87XXX_PID_18_REG_EDGE_CP_BITS_LEN (2)
-+#define AW87XXX_PID_18_REG_EDGE_CP_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EDGE_CP_BITS_LEN)-1) << AW87XXX_PID_18_REG_EDGE_CP_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EDGE_CP_DEFAULT_14P8NS (0)
-+#define AW87XXX_PID_18_REG_EDGE_CP_DEFAULT_14P8NS_VALUE \
-+ (AW87XXX_PID_18_REG_EDGE_CP_DEFAULT_14P8NS << AW87XXX_PID_18_REG_EDGE_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EDGE_CP_MODERATE_13P5NS (1)
-+#define AW87XXX_PID_18_REG_EDGE_CP_MODERATE_13P5NS_VALUE \
-+ (AW87XXX_PID_18_REG_EDGE_CP_MODERATE_13P5NS << AW87XXX_PID_18_REG_EDGE_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EDGE_CP_SLOWEST_19P3NS (2)
-+#define AW87XXX_PID_18_REG_EDGE_CP_SLOWEST_19P3NS_VALUE \
-+ (AW87XXX_PID_18_REG_EDGE_CP_SLOWEST_19P3NS << AW87XXX_PID_18_REG_EDGE_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EDGE_CP_FASTEST_4P6NS00 (3)
-+#define AW87XXX_PID_18_REG_EDGE_CP_FASTEST_4P6NS00_VALUE \
-+ (AW87XXX_PID_18_REG_EDGE_CP_FASTEST_4P6NS00 << AW87XXX_PID_18_REG_EDGE_CP_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EDGE_CP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_EDGE_CP_DEFAULT \
-+ (AW87XXX_PID_18_REG_EDGE_CP_DEFAULT_VALUE << AW87XXX_PID_18_REG_EDGE_CP_START_BIT)
-+
-+/* REG_TESTSEL bit 3:0 (DFT4 0x64) */
-+#define AW87XXX_PID_18_REG_TESTSEL_START_BIT (0)
-+#define AW87XXX_PID_18_REG_TESTSEL_BITS_LEN (4)
-+#define AW87XXX_PID_18_REG_TESTSEL_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_TESTSEL_BITS_LEN)-1) << AW87XXX_PID_18_REG_TESTSEL_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_VBG_FROM_BIAS (0)
-+#define AW87XXX_PID_18_REG_TESTSEL_VBG_FROM_BIAS_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_VBG_FROM_BIAS << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_VCOM1_FROM_PREAMP (1)
-+#define AW87XXX_PID_18_REG_TESTSEL_VCOM1_FROM_PREAMP_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_VCOM1_FROM_PREAMP << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_VREF_AGC_FROM_RAMP (2)
-+#define AW87XXX_PID_18_REG_TESTSEL_VREF_AGC_FROM_RAMP_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_VREF_AGC_FROM_RAMP << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_VREF_ADP_FROM_THGEN (3)
-+#define AW87XXX_PID_18_REG_TESTSEL_VREF_ADP_FROM_THGEN_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_VREF_ADP_FROM_THGEN << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_OC (4)
-+#define AW87XXX_PID_18_REG_TESTSEL_OC_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_OC << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_OT160 (5)
-+#define AW87XXX_PID_18_REG_TESTSEL_OT160_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_OT160 << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_UVLO (6)
-+#define AW87XXX_PID_18_REG_TESTSEL_UVLO_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_UVLO << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_GT_P_TEST_FROM_GATEDRIVER (7)
-+#define AW87XXX_PID_18_REG_TESTSEL_GT_P_TEST_FROM_GATEDRIVER_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_GT_P_TEST_FROM_GATEDRIVER << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_GT_N_TEST_FROM_GATEDRIVER (8)
-+#define AW87XXX_PID_18_REG_TESTSEL_GT_N_TEST_FROM_GATEDRIVER_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_GT_N_TEST_FROM_GATEDRIVER << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_GT1_P_TEST_FROM_GATEDRIVER (9)
-+#define AW87XXX_PID_18_REG_TESTSEL_GT1_P_TEST_FROM_GATEDRIVER_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_GT1_P_TEST_FROM_GATEDRIVER << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_GT1_N_TEST_FROM_GATEDRIVER (10)
-+#define AW87XXX_PID_18_REG_TESTSEL_GT1_N_TEST_FROM_GATEDRIVER_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_GT1_N_TEST_FROM_GATEDRIVER << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_OVP0_TEST_FROM_OVP (11)
-+#define AW87XXX_PID_18_REG_TESTSEL_OVP0_TEST_FROM_OVP_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_OVP0_TEST_FROM_OVP << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_OVP1_TEST_FROM_OVP (12)
-+#define AW87XXX_PID_18_REG_TESTSEL_OVP1_TEST_FROM_OVP_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_OVP1_TEST_FROM_OVP << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_PORN_TEST_FROM_PORN (13)
-+#define AW87XXX_PID_18_REG_TESTSEL_PORN_TEST_FROM_PORN_VALUE \
-+ (AW87XXX_PID_18_REG_TESTSEL_PORN_TEST_FROM_PORN << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_TESTSEL_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_TESTSEL_DEFAULT \
-+ (AW87XXX_PID_18_REG_TESTSEL_DEFAULT_VALUE << AW87XXX_PID_18_REG_TESTSEL_START_BIT)
-+
-+/* default value of DFT4 (0x64) */
-+/* #define AW87XXX_PID_18_DFT4_DEFAULT (0x00) */
-+
-+/* DFT5 (0x65) detail */
-+/* FCLK_CS bit 5 (DFT5 0x65) */
-+#define AW87XXX_PID_18_FCLK_CS_START_BIT (5)
-+#define AW87XXX_PID_18_FCLK_CS_BITS_LEN (1)
-+#define AW87XXX_PID_18_FCLK_CS_MASK \
-+ (~(((1<<AW87XXX_PID_18_FCLK_CS_BITS_LEN)-1) << AW87XXX_PID_18_FCLK_CS_START_BIT))
-+
-+#define AW87XXX_PID_18_FCLK_CS_CHOOSE_THE_CLOCK_SIGNALCLK_PA_FROM_THE_ANALOG_PART (0)
-+#define AW87XXX_PID_18_FCLK_CS_CHOOSE_THE_CLOCK_SIGNALCLK_PA_FROM_THE_ANALOG_PART_VALUE \
-+ (AW87XXX_PID_18_FCLK_CS_CHOOSE_THE_CLOCK_SIGNALCLK_PA_FROM_THE_ANALOG_PART << AW87XXX_PID_18_FCLK_CS_START_BIT)
-+
-+#define AW87XXX_PID_18_FCLK_CS_CHOOSE_THE_CLOCK_SIGNAL_GENERATED_BY_DIGITAL_PART_THEN_WRITE_0XA5_TO_THE_0X66_REGISTORGENERATE_A_PULSE_AFTER_EACH_WRITING (1)
-+#define AW87XXX_PID_18_FCLK_CS_CHOOSE_THE_CLOCK_SIGNAL_GENERATED_BY_DIGITAL_PART_THEN_WRITE_0XA5_TO_THE_0X66_REGISTORGENERATE_A_PULSE_AFTER_EACH_WRITING_VALUE \
-+ (AW87XXX_PID_18_FCLK_CS_CHOOSE_THE_CLOCK_SIGNAL_GENERATED_BY_DIGITAL_PART_THEN_WRITE_0XA5_TO_THE_0X66_REGISTORGENERATE_A_PULSE_AFTER_EACH_WRITING << AW87XXX_PID_18_FCLK_CS_START_BIT)
-+
-+#define AW87XXX_PID_18_FCLK_CS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_FCLK_CS_DEFAULT \
-+ (AW87XXX_PID_18_FCLK_CS_DEFAULT_VALUE << AW87XXX_PID_18_FCLK_CS_START_BIT)
-+
-+/* REG_OT_TEST bit 4 (DFT5 0x65) */
-+#define AW87XXX_PID_18_REG_OT_TEST_START_BIT (4)
-+#define AW87XXX_PID_18_REG_OT_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_OT_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_OT_TEST_BITS_LEN)-1) << AW87XXX_PID_18_REG_OT_TEST_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_OT_TEST_DISABLE_NOT_TO_TRANSFER_THE_OTN_TO_THE_TEST_BLOCK (0)
-+#define AW87XXX_PID_18_REG_OT_TEST_DISABLE_NOT_TO_TRANSFER_THE_OTN_TO_THE_TEST_BLOCK_VALUE \
-+ (AW87XXX_PID_18_REG_OT_TEST_DISABLE_NOT_TO_TRANSFER_THE_OTN_TO_THE_TEST_BLOCK << AW87XXX_PID_18_REG_OT_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_OT_TEST_ENABLE_TO_TRANSFER_THE_OTN_TO_THE_TEST_BLOCK (1)
-+#define AW87XXX_PID_18_REG_OT_TEST_ENABLE_TO_TRANSFER_THE_OTN_TO_THE_TEST_BLOCK_VALUE \
-+ (AW87XXX_PID_18_REG_OT_TEST_ENABLE_TO_TRANSFER_THE_OTN_TO_THE_TEST_BLOCK << AW87XXX_PID_18_REG_OT_TEST_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_OT_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_OT_TEST_DEFAULT \
-+ (AW87XXX_PID_18_REG_OT_TEST_DEFAULT_VALUE << AW87XXX_PID_18_REG_OT_TEST_START_BIT)
-+
-+/* REG_EN_OC bit 3 (DFT5 0x65) */
-+#define AW87XXX_PID_18_REG_EN_OC_START_BIT (3)
-+#define AW87XXX_PID_18_REG_EN_OC_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_EN_OC_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_EN_OC_BITS_LEN)-1) << AW87XXX_PID_18_REG_EN_OC_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_EN_OC_TURN_OFF_THE_OC_BLOCK_FORCE_0C0 (0)
-+#define AW87XXX_PID_18_REG_EN_OC_TURN_OFF_THE_OC_BLOCK_FORCE_0C0_VALUE \
-+ (AW87XXX_PID_18_REG_EN_OC_TURN_OFF_THE_OC_BLOCK_FORCE_0C0 << AW87XXX_PID_18_REG_EN_OC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_OC_TURN_ON_THE_OC_BLOCK_FUNCTION (1)
-+#define AW87XXX_PID_18_REG_EN_OC_TURN_ON_THE_OC_BLOCK_FUNCTION_VALUE \
-+ (AW87XXX_PID_18_REG_EN_OC_TURN_ON_THE_OC_BLOCK_FUNCTION << AW87XXX_PID_18_REG_EN_OC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_EN_OC_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_18_REG_EN_OC_DEFAULT \
-+ (AW87XXX_PID_18_REG_EN_OC_DEFAULT_VALUE << AW87XXX_PID_18_REG_EN_OC_START_BIT)
-+
-+/* EN_RD bit 2 (DFT5 0x65) */
-+#define AW87XXX_PID_18_EN_RD_START_BIT (2)
-+#define AW87XXX_PID_18_EN_RD_BITS_LEN (1)
-+#define AW87XXX_PID_18_EN_RD_MASK \
-+ (~(((1<<AW87XXX_PID_18_EN_RD_BITS_LEN)-1) << AW87XXX_PID_18_EN_RD_START_BIT))
-+
-+#define AW87XXX_PID_18_EN_RD_DISABLE (0)
-+#define AW87XXX_PID_18_EN_RD_DISABLE_VALUE \
-+ (AW87XXX_PID_18_EN_RD_DISABLE << AW87XXX_PID_18_EN_RD_START_BIT)
-+
-+#define AW87XXX_PID_18_EN_RD_ENABLE (1)
-+#define AW87XXX_PID_18_EN_RD_ENABLE_VALUE \
-+ (AW87XXX_PID_18_EN_RD_ENABLE << AW87XXX_PID_18_EN_RD_START_BIT)
-+
-+#define AW87XXX_PID_18_EN_RD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_EN_RD_DEFAULT \
-+ (AW87XXX_PID_18_EN_RD_DEFAULT_VALUE << AW87XXX_PID_18_EN_RD_START_BIT)
-+
-+/* REG_FAST_VFAGC bit 1 (DFT5 0x65) */
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_START_BIT (1)
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_FAST_VFAGC_BITS_LEN)-1) << AW87XXX_PID_18_REG_FAST_VFAGC_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_DISABLE (0)
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_FAST_VFAGC_DISABLE << AW87XXX_PID_18_REG_FAST_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_ENABLE (1)
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_FAST_VFAGC_ENABLE << AW87XXX_PID_18_REG_FAST_VFAGC_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_FAST_VFAGC_DEFAULT \
-+ (AW87XXX_PID_18_REG_FAST_VFAGC_DEFAULT_VALUE << AW87XXX_PID_18_REG_FAST_VFAGC_START_BIT)
-+
-+/* REG_FAST_HVDD bit 0 (DFT5 0x65) */
-+#define AW87XXX_PID_18_REG_FAST_HVDD_START_BIT (0)
-+#define AW87XXX_PID_18_REG_FAST_HVDD_BITS_LEN (1)
-+#define AW87XXX_PID_18_REG_FAST_HVDD_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_FAST_HVDD_BITS_LEN)-1) << AW87XXX_PID_18_REG_FAST_HVDD_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_FAST_HVDD_DISABLE (0)
-+#define AW87XXX_PID_18_REG_FAST_HVDD_DISABLE_VALUE \
-+ (AW87XXX_PID_18_REG_FAST_HVDD_DISABLE << AW87XXX_PID_18_REG_FAST_HVDD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FAST_HVDD_ENABLE (1)
-+#define AW87XXX_PID_18_REG_FAST_HVDD_ENABLE_VALUE \
-+ (AW87XXX_PID_18_REG_FAST_HVDD_ENABLE << AW87XXX_PID_18_REG_FAST_HVDD_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FAST_HVDD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_REG_FAST_HVDD_DEFAULT \
-+ (AW87XXX_PID_18_REG_FAST_HVDD_DEFAULT_VALUE << AW87XXX_PID_18_REG_FAST_HVDD_START_BIT)
-+
-+/* default value of DFT5 (0x65) */
-+/* #define AW87XXX_PID_18_DFT5_DEFAULT (0x08) */
-+
-+/* DFT6 (0x66) detail */
-+/* Q_SHDN bit 7:4 (DFT6 0x66) */
-+#define AW87XXX_PID_18_Q_SHDN_START_BIT (4)
-+#define AW87XXX_PID_18_Q_SHDN_BITS_LEN (4)
-+#define AW87XXX_PID_18_Q_SHDN_MASK \
-+ (~(((1<<AW87XXX_PID_18_Q_SHDN_BITS_LEN)-1) << AW87XXX_PID_18_Q_SHDN_START_BIT))
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE1 (0)
-+#define AW87XXX_PID_18_Q_SHDN_MODE1_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE1 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE2 (1)
-+#define AW87XXX_PID_18_Q_SHDN_MODE2_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE2 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE3 (2)
-+#define AW87XXX_PID_18_Q_SHDN_MODE3_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE3 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE4 (3)
-+#define AW87XXX_PID_18_Q_SHDN_MODE4_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE4 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE5 (4)
-+#define AW87XXX_PID_18_Q_SHDN_MODE5_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE5 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE6 (5)
-+#define AW87XXX_PID_18_Q_SHDN_MODE6_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE6 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE7 (6)
-+#define AW87XXX_PID_18_Q_SHDN_MODE7_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE7 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE8 (7)
-+#define AW87XXX_PID_18_Q_SHDN_MODE8_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE8 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE9 (8)
-+#define AW87XXX_PID_18_Q_SHDN_MODE9_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE9 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_MODE10 (9)
-+#define AW87XXX_PID_18_Q_SHDN_MODE10_VALUE \
-+ (AW87XXX_PID_18_Q_SHDN_MODE10 << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+#define AW87XXX_PID_18_Q_SHDN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_18_Q_SHDN_DEFAULT \
-+ (AW87XXX_PID_18_Q_SHDN_DEFAULT_VALUE << AW87XXX_PID_18_Q_SHDN_START_BIT)
-+
-+/* REG_FSS bit 3:0 (DFT6 0x66) */
-+#define AW87XXX_PID_18_REG_FSS_START_BIT (0)
-+#define AW87XXX_PID_18_REG_FSS_BITS_LEN (4)
-+#define AW87XXX_PID_18_REG_FSS_MASK \
-+ (~(((1<<AW87XXX_PID_18_REG_FSS_BITS_LEN)-1) << AW87XXX_PID_18_REG_FSS_START_BIT))
-+
-+#define AW87XXX_PID_18_REG_FSS_1P408MHZ (0)
-+#define AW87XXX_PID_18_REG_FSS_1P408MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P408MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P432MHZ (1)
-+#define AW87XXX_PID_18_REG_FSS_1P432MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P432MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P456MHZ (3)
-+#define AW87XXX_PID_18_REG_FSS_1P456MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P456MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P48MHZ (2)
-+#define AW87XXX_PID_18_REG_FSS_1P48MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P48MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P504MHZ (6)
-+#define AW87XXX_PID_18_REG_FSS_1P504MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P504MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P528MHZ (7)
-+#define AW87XXX_PID_18_REG_FSS_1P528MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P528MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P552MHZ (5)
-+#define AW87XXX_PID_18_REG_FSS_1P552MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P552MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P576MHZ (4)
-+#define AW87XXX_PID_18_REG_FSS_1P576MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P576MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P6MHZ (12)
-+#define AW87XXX_PID_18_REG_FSS_1P6MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P6MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P627MHZ (13)
-+#define AW87XXX_PID_18_REG_FSS_1P627MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P627MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P655MHZ (15)
-+#define AW87XXX_PID_18_REG_FSS_1P655MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P655MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P682MHZ (14)
-+#define AW87XXX_PID_18_REG_FSS_1P682MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P682MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P71MHZ (10)
-+#define AW87XXX_PID_18_REG_FSS_1P71MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P71MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P737MHZ (11)
-+#define AW87XXX_PID_18_REG_FSS_1P737MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P737MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P765MHZ (9)
-+#define AW87XXX_PID_18_REG_FSS_1P765MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P765MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_1P792MHZ (8)
-+#define AW87XXX_PID_18_REG_FSS_1P792MHZ_VALUE \
-+ (AW87XXX_PID_18_REG_FSS_1P792MHZ << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+#define AW87XXX_PID_18_REG_FSS_DEFAULT_VALUE (0x0C)
-+#define AW87XXX_PID_18_REG_FSS_DEFAULT \
-+ (AW87XXX_PID_18_REG_FSS_DEFAULT_VALUE << AW87XXX_PID_18_REG_FSS_START_BIT)
-+
-+/* default value of DFT6 (0x66) */
-+/* #define AW87XXX_PID_18_DFT6_DEFAULT (0x0C) */
-+
-+/* detail information of registers end */
-+
-+#endif /* #ifndef __AW87XXX_PID_18_REG_H__ */
-\ No newline at end of file
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_39_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_39_reg.h
-new file mode 100644
-index 000000000..3391673f9
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_39_reg.h
-@@ -0,0 +1,67 @@
-+#ifndef __AW87XXX_PID_39_REG_H__
-+#define __AW87XXX_PID_39_REG_H__
-+
-+#define AW87XXX_PID_39_REG_CHIPID (0x00)
-+#define AW87XXX_PID_39_REG_SYSCTRL (0x01)
-+#define AW87XXX_PID_39_REG_MODECTRL (0x02)
-+#define AW87XXX_PID_39_REG_CPOVP (0x03)
-+#define AW87XXX_PID_39_REG_CPP (0x04)
-+#define AW87XXX_PID_39_REG_GAIN (0x05)
-+#define AW87XXX_PID_39_REG_AGC3_PO (0x06)
-+#define AW87XXX_PID_39_REG_AGC3 (0x07)
-+#define AW87XXX_PID_39_REG_AGC2_PO (0x08)
-+#define AW87XXX_PID_39_REG_AGC2 (0x09)
-+#define AW87XXX_PID_39_REG_AGC1 (0x0A)
-+#define AW87XXX_PID_39_REG_DFT1 (0x62)
-+#define AW87XXX_PID_39_REG_DFT2 (0x63)
-+#define AW87XXX_PID_39_REG_ENCRY (0x64)
-+
-+#define AW87XXX_PID_39_MODECTRL_DEFAULT (0xa0)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_39_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_39_REG_MAX (0x65)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_39_reg_access[AW87XXX_PID_39_REG_MAX] = {
-+ [AW87XXX_PID_39_REG_CHIPID] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_39_REG_SYSCTRL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_MODECTRL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_CPOVP] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_CPP] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_GAIN] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_AGC3_PO] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_AGC3] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_AGC2_PO] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_AGC2] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_AGC1] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_39_REG_DFT1] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_39_REG_DFT2] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_39_REG_ENCRY] = (REG_RD_ACCESS),
-+};
-+
-+/* RCV_MODE bit 3 (MODECTRL 0x02) */
-+#define AW87XXX_PID_39_REC_MODE_START_BIT (3)
-+#define AW87XXX_PID_39_REC_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_39_REC_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_39_REC_MODE_BITS_LEN)-1) << AW87XXX_PID_39_REC_MODE_START_BIT))
-+
-+#define AW87XXX_PID_39_REC_MODE_DISABLE (0)
-+#define AW87XXX_PID_39_REC_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_39_REC_MODE_DISABLE << AW87XXX_PID_39_REC_MODE_START_BIT)
-+
-+#define AW87XXX_PID_39_REC_MODE_ENABLE (1)
-+#define AW87XXX_PID_39_REC_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_39_REC_MODE_ENABLE << AW87XXX_PID_39_REC_MODE_START_BIT)
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_59_3x9_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_59_3x9_reg.h
-new file mode 100644
-index 000000000..46a88aea5
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_59_3x9_reg.h
-@@ -0,0 +1,93 @@
-+/*
-+ * @Descripttion: Header file of AW87XXX_PID_59_3X9_REG
-+ * @version: V1.33
-+ * @Author: zhaozhongbo
-+ * @Date: 2021-03-10
-+ * @LastEditors: Please set LastEditors
-+ * @LastEditTime: 2021-03-10
-+ */
-+#ifndef __AW87XXX_PID_59_3X9_REG_H__
-+#define __AW87XXX_PID_59_3X9_REG_H__
-+
-+#define AW87XXX_PID_59_3X9_REG_CHIPID (0x00)
-+#define AW87XXX_PID_59_3X9_REG_SYSCTRL (0x01)
-+#define AW87XXX_PID_59_3X9_REG_MDCRTL (0x02)
-+#define AW87XXX_PID_59_3X9_REG_CPOVP (0x03)
-+#define AW87XXX_PID_59_3X9_REG_CPP (0x04)
-+#define AW87XXX_PID_59_3X9_REG_PAG (0x05)
-+#define AW87XXX_PID_59_3X9_REG_AGC3PO (0x06)
-+#define AW87XXX_PID_59_3X9_REG_AGC3PA (0x07)
-+#define AW87XXX_PID_59_3X9_REG_AGC2PO (0x08)
-+#define AW87XXX_PID_59_3X9_REG_AGC2PA (0x09)
-+#define AW87XXX_PID_59_3X9_REG_AGC1PA (0x0A)
-+#define AW87XXX_PID_59_3X9_REG_SYSST (0x59)
-+#define AW87XXX_PID_59_3X9_REG_SYSINT (0x60)
-+#define AW87XXX_PID_59_3X9_REG_DFT_SYSCTRL (0x61)
-+#define AW87XXX_PID_59_3X9_REG_DFT_MDCTRL (0x62)
-+#define AW87XXX_PID_59_3X9_REG_DFT_CPOVP2 (0x63)
-+#define AW87XXX_PID_59_3X9_REG_DFT_AGCPA (0x64)
-+#define AW87XXX_PID_59_3X9_REG_DFT_POFR (0x65)
-+#define AW87XXX_PID_59_3X9_REG_DFT_OC (0x66)
-+#define AW87XXX_PID_59_3X9_REG_DFT_OTA (0x67)
-+#define AW87XXX_PID_59_3X9_REG_DFT_REF (0x68)
-+#define AW87XXX_PID_59_3X9_REG_DFT_LDO (0x69)
-+#define AW87XXX_PID_59_3X9_REG_ENCR (0x70)
-+
-+#define AW87XXX_PID_59_3X9_ENCR_DEFAULT (0x00)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_59_3x9_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_59_3X9_REG_MAX (0x71)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_59_3x9_reg_access[AW87XXX_PID_59_3X9_REG_MAX] = {
-+ [AW87XXX_PID_59_3X9_REG_CHIPID] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_SYSCTRL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_MDCRTL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_CPOVP] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_CPP] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_PAG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_AGC3PO] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_AGC3PA] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_AGC2PO] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_AGC2PA] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_AGC1PA] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_SYSST] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_SYSINT] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_SYSCTRL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_MDCTRL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_CPOVP2] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_AGCPA] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_POFR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_OC] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_OTA] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_REF] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_DFT_LDO] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_3X9_REG_ENCR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+};
-+
-+/* SPK_MODE bit 2 (MDCRTL 0x02) */
-+#define AW87XXX_PID_59_3X9_SPK_MODE_START_BIT (2)
-+#define AW87XXX_PID_59_3X9_SPK_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_59_3X9_SPK_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_59_3X9_SPK_MODE_BITS_LEN)-1) << AW87XXX_PID_59_3X9_SPK_MODE_START_BIT))
-+
-+#define AW87XXX_PID_59_3X9_SPK_MODE_DISABLE (0)
-+#define AW87XXX_PID_59_3X9_SPK_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_59_3X9_SPK_MODE_DISABLE << AW87XXX_PID_59_3X9_SPK_MODE_START_BIT)
-+
-+#define AW87XXX_PID_59_3X9_SPK_MODE_ENABLE (1)
-+#define AW87XXX_PID_59_3X9_SPK_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_59_3X9_SPK_MODE_ENABLE << AW87XXX_PID_59_3X9_SPK_MODE_START_BIT)
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_59_5x9_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_59_5x9_reg.h
-new file mode 100644
-index 000000000..819761b5c
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_59_5x9_reg.h
-@@ -0,0 +1,94 @@
-+/*
-+ * @Descripttion: Header file of AW87XXX_PID_59_5X9_REG
-+ * @version: V1.33
-+ * @Author: zhaozhongbo
-+ * @Date: 2021-03-10
-+ * @LastEditors: Please set LastEditors
-+ * @LastEditTime: 2021-03-10
-+ */
-+#ifndef __AW87XXX_PID_59_5X9_REG_H__
-+#define __AW87XXX_PID_59_5X9_REG_H__
-+
-+
-+#define AW87XXX_PID_59_5X9_REG_CHIPID (0x00)
-+#define AW87XXX_PID_59_5X9_REG_SYSCTRL (0x01)
-+#define AW87XXX_PID_59_5X9_REG_BATSAFE (0x02)
-+#define AW87XXX_PID_59_5X9_REG_BSTOVR (0x03)
-+#define AW87XXX_PID_59_5X9_REG_BSTVPR (0x04)
-+#define AW87XXX_PID_59_5X9_REG_PAGR (0x05)
-+#define AW87XXX_PID_59_5X9_REG_PAGC3OPR (0x06)
-+#define AW87XXX_PID_59_5X9_REG_PAGC3PR (0x07)
-+#define AW87XXX_PID_59_5X9_REG_PAGC2OPR (0x08)
-+#define AW87XXX_PID_59_5X9_REG_PAGC2PR (0x09)
-+#define AW87XXX_PID_59_5X9_REG_PAGC1PR (0x0A)
-+#define AW87XXX_PID_59_5X9_REG_SYSST (0x58)
-+#define AW87XXX_PID_59_5X9_REG_SYSINT (0x59)
-+#define AW87XXX_PID_59_5X9_REG_CPCR (0x60)
-+#define AW87XXX_PID_59_5X9_REG_DFT1R (0x61)
-+#define AW87XXX_PID_59_5X9_REG_DFT2R (0x62)
-+#define AW87XXX_PID_59_5X9_REG_DFT3R (0x63)
-+#define AW87XXX_PID_59_5X9_REG_DFT4R (0x64)
-+#define AW87XXX_PID_59_5X9_REG_DFT5R (0x65)
-+#define AW87XXX_PID_59_5X9_REG_DFT6R (0x66)
-+#define AW87XXX_PID_59_5X9_REG_DFT7R (0x67)
-+#define AW87XXX_PID_59_5X9_REG_DFT8R (0x68)
-+#define AW87XXX_PID_59_5X9_REG_ENCR (0x69)
-+
-+#define AW87XXX_PID_59_5X9_ENCRY_DEFAULT (0x00)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_59_5x9_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_59_5X9_REG_MAX (0x70)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_59_5x9_reg_access[AW87XXX_PID_59_5X9_REG_MAX] = {
-+ [AW87XXX_PID_59_5X9_REG_CHIPID] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_SYSCTRL] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_BATSAFE] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_BSTOVR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_BSTVPR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_PAGR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_PAGC3OPR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_PAGC3PR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_PAGC2OPR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_PAGC2PR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_PAGC1PR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_SYSST] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_SYSINT] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_CPCR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT1R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT2R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT3R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT4R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT5R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT6R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT7R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_DFT8R] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_59_5X9_REG_ENCR] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+};
-+
-+/* RCV_MODE bit 3 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_59_5X9_REC_MODE_START_BIT (3)
-+#define AW87XXX_PID_59_5X9_REC_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_59_5X9_REC_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_59_5X9_REC_MODE_BITS_LEN)-1) << AW87XXX_PID_59_5X9_REC_MODE_START_BIT))
-+
-+#define AW87XXX_PID_59_5X9_REC_MODE_DISABLE (0)
-+#define AW87XXX_PID_59_5X9_REC_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_59_5X9_REC_MODE_DISABLE << AW87XXX_PID_59_5X9_REC_MODE_START_BIT)
-+
-+#define AW87XXX_PID_59_5X9_REC_MODE_ENABLE (1)
-+#define AW87XXX_PID_59_5X9_REC_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_59_5X9_REC_MODE_ENABLE << AW87XXX_PID_59_5X9_REC_MODE_START_BIT)
-+
-+#endif
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_5a_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_5a_reg.h
-new file mode 100644
-index 000000000..e56922a3c
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_5a_reg.h
-@@ -0,0 +1,4124 @@
-+/*
-+ * @Descripttion: Header file of AW87XXX_PID_5A_REG
-+ * @version: V1.4
-+ * @Author: zhaozhongbo
-+ * @Date: 2021-03-10
-+ * @LastEditors: Please set LastEditors
-+ * @LastEditTime: 2021-03-10
-+ */
-+#ifndef __AW87XXX_PID_5A_REG_H__
-+#define __AW87XXX_PID_5A_REG_H__
-+
-+/* registers list */
-+#define AW87XXX_PID_5A_REG_ID_REG (0x00)
-+#define AW87XXX_PID_5A_REG_SYSCTRL_REG (0x01)
-+#define AW87XXX_PID_5A_REG_BATSAFE_REG (0x02)
-+#define AW87XXX_PID_5A_REG_BSTOVR_REG (0x03)
-+#define AW87XXX_PID_5A_REG_BSTCPR1_REG (0x04)
-+#define AW87XXX_PID_5A_REG_BSTCPR2_REG (0x05)
-+#define AW87XXX_PID_5A_REG_PAGR_REG (0x06)
-+#define AW87XXX_PID_5A_REG_PAGC3OPR_REG (0x07)
-+#define AW87XXX_PID_5A_REG_PAGC3PR_REG (0x08)
-+#define AW87XXX_PID_5A_REG_PAGC2OPR_REG (0x09)
-+#define AW87XXX_PID_5A_REG_PAGC2PR_REG (0x0A)
-+#define AW87XXX_PID_5A_REG_PAGC1PR_REG (0x0B)
-+#define AW87XXX_PID_5A_REG_ADP_MODE_REG (0x0C)
-+#define AW87XXX_PID_5A_REG_ADPBST_TIME1_REG (0x0D)
-+#define AW87XXX_PID_5A_REG_ADPBST_TIME2_REG (0x0E)
-+#define AW87XXX_PID_5A_REG_ADPBST_VTH_REG (0x0F)
-+#define AW87XXX_PID_5A_REG_BOOST_PAR_REG (0x10)
-+#define AW87XXX_PID_5A_REG_BOOST_VOUT_DET_REG (0x57)
-+#define AW87XXX_PID_5A_REG_SYSST_REG (0x58)
-+#define AW87XXX_PID_5A_REG_SYSINT_REG (0x59)
-+#define AW87XXX_PID_5A_REG_DFT1R_REG (0x60)
-+#define AW87XXX_PID_5A_REG_DFT2R_REG (0x61)
-+#define AW87XXX_PID_5A_REG_DFT3R_REG (0x62)
-+#define AW87XXX_PID_5A_REG_DFT4R_REG (0x63)
-+#define AW87XXX_PID_5A_REG_DFT5R_REG (0x64)
-+#define AW87XXX_PID_5A_REG_DFT6R_REG (0x65)
-+#define AW87XXX_PID_5A_REG_DFT7R_REG (0x66)
-+#define AW87XXX_PID_5A_REG_DFT8R_REG (0x67)
-+#define AW87XXX_PID_5A_REG_DFT9R_REG (0x68)
-+#define AW87XXX_PID_5A_REG_DFTAR_REG (0x69)
-+#define AW87XXX_PID_5A_REG_DFTBR_REG (0x70)
-+#define AW87XXX_PID_5A_REG_DFTCR_REG (0x71)
-+#define AW87XXX_PID_5A_REG_DFTDR_REG (0x72)
-+#define AW87XXX_PID_5A_REG_DFTER_REG (0x73)
-+#define AW87XXX_PID_5A_REG_DFTFR_REG (0x74)
-+#define AW87XXX_PID_5A_REG_test1_REG (0x75)
-+#define AW87XXX_PID_5A_REG_test2_REG (0x76)
-+#define AW87XXX_PID_5A_REG_ENCR_REG (0x77)
-+
-+#define AW87XXX_PID_5A_DFT3R_DEFAULT (0x02)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_5a_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_5A_REG_MAX (0x78)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_5a_reg_access[AW87XXX_PID_5A_REG_MAX] = {
-+ [AW87XXX_PID_5A_REG_ID_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_5A_REG_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_BATSAFE_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_BSTOVR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_BSTCPR1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_BSTCPR2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_PAGR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_PAGC3OPR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_PAGC3PR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_PAGC2OPR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_PAGC2PR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_PAGC1PR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_ADP_MODE_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_ADPBST_TIME1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_ADPBST_TIME2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_ADPBST_VTH_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_BOOST_PAR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_BOOST_VOUT_DET_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_5A_REG_SYSST_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_5A_REG_SYSINT_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT1R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT2R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT3R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT4R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT5R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT6R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT7R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT8R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFT9R_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFTAR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFTBR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFTCR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFTDR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFTER_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_DFTFR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_test1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_test2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_5A_REG_ENCR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+};
-+
-+/* detail information of registers begin */
-+/* ID (0x00) detail */
-+/* IDCODE bit 7:0 (ID 0x00) */
-+#define AW87XXX_PID_5A_REG_IDCODE_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_IDCODE_BITS_LEN (8)
-+#define AW87XXX_PID_5A_REG_IDCODE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_IDCODE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_IDCODE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_IDCODE_DEFAULT_VALUE (0x5A)
-+#define AW87XXX_PID_5A_REG_IDCODE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_IDCODE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_IDCODE_START_BIT)
-+
-+/* default value of ID (0x00) */
-+/* #define AW87XXX_PID_5A_REG_ID_DEFAULT (0x5A) */
-+
-+/* SYSCTRL (0x01) detail */
-+/* EN_SW bit 6 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_EN_SW_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_EN_SW_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_SW_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_SW_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_SW_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_SW_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_SW_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_SW_DISABLE << AW87XXX_PID_5A_REG_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_SW_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_SW_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_SW_ENABLE << AW87XXX_PID_5A_REG_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_SW_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_SW_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_SW_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_SW_START_BIT)
-+
-+/* EN_CP bit 5 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_EN_CP_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_EN_CP_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_CP_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_CP_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_CP_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_CP_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_CP_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_CP_DISABLE << AW87XXX_PID_5A_REG_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_CP_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_CP_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_CP_ENABLE << AW87XXX_PID_5A_REG_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_CP_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_EN_CP_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_CP_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_CP_START_BIT)
-+
-+/* EN_BOOST bit 4 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_EN_BOOST_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_BOOST_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_BOOST_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_DISABLE << AW87XXX_PID_5A_REG_EN_BOOST_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_ENABLE << AW87XXX_PID_5A_REG_EN_BOOST_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_BOOST_START_BIT)
-+
-+/* EN_PA bit 3 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_EN_PA_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_EN_PA_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_PA_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_PA_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_PA_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_PA_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_PA_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_PA_DISABLE << AW87XXX_PID_5A_REG_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_PA_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_PA_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_PA_ENABLE << AW87XXX_PID_5A_REG_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_PA_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_EN_PA_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_PA_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_PA_START_BIT)
-+
-+/* RCV_MODE bit 2 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_RCV_MODE_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_RCV_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_RCV_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_RCV_MODE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_RCV_MODE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_RCV_MODE_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_RCV_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_RCV_MODE_DISABLE << AW87XXX_PID_5A_REG_RCV_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RCV_MODE_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_RCV_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_RCV_MODE_ENABLE << AW87XXX_PID_5A_REG_RCV_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RCV_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_RCV_MODE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_RCV_MODE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_RCV_MODE_START_BIT)
-+
-+/* EN_OVERLOAD bit 1 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_OVERLOAD_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_OVERLOAD_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_DISABL (0)
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_DISABL_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_OVERLOAD_DISABL << AW87XXX_PID_5A_REG_EN_OVERLOAD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_OVERLOAD_ENABLE << AW87XXX_PID_5A_REG_EN_OVERLOAD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_OVERLOAD_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_OVERLOAD_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_OVERLOAD_START_BIT)
-+
-+/* EN_HVBAT bit 0 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_HVBAT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_HVBAT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_HVBAT_DISABLE << AW87XXX_PID_5A_REG_EN_HVBAT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_HVBAT_ENABLE << AW87XXX_PID_5A_REG_EN_HVBAT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_HVBAT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_HVBAT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_HVBAT_START_BIT)
-+
-+/* default value of SYSCTRL (0x01) */
-+/* #define AW87XXX_PID_5A_REG_SYSCTRL_DEFAULT (0x38) */
-+
-+/* BATSAFE (0x02) detail */
-+/* BAT_SFGD_DEGLITCH bit 6:5 (BATSAFE 0x02) */
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_1MS (0)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_1MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_1MS << AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_500US (1)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_500US_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_500US << AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_200US (2)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_200US_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_200US << AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_DISABLE (3)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_DISABLE << AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+/* BAT_SFGD_VTH bit 4:3 (BATSAFE 0x02) */
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BAT_SFGD_VTH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P3V (0)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P3V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P3V << AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P4V (1)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P4V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P4V << AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P5V (2)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P5V << AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P6V (3)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P6V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_VTH_3P6V << AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_VTH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_VTH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BAT_SFGD_VTH_START_BIT)
-+
-+/* EN_BAT_SFGD bit 2 (BATSAFE 0x02) */
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_BAT_SFGD_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_BAT_SFGD_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BAT_SFGD_DISABLE << AW87XXX_PID_5A_REG_EN_BAT_SFGD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BAT_SFGD_ENABLE << AW87XXX_PID_5A_REG_EN_BAT_SFGD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_BAT_SFGD_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_BAT_SFGD_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_BAT_SFGD_START_BIT)
-+
-+/* BAT_SFGD_LEVEL bit 1:0 (BATSAFE 0x02) */
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_5V (0)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_5V << AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_5P5V (1)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_5P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_5P5V << AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_6V (2)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_6V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_6V << AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_6P5V (3)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_6P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_6P5V << AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_DEFAULT_VALUE (0x01)
-+#define AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BAT_SFGD_LEVEL_START_BIT)
-+
-+/* default value of BATSAFE (0x02) */
-+/* #define AW87XXX_PID_5A_REG_BATSAFE_DEFAULT (0x09) */
-+
-+/* BSTOVR (0x03) detail */
-+/* BST_VOUT bit 4:0 (BSTOVR 0x03) */
-+#define AW87XXX_PID_5A_REG_BST_VOUT_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_BITS_LEN (5)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_VOUT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_6P5V (0)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_6P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_6P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_6P75V (1)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_6P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_6P75V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P0V (2)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_7P0V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P25V (3)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_7P25V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P5V (4)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_7P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P75V (5)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_7P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_7P75V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P0V (6)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_8P0V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P25V (7)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_8P25V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P5V (8)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_8P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P75V (9)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_8P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_8P75V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P0V (10)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_9P0V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P25V (11)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_9P25V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P5V (12)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_9P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P75V (13)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_9P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_9P75V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P0V (14)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_10P0V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P25V (15)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_10P25V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P5V (16)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_10P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P75V (17)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_10P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_10P75V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P0V (18)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_11P0V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P25V (19)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_11P25V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P5V (20)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_11P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P75V (21)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_11P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_11P75V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_12P0V (22)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_12P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_12P0V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_12P25V (23)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_12P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_12P25V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_12P5V (24)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_12P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_12P5V << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_VOUT_DEFAULT_VALUE (0x0C)
-+#define AW87XXX_PID_5A_REG_BST_VOUT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_VOUT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_VOUT_START_BIT)
-+
-+/* default value of BSTOVR (0x03) */
-+/* #define AW87XXX_PID_5A_REG_BSTOVR_DEFAULT (0x0C) */
-+
-+/* BSTCPR1 (0x04) detail */
-+/* BURST_HYS_SELA bit 7 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BURST_HYS_SELA_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_3P3MV (0)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_3P3MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SELA_3P3MV << AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_5MV (1)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_5MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SELA_5MV << AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_8P3MV (2)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_8P3MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SELA_8P3MV << AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_8P3MV (3)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_8P3MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SELA_8P3MV << AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SELA_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SELA_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BURST_HYS_SELA_START_BIT)
-+
-+/* BST_IPEAK_SS bit 6:5 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_IPEAK_SS_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_0P8A (0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_0P8A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_SS_0P8A << AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_1A (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_1A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_SS_1A << AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_1P5A (2)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_1P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_SS_1P5A << AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_2A (3)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_2A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_SS_2A << AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_SS_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_SS_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_IPEAK_SS_START_BIT)
-+
-+/* BST_IPEAK_ADJ bit 4 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_IPEAK (0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_IPEAK_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_IPEAK << AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_IPEAK0P5A (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_IPEAK0P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_IPEAK0P5A << AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_IPEAK_ADJ_START_BIT)
-+
-+/* BST_IPEAK_LOWBAT_EN bit 3 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_DISABLE << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_ENABLE << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_EN_START_BIT)
-+
-+/* BST_IPEAK_LOWBAT bit 2 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_2P5A (0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_2P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_2P5A << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_2P75A (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_2P75A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_2P75A << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_IPEAK_LOWBAT_START_BIT)
-+
-+/* BURST_HYS_SEL bit 1 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BURST_HYS_SEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_3P3MV (0)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_3P3MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SEL_3P3MV << AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_5MV (1)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_5MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SEL_5MV << AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_8P3MV (2)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_8P3MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SEL_8P3MV << AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_8P3MV (3)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_8P3MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SEL_8P3MV << AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BURST_HYS_SEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BURST_HYS_SEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BURST_HYS_SEL_START_BIT)
-+
-+/* BURST_MODE bit 0 (BSTCPR1 0x04) */
-+#define AW87XXX_PID_5A_REG_BURST_MODE_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BURST_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BURST_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BURST_MODE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BURST_MODE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BURST_MODE_PVDD_DECIDE (0)
-+#define AW87XXX_PID_5A_REG_BURST_MODE_PVDD_DECIDE_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_MODE_PVDD_DECIDE << AW87XXX_PID_5A_REG_BURST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_MODE_BUEST_PEAK_DECIDE (1)
-+#define AW87XXX_PID_5A_REG_BURST_MODE_BUEST_PEAK_DECIDE_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_MODE_BUEST_PEAK_DECIDE << AW87XXX_PID_5A_REG_BURST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BURST_MODE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BURST_MODE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BURST_MODE_START_BIT)
-+
-+/* default value of BSTCPR1 (0x04) */
-+/* #define AW87XXX_PID_5A_REG_BSTCPR1_DEFAULT (0x00) */
-+
-+/* BSTCPR2 (0x05) detail */
-+/* BURST_PEAK bit 5:4 (BSTCPR2 0x05) */
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BURST_PEAK_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_660MV_HYS_800MV (0)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_660MV_HYS_800MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_660MV_HYS_800MV << AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_730MV_HYS_890MV (1)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_730MV_HYS_890MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_730MV_HYS_890MV << AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_780MV_HYS_930MV (2)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_780MV_HYS_930MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_780MV_HYS_930MV << AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_810MV_HYS_970MV (3)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_810MV_HYS_970MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BURST_PEAK_CLAMP_810MV_HYS_970MV << AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BURST_PEAK_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BURST_PEAK_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BURST_PEAK_START_BIT)
-+
-+/* BST_IPEAK bit 3:0 (BSTCPR2 0x05) */
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_IPEAK_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_1P5A (0)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_1P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_1P5A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_1P75A (1)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_1P75A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_1P75A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2A (2)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_2A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2P25A (3)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2P25A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_2P25A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2P5A (4)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_2P5A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2P75A (5)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_2P75A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_2P75A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3A (6)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_3A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3P25 (7)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3P25_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_3P25 << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3P5A (8)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_3P5A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3P75A (9)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_3P75A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_3P75A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_4A (10)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_4A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_4A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_4P25A (11)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_4P25A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_4P25A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_4P5A (12)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_4P5A_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_4P5A << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_DEFAULT_VALUE (0x8)
-+#define AW87XXX_PID_5A_REG_BST_IPEAK_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_IPEAK_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_IPEAK_START_BIT)
-+
-+/* default value of BSTCPR2 (0x05) */
-+/* #define AW87XXX_PID_5A_REG_BSTCPR2_DEFAULT (0x08) */
-+
-+/* PAGR (0x06) detail */
-+/* PA_GAIN bit 4:0 (PAGR 0x06) */
-+#define AW87XXX_PID_5A_REG_PA_GAIN_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_BITS_LEN (5)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_GAIN_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_0DB (0)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_0DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_0DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_1P5DB (1)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_1P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_1P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_3DB (2)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_3DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_3DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_4P5DB (3)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_4P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_4P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_6DB (4)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_6DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_6DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_7P5DB (5)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_7P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_7P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_9DB (6)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_9DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_9DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_10P5DB (7)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_10P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_10P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_12DB (8)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_12DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_12DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_13P5DB (9)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_13P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_13P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_15DB (10)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_15DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_15DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_16P5DB (11)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_16P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_16P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_18DB (12)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_18DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_18DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_19P5DB (13)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_19P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_19P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_21DB (14)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_21DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_21DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_22P5DB (15)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_22P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_22P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_24DB (16)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_24DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_24DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_25P5DB (17)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_25P5DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_25P5DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_27DB (18)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_27DB_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_27DB << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GAIN_DEFAULT_VALUE (0x10)
-+#define AW87XXX_PID_5A_REG_PA_GAIN_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_GAIN_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_GAIN_START_BIT)
-+
-+/* default value of PAGR (0x06) */
-+/* #define AW87XXX_PID_5A_REG_PAGR_DEFAULT (0x10) */
-+
-+/* PAGC3OPR (0x07) detail */
-+/* PAVG_ADJ bit 7:5 (PAGC3OPR 0x07) */
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PAVG_ADJ_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_0P94PO (0)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_0P94PO_VALUE \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_0P94PO << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_0P97PO (1)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_0P97PO_VALUE \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_0P97PO << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P0PO (2)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P0PO_VALUE \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_1P0PO << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P03PO (3)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P03PO_VALUE \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_1P03PO << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P06PO (4)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P06PO_VALUE \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_1P06PO << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P09PO (5)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_1P09PO_VALUE \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_1P09PO << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_PAVG_ADJ_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PAVG_ADJ_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PAVG_ADJ_START_BIT)
-+
-+/* PD_AGC3 bit 4 (PAGC3OPR 0x07) */
-+#define AW87XXX_PID_5A_REG_PD_AGC3_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_PD_AGC3_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PD_AGC3_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PD_AGC3_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PD_AGC3_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PD_AGC3_ENABLE (0)
-+#define AW87XXX_PID_5A_REG_PD_AGC3_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_AGC3_ENABLE << AW87XXX_PID_5A_REG_PD_AGC3_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_AGC3_DISABLE (1)
-+#define AW87XXX_PID_5A_REG_PD_AGC3_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_AGC3_DISABLE << AW87XXX_PID_5A_REG_PD_AGC3_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_AGC3_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_5A_REG_PD_AGC3_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PD_AGC3_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PD_AGC3_START_BIT)
-+
-+/* AGC3_OUTPUT_POWER bit 3:0 (PAGC3OPR 0x07) */
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P5W8_OHM (0)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P5W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P5W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P6W8_OHM (1)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P6W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P6W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P7W8_OHM (2)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P7W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P7W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P8W8_OHM (3)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P8W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P8W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P9W8_OHM (4)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P9W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_0P9W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P0W8_OHM (5)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P0W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P0W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P1W8_OHM (6)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P1W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P1W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P2W8_OHM (7)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P2W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P2W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P3W8_OHM (8)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P3W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P3W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P4W8_OHM (9)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P4W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P4W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P5W8_OHM (10)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P5W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P5W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P6W8_OHM (11)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P6W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P6W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P7W8_OHM (12)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P7W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P7W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P8W8_OHM (13)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P8W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P8W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P9W8_OHM (14)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P9W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_1P9W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_2P0W8_OHM (15)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_2P0W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_2P0W8_OHM << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC3_OUTPUT_POWER_START_BIT)
-+
-+/* default value of PAGC3OPR (0x07) */
-+/* #define AW87XXX_PID_5A_REG_PAGC3OPR_DEFAULT (0x43) */
-+
-+/* PAGC3PR (0x08) detail */
-+/* AGC3_REL_TIME bit 7:5 (PAGC3PR 0x08) */
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC3_REL_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_5P12MSDB (0)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_5P12MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_5P12MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_10P24MSDB (1)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_10P24MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_10P24MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_20P48MSDB (2)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_20P48MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_20P48MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_40P96MSDB (3)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_40P96MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_40P96MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_81P92MSDB (4)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_81P92MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_81P92MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_163P84MSDB (5)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_163P84MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_163P84MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_327P68MSDB (6)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_327P68MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_327P68MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_655P36MSDB (7)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_655P36MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_655P36MSDB << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_AGC3_REL_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC3_REL_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC3_REL_TIME_START_BIT)
-+
-+/* AGC3_ATT_TIME bit 4:2 (PAGC3PR 0x08) */
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC3_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_1P28MSDB (0)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_1P28MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_1P28MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_2P56MSDB (1)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_2P56MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_2P56MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_10P24MSDB (2)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_10P24MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_10P24MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_40P96MSDB (3)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_40P96MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_40P96MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_82MSDB (4)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_82MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_82MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_164MSDB (5)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_164MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_164MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_328MSDB (6)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_328MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_328MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_656MSDB (7)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_656MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_656MSDB << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_5A_REG_AGC3_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC3_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC3_ATT_TIME_START_BIT)
-+
-+/* AGC3_FIRST_ATT_TIME bit 1:0 (PAGC3PR 0x08) */
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_5P12MS (0)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_5P12MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_5P12MS << AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_10P24MS (1)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_10P24MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_10P24MS << AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_20P48MS (2)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_20P48MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_20P48MS << AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_41MS (3)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_41MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_41MS << AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+/* default value of PAGC3PR (0x08) */
-+/* #define AW87XXX_PID_5A_REG_PAGC3PR_DEFAULT (0x4E) */
-+
-+/* PAGC2OPR (0x09) detail */
-+/* AGC2_OUTPUT_POWER bit 3:0 (PAGC2OPR 0x09) */
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P0W8_OHM (0)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P0W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P0W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P2W8_OHM (1)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P2W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P2W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P4W8_OHM (2)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P4W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P4W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P6W8_OHM (3)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P6W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P6W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P8W8_OHM (4)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P8W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_1P8W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P0W8_OHM (5)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P0W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P0W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P2W8_OHM (6)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P2W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P2W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P4W8_OHM (7)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P4W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P4W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P6W8_OHM (8)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P6W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P6W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P8W8_OHM (9)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P8W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_2P8W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_3P0W8_OHM (10)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_3P0W8_OHM_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_3P0W8_OHM << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_AGC2_OFF (11)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_AGC2_OFF_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_AGC2_OFF << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC2_OUTPUT_POWER_START_BIT)
-+
-+/* default value of PAGC2OPR (0x09) */
-+/* #define AW87XXX_PID_5A_REG_PAGC2OPR_DEFAULT (0x03) */
-+
-+/* PAGC2PR (0x0A) detail */
-+/* AGC2_ATT_TIME bit 4:2 (PAGC2PR 0x0A) */
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC2_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P16MSDB (0)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P16MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P16MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P32MSDB (1)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P32MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P32MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P64MSDB (2)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P64MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_0P64MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_2P56MSDB (3)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_2P56MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_2P56MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_10P24MSDB (4)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_10P24MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_10P24MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_40P96MSDB (5)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_40P96MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_40P96MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_82MSDB (6)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_82MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_82MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_164MSDB (7)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_164MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_164MSDB << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_AGC2_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC2_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC2_ATT_TIME_START_BIT)
-+
-+/* AGC2_FIRST_ATT_TIME bit 1:0 (PAGC2PR 0x0A) */
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_0P08MS (0)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_0P08MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_0P08MS << AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_0P32MS (1)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_0P32MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_0P32MS << AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_1P28MS (2)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_1P28MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_1P28MS << AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_5P12MS (3)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_5P12MS_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_5P12MS << AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+/* default value of PAGC2PR (0x0A) */
-+/* #define AW87XXX_PID_5A_REG_PAGC2PR_DEFAULT (0x08) */
-+
-+/* PAGC1PR (0x0B) detail */
-+/* AGC1_OUTPUT_LEVEL bit 6:3 (PAGC1PR 0x0B) */
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5V (0)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P2V (1)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P2V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P2V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P4V (2)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P4V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P4V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P6V (3)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P6V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P6V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P8V (4)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P8V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_5P8V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P0V (5)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P0V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P2V (6)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P2V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P2V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P4V (7)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P4V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P4V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P6V (8)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P6V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P6V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P8V (9)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P8V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_6P8V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7V (10)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P2V (11)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P2V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P2V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P4V (12)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P4V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P4V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P6V (13)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P6V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P6V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P8V (14)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P8V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_7P8V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_8V (15)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_8V_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_8V << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_DEFAULT_VALUE (0x9)
-+#define AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+/* AGC1_ATT_TIME bit 2:1 (PAGC1PR 0x0B) */
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC1_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P04MSDB (0)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P04MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P04MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P08MSDB (1)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P08MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P08MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P16MSDB (2)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P16MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P16MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P32MSDB (3)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P32MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P32MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P02MSDB (4)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P02MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P02MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P01MSDB (5)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P01MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P01MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P005MSDB (6)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P005MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P005MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P005MSDB (7)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P005MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_0P005MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC1_ATT_TIME_START_BIT)
-+
-+/* PD_AGC1 bit 0 (PAGC1PR 0x0B) */
-+#define AW87XXX_PID_5A_REG_PD_AGC1_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_PD_AGC1_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PD_AGC1_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PD_AGC1_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PD_AGC1_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PD_AGC1_ENABLE (0)
-+#define AW87XXX_PID_5A_REG_PD_AGC1_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_AGC1_ENABLE << AW87XXX_PID_5A_REG_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_AGC1_DISABLE (1)
-+#define AW87XXX_PID_5A_REG_PD_AGC1_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_AGC1_DISABLE << AW87XXX_PID_5A_REG_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_AGC1_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PD_AGC1_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PD_AGC1_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PD_AGC1_START_BIT)
-+
-+/* default value of PAGC1PR (0x0B) */
-+/* #define AW87XXX_PID_5A_REG_PAGC1PR_DEFAULT (0x4A) */
-+
-+/* ADP_MODE (0x0C) detail */
-+/* AGC1_ATT_TIMEA bit 3 (ADP_MODE 0x0C) */
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P04MSDB (0)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P04MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P04MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P08MSDB (1)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P08MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P08MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P16MSDB (2)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P16MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P16MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P32MSDB (3)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P32MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P32MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P02MSDB (4)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P02MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P02MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P01MSDB (5)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P01MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P01MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P005MSDB (6)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P005MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P005MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P005MSDB (7)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P005MSDB_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_0P005MSDB << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC1_ATT_TIMEA_START_BIT)
-+
-+/* ADPBOOST_MODE bit 2:0 (ADP_MODE 0x0C) */
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADPBOOST_MODE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_PASS_THROUGH (0)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_PASS_THROUGH_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_PASS_THROUGH << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_FORCE_BOOST (1)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_FORCE_BOOST_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_FORCE_BOOST << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD1 (2)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD1_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD1 << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD2 (3)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD2_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD2 << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD3 (4)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD3_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD3 << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD4 (5)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD4_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD4 << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD5 (6)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD5_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD5 << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD2 (7)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD2_VALUE \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_MD2 << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_5A_REG_ADPBOOST_MODE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADPBOOST_MODE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADPBOOST_MODE_START_BIT)
-+
-+/* default value of ADP_MODE (0x0C) */
-+/* #define AW87XXX_PID_5A_REG_ADP_MODE_DEFAULT (0x03) */
-+
-+/* ADPBST_TIME1 (0x0D) detail */
-+/* ADP_BST_TIME_2W bit 7:4 (ADPBST_TIME1 0x0D) */
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_1P25MS (0)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_1P25MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_1P25MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_2P5MS (1)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_2P5MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_2P5MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_5MS (2)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_5MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_5MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_10MS (3)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_10MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_10MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_15MS (4)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_15MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_15MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_20MS (5)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_20MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_20MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_30MS (6)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_30MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_30MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_40MS (7)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_40MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_40MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_65MS (8)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_65MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_65MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_80MS (9)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_80MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_80MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_100MS (10)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_100MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_100MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_120MS (11)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_120MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_120MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_140MS (12)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_140MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_140MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_160MS (13)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_160MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_160MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_320MS (14)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_320MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_320MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_480MS (15)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_480MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_480MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_DEFAULT_VALUE (0xD)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADP_BST_TIME_2W_START_BIT)
-+
-+/* ADP_BST_TIME_0P4W bit 3:0 (ADPBST_TIME1 0x0D) */
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_1P25MS (0)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_1P25MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_1P25MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_2P5MS (1)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_2P5MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_2P5MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_5MS (2)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_5MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_5MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_10MS (3)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_10MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_10MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_15MS (4)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_15MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_15MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_20MS (5)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_20MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_20MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_30MS (6)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_30MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_30MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_40MS (7)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_40MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_40MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_65MS (8)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_65MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_65MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_80MS (9)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_80MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_80MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_100MS (10)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_100MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_100MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_120MS (11)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_120MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_120MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_140MS (12)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_140MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_140MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_160MS (13)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_160MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_160MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_320MS (14)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_320MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_320MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_480MS (15)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_480MS_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_480MS << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_DEFAULT_VALUE (0xD)
-+#define AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADP_BST_TIME_0P4W_START_BIT)
-+
-+/* default value of ADPBST_TIME1 (0x0D) */
-+/* #define AW87XXX_PID_5A_REG_ADPBST_TIME1_DEFAULT (0xDD) */
-+
-+/* ADPBST_TIME2 (0x0E) detail */
-+/* BST_UP_DT bit 7:4 (ADPBST_TIME2 0x0E) */
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_UP_DT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P005MS (0)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P005MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P005MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P01MS (1)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P01MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P01MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P015MS (2)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P015MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P015MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P02MS (3)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P02MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P02MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P03MS (4)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P03MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P03MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P04MS (5)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P04MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P04MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P05MS (6)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P05MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P05MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P06MS (7)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P06MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P06MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P07MS (8)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P07MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P07MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P08MS (9)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P08MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P08MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P10MS (10)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P10MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P10MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P16MS (11)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P16MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P16MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P20MS (12)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P20MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P20MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P32MS (13)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P32MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P32MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P64MS (14)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_0P64MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_0P64MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_1P28MS (15)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_1P28MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_1P28MS << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_DEFAULT_VALUE (0x7)
-+#define AW87XXX_PID_5A_REG_BST_UP_DT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_UP_DT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_UP_DT_START_BIT)
-+
-+/* BST_DOWN_TD bit 3:0 (ADPBST_TIME2 0x0E) */
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_BITS_LEN (4)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_DOWN_TD_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P01MS (0)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P01MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P01MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P02MS (1)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P02MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P02MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P04MS (2)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P04MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P04MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P08MS (3)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P08MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P08MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P12MS (4)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P12MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P12MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P16MS (5)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P16MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P16MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P24MS (6)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P24MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P24MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P32MS (7)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P32MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P32MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P64MS (8)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P64MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P64MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P96MS (9)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_0P96MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_0P96MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_1P28MS (10)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_1P28MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_1P28MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_1P60MS (11)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_1P60MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_1P60MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_1P92MS (12)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_1P92MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_1P92MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_2P56MS (13)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_2P56MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_2P56MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_5P12MS (14)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_5P12MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_5P12MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_10P24MS (15)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_10P24MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_10P24MS << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_DEFAULT_VALUE (0xA)
-+#define AW87XXX_PID_5A_REG_BST_DOWN_TD_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_DOWN_TD_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_DOWN_TD_START_BIT)
-+
-+/* default value of ADPBST_TIME2 (0x0E) */
-+/* #define AW87XXX_PID_5A_REG_ADPBST_TIME2_DEFAULT (0x7A) */
-+
-+/* ADPBST_VTH (0x0F) detail */
-+/* ADP_LOW_STEP bit 7:6 (ADPBST_VTH 0x0F) */
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADP_LOW_STEP_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00000 (0)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00000_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00000 << AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00001 (1)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00001_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00001 << AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00010 (2)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00010_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00010 << AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00011 (3)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00011_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_LOW_STEP_1ST_BST_OUT00011 << AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_ADP_LOW_STEP_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADP_LOW_STEP_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADP_LOW_STEP_START_BIT)
-+
-+/* SET_BOOST_VTH2 bit 5:3 (ADPBST_VTH 0x0F) */
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SET_BOOST_VTH2_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P2W (0)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P2W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P2W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P4W (1)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P4W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P4W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P6W (2)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P6W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P6W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P8W (3)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P8W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_1P8W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P0W (4)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P0W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P0W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P2W (5)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P2W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P2W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P4W (6)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P4W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P4W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P4W (7)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P4W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_2P4W << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH2_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH2_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SET_BOOST_VTH2_START_BIT)
-+
-+/* SET_BOOST_VTH1 bit 2:0 (ADPBST_VTH 0x0F) */
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SET_BOOST_VTH1_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P1W (0)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P1W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P1W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P2W (1)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P2W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P2W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P3W (2)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P3W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P3W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P4W (3)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P4W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P4W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P5W (4)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P5W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P5W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W (5)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W (6)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W (7)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W_VALUE \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_0P6W << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_5A_REG_SET_BOOST_VTH1_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SET_BOOST_VTH1_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SET_BOOST_VTH1_START_BIT)
-+
-+/* default value of ADPBST_VTH (0x0F) */
-+/* #define AW87XXX_PID_5A_REG_ADPBST_VTH_DEFAULT (0x23) */
-+
-+/* BOOST_PAR (0x10) detail */
-+/* CLKDLY_SELECT bit 7 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CLKDLY_SELECT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CLKDLY_SELECT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_DELAY_CLK_CHOOSE_CLK_DLY (0)
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_DELAY_CLK_CHOOSE_CLK_DLY_VALUE \
-+ (AW87XXX_PID_5A_REG_CLKDLY_SELECT_DELAY_CLK_CHOOSE_CLK_DLY << AW87XXX_PID_5A_REG_CLKDLY_SELECT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_DELAY_CLK_CHOOSE_MAXIM_DUTY (1)
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_DELAY_CLK_CHOOSE_MAXIM_DUTY_VALUE \
-+ (AW87XXX_PID_5A_REG_CLKDLY_SELECT_DELAY_CLK_CHOOSE_MAXIM_DUTY << AW87XXX_PID_5A_REG_CLKDLY_SELECT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_CLKDLY_SELECT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CLKDLY_SELECT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CLKDLY_SELECT_START_BIT)
-+
-+/* CPOK_VBGOK bit 6 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CPOK_VBGOK_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CPOK_VBGOK_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_ENABLE_CPOK (0)
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_ENABLE_CPOK_VALUE \
-+ (AW87XXX_PID_5A_REG_CPOK_VBGOK_ENABLE_CPOK << AW87XXX_PID_5A_REG_CPOK_VBGOK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_ENABLE_VBGOK (1)
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_ENABLE_VBGOK_VALUE \
-+ (AW87XXX_PID_5A_REG_CPOK_VBGOK_ENABLE_VBGOK << AW87XXX_PID_5A_REG_CPOK_VBGOK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_CPOK_VBGOK_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CPOK_VBGOK_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CPOK_VBGOK_START_BIT)
-+
-+/* EN_LOWBAT_ADJ bit 5 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_DISABLE << AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_ENABLE << AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_LOWBAT_ADJ_START_BIT)
-+
-+/* EN_ADP_MODE1_DEGLITCH bit 4 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_DISABLE << AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_ENABLE << AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_ADP_MODE1_DEGLITCH_START_BIT)
-+
-+/* EN_VCLAMP_MIN_VTH bit 3 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_DISABLE << AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_ENABLE << AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_VCLAMP_MIN_VTH_START_BIT)
-+
-+/* SS_ADP_BIAS bit 2 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SS_ADP_BIAS_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SS_ADP_BIAS_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_SS_ADP_BIAS_4UA (0)
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_SS_ADP_BIAS_4UA_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_ADP_BIAS_SS_ADP_BIAS_4UA << AW87XXX_PID_5A_REG_SS_ADP_BIAS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_SS_ADP_BIAS_8UA (1)
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_SS_ADP_BIAS_8UA_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_ADP_BIAS_SS_ADP_BIAS_8UA << AW87XXX_PID_5A_REG_SS_ADP_BIAS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_SS_ADP_BIAS_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SS_ADP_BIAS_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SS_ADP_BIAS_START_BIT)
-+
-+/* BOOST_VTH1_0P1W_0P2W bit 1 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BOOST_VTH1_0P1W (0)
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BOOST_VTH1_0P1W_VALUE \
-+ (AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BOOST_VTH1_0P1W << AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BOOST_VTH1_0P2W (1)
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BOOST_VTH1_0P2W_VALUE \
-+ (AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_BOOST_VTH1_0P2W << AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BOOST_VTH1_0P1W_0P2W_START_BIT)
-+
-+/* EN_LOWBAT_BOOST_VTH1 bit 0 (BOOST_PAR 0x10) */
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_DISABLE << AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_ENABLE << AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_LOWBAT_BOOST_VTH1_START_BIT)
-+
-+/* default value of BOOST_PAR (0x10) */
-+/* #define AW87XXX_PID_5A_REG_BOOST_PAR_DEFAULT (0x08) */
-+
-+/* BOOST_VOUT_DET (0x57) detail */
-+/* ADP_BOOST_VOUT bit 4:0 (BOOST_VOUT_DET 0x57) */
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_BITS_LEN (5)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_6P5V (0)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_6P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_6P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_6P75V (1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_6P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_6P75V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P0V (2)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P0V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P25V (3)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P25V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P5V (4)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P75V (5)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_7P75V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P0V (6)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P0V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P25V (7)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P25V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P5V (8)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P75V (9)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_8P75V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P0V (10)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P0V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P25V (11)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P25V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P5V (12)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P75V (13)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_9P75V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P0V (14)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P0V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P25V (15)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P25V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P5V (16)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P75V (17)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_10P75V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P0V (18)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P0V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P25V (19)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P25V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P5V (20)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P75V (21)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_11P75V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P0V (22)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P0V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P0V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P25V (23)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P25V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P5V (24)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_12P5V << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_DEFAULT_VALUE (0x0C)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADP_BOOST_VOUT_START_BIT)
-+
-+/* default value of BOOST_VOUT_DET (0x57) */
-+/* #define AW87XXX_PID_5A_REG_BOOST_VOUT_DET_DEFAULT (0x0C) */
-+
-+/* SYSST (0x58) detail */
-+/* UVLO_S bit 7 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_UVLO_S_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_UVLO_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_UVLO_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_UVLO_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_UVLO_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_UVLO_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_UVLO_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_UVLO_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_S_VBAT_UNDER_VOLTAGE (1)
-+#define AW87XXX_PID_5A_REG_UVLO_S_VBAT_UNDER_VOLTAGE_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_S_VBAT_UNDER_VOLTAGE << AW87XXX_PID_5A_REG_UVLO_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_UVLO_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_UVLO_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_UVLO_S_START_BIT)
-+
-+/* LOW_BATT_S bit 6 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_LOW_BATT_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_LOW_BATT_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_LOW_BATT_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_LOW_BATT_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_LOW_VBAT_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_LOW_VBAT_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_LOW_BATT_S_LOW_VBAT_DETECTED << AW87XXX_PID_5A_REG_LOW_BATT_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_LOW_BATT_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_LOW_BATT_S_START_BIT)
-+
-+/* BST_OVP_S bit 5 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_BST_OVP_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_BOOST_OVER_VOLTAGE_PROTECTION (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_BOOST_OVER_VOLTAGE_PROTECTION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP_S_BOOST_OVER_VOLTAGE_PROTECTION << AW87XXX_PID_5A_REG_BST_OVP_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP_S_START_BIT)
-+
-+/* BST_OVP2_S bit 4 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP2_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP2_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_BST_OVP2_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_BOOST_HEAVY_LOAD_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_BOOST_HEAVY_LOAD_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_S_BOOST_HEAVY_LOAD_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_BST_OVP2_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP2_S_START_BIT)
-+
-+/* BST_SCP_S bit 3 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SCP_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SCP_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SCP_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_BST_SCP_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SCP_S_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_BST_SCP_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_SCP_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SCP_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SCP_S_START_BIT)
-+
-+/* PA_OC_S bit 2 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_PA_OC_S_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_PA_OC_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PA_OC_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_OC_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_OC_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_PA_OC_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_PA_OC_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_S_PA_OVER_CURRENT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_PA_OC_S_PA_OVER_CURRENT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_S_PA_OVER_CURRENT_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_PA_OC_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_PA_OC_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_OC_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_OC_S_START_BIT)
-+
-+/* OT160_S bit 1 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_OT160_S_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_OT160_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_OT160_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_OT160_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_OT160_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_OT160_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_OT160_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_OT160_S_NORMAL_OPERATION << AW87XXX_PID_5A_REG_OT160_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_OT160_S_PA_OVER_TEMPRETURE_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_OT160_S_PA_OVER_TEMPRETURE_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_OT160_S_PA_OVER_TEMPRETURE_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_OT160_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_OT160_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_OT160_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_OT160_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_OT160_S_START_BIT)
-+
-+/* ADP_BOOST_S bit 0 (SYSST 0x58) */
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADP_BOOST_S_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADP_BOOST_S_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_DIRECT_MODE (0)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_DIRECT_MODE_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_S_DIRECT_MODE << AW87XXX_PID_5A_REG_ADP_BOOST_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_BOOST_MODE (1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_BOOST_MODE_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_S_BOOST_MODE << AW87XXX_PID_5A_REG_ADP_BOOST_S_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_S_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_S_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADP_BOOST_S_START_BIT)
-+
-+/* default value of SYSST (0x58) */
-+/* #define AW87XXX_PID_5A_REG_SYSST_DEFAULT (0xFF) */
-+
-+/* SYSINT (0x59) detail */
-+/* UVLO_I bit 7 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_UVLO_I_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_UVLO_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_UVLO_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_UVLO_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_UVLO_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_UVLO_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_UVLO_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_UVLO_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_I_VBAT_UNDER_VOLTAGE (1)
-+#define AW87XXX_PID_5A_REG_UVLO_I_VBAT_UNDER_VOLTAGE_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_I_VBAT_UNDER_VOLTAGE << AW87XXX_PID_5A_REG_UVLO_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_UVLO_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_UVLO_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_UVLO_I_START_BIT)
-+
-+/* LOW_BATT_I bit 6 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_LOW_BATT_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_LOW_BATT_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_LOW_BATT_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_LOW_BATT_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_LOW_VBAT_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_LOW_VBAT_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_LOW_BATT_I_LOW_VBAT_DETECTED << AW87XXX_PID_5A_REG_LOW_BATT_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_LOW_BATT_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_LOW_BATT_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_LOW_BATT_I_START_BIT)
-+
-+/* BST_OVP_I bit 5 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_BST_OVP_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_BOOST_OVER_VOLTAGE_PROTECTION (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_BOOST_OVER_VOLTAGE_PROTECTION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP_I_BOOST_OVER_VOLTAGE_PROTECTION << AW87XXX_PID_5A_REG_BST_OVP_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP_I_START_BIT)
-+
-+/* BST_OVP2_I bit 4 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP2_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP2_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_BST_OVP2_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_BOOST_HEAVY_LOAD_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_BOOST_HEAVY_LOAD_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_I_BOOST_HEAVY_LOAD_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_BST_OVP2_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP2_I_START_BIT)
-+
-+/* BST_SCP_I bit 3 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SCP_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SCP_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SCP_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_BST_SCP_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SCP_I_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_BST_SCP_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_SCP_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SCP_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SCP_I_START_BIT)
-+
-+/* PA_OC_I bit 2 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_PA_OC_I_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_PA_OC_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PA_OC_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_OC_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_OC_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_PA_OC_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_PA_OC_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_I_PA_OVER_CURRENT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_PA_OC_I_PA_OVER_CURRENT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_I_PA_OVER_CURRENT_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_PA_OC_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_PA_OC_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_OC_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_OC_I_START_BIT)
-+
-+/* OT160_I bit 1 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_OT160_I_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_OT160_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_OT160_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_OT160_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_OT160_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_OT160_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_5A_REG_OT160_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_5A_REG_OT160_I_NORMAL_OPERATION << AW87XXX_PID_5A_REG_OT160_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_OT160_I_PA_OVER_TEMPRETURE_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_5A_REG_OT160_I_PA_OVER_TEMPRETURE_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_5A_REG_OT160_I_PA_OVER_TEMPRETURE_PROTECTION_DETECTED << AW87XXX_PID_5A_REG_OT160_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_OT160_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_OT160_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_OT160_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_OT160_I_START_BIT)
-+
-+/* ADP_BOOST_I bit 0 (SYSINT 0x59) */
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_ADP_BOOST_I_BITS_LEN)-1) << AW87XXX_PID_5A_REG_ADP_BOOST_I_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_DIRECT_MODE (0)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_DIRECT_MODE_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_I_DIRECT_MODE << AW87XXX_PID_5A_REG_ADP_BOOST_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_BOOST_MODE (1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_BOOST_MODE_VALUE \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_I_BOOST_MODE << AW87XXX_PID_5A_REG_ADP_BOOST_I_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_ADP_BOOST_I_DEFAULT \
-+ (AW87XXX_PID_5A_REG_ADP_BOOST_I_DEFAULT_VALUE << AW87XXX_PID_5A_REG_ADP_BOOST_I_START_BIT)
-+
-+/* default value of SYSINT (0x59) */
-+/* #define AW87XXX_PID_5A_REG_SYSINT_DEFAULT (0xFF) */
-+
-+/* DFT1R (0x60) detail */
-+/* CP_FREQ bit 7:6 (DFT1R 0x60) */
-+#define AW87XXX_PID_5A_REG_CP_FREQ_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CP_FREQ_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CP_FREQ_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CP_FREQ_4P8MHZ (0)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_4P8MHZ_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_FREQ_4P8MHZ << AW87XXX_PID_5A_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_FREQ_6P4MHZ (1)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_6P4MHZ_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_FREQ_6P4MHZ << AW87XXX_PID_5A_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_FREQ_8P0MHZ (2)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_8P0MHZ_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_FREQ_8P0MHZ << AW87XXX_PID_5A_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_FREQ_9P6MHZ (3)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_9P6MHZ_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_FREQ_9P6MHZ << AW87XXX_PID_5A_REG_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_FREQ_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_CP_FREQ_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CP_FREQ_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CP_FREQ_START_BIT)
-+
-+/* CP_LDO bit 5:4 (DFT1R 0x60) */
-+#define AW87XXX_PID_5A_REG_CP_LDO_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_CP_LDO_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_CP_LDO_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CP_LDO_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CP_LDO_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CP_LDO_4P75V (0)
-+#define AW87XXX_PID_5A_REG_CP_LDO_4P75V_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_LDO_4P75V << AW87XXX_PID_5A_REG_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_LDO_5V (1)
-+#define AW87XXX_PID_5A_REG_CP_LDO_5V_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_LDO_5V << AW87XXX_PID_5A_REG_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_LDO_5P25V (2)
-+#define AW87XXX_PID_5A_REG_CP_LDO_5P25V_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_LDO_5P25V << AW87XXX_PID_5A_REG_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_LDO_5P5V (3)
-+#define AW87XXX_PID_5A_REG_CP_LDO_5P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_LDO_5P5V << AW87XXX_PID_5A_REG_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_LDO_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_CP_LDO_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CP_LDO_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CP_LDO_START_BIT)
-+
-+/* CP_VOS bit 3:2 (DFT1R 0x60) */
-+#define AW87XXX_PID_5A_REG_CP_VOS_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_CP_VOS_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_CP_VOS_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CP_VOS_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CP_VOS_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CP_VOS_0MV (0)
-+#define AW87XXX_PID_5A_REG_CP_VOS_0MV_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_VOS_0MV << AW87XXX_PID_5A_REG_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_VOS_50MV (1)
-+#define AW87XXX_PID_5A_REG_CP_VOS_50MV_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_VOS_50MV << AW87XXX_PID_5A_REG_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_VOS_100MV (2)
-+#define AW87XXX_PID_5A_REG_CP_VOS_100MV_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_VOS_100MV << AW87XXX_PID_5A_REG_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_VOS_150MV (3)
-+#define AW87XXX_PID_5A_REG_CP_VOS_150MV_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_VOS_150MV << AW87XXX_PID_5A_REG_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_VOS_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_CP_VOS_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CP_VOS_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CP_VOS_START_BIT)
-+
-+/* CPOK_TM bit 1 (DFT1R 0x60) */
-+#define AW87XXX_PID_5A_REG_CPOK_TM_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_CPOK_TM_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_CPOK_TM_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CPOK_TM_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CPOK_TM_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CPOK_TM_0P6MS (0)
-+#define AW87XXX_PID_5A_REG_CPOK_TM_0P6MS_VALUE \
-+ (AW87XXX_PID_5A_REG_CPOK_TM_0P6MS << AW87XXX_PID_5A_REG_CPOK_TM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CPOK_TM_1MS (1)
-+#define AW87XXX_PID_5A_REG_CPOK_TM_1MS_VALUE \
-+ (AW87XXX_PID_5A_REG_CPOK_TM_1MS << AW87XXX_PID_5A_REG_CPOK_TM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CPOK_TM_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_CPOK_TM_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CPOK_TM_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CPOK_TM_START_BIT)
-+
-+/* CP_DDT bit 0 (DFT1R 0x60) */
-+#define AW87XXX_PID_5A_REG_CP_DDT_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_CP_DDT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_CP_DDT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CP_DDT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CP_DDT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CP_DDT_0NS (0)
-+#define AW87XXX_PID_5A_REG_CP_DDT_0NS_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_DDT_0NS << AW87XXX_PID_5A_REG_CP_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_DDT_10NS (1)
-+#define AW87XXX_PID_5A_REG_CP_DDT_10NS_VALUE \
-+ (AW87XXX_PID_5A_REG_CP_DDT_10NS << AW87XXX_PID_5A_REG_CP_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CP_DDT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_CP_DDT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CP_DDT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CP_DDT_START_BIT)
-+
-+/* default value of DFT1R (0x60) */
-+/* #define AW87XXX_PID_5A_REG_DFT1R_DEFAULT (0x66) */
-+
-+/* DFT2R (0x61) detail */
-+/* BOOST_VCLAMP_SS bit 7:6 (DFT2R 0x61) */
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_680MV840MV (0)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_680MV840MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_680MV840MV << AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_780MV930MV (1)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_780MV930MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_780MV930MV << AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_1070MV1225MV (2)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_1070MV1225MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_1070MV1225MV << AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_1350MV1500MV (3)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_1350MV1500MV_VALUE \
-+ (AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_CLAMP_1350MV1500MV << AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BOOST_VCLAMP_SS_START_BIT)
-+
-+/* BST_KICK_ITH bit 5:4 (DFT2R 0x61) */
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_KICK_ITH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P5KOHM (0)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P5KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P5KOHM << AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P25KOHM (1)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P25KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P25KOHM << AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P167KOHM (2)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P167KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P167KOHM << AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P125KOHM (3)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P125KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_KICK_ITH_PVDD0P125KOHM << AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_KICK_ITH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_KICK_ITH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_KICK_ITH_START_BIT)
-+
-+/* BST_EA_CUR bit 3 (DFT2R 0x61) */
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_EA_CUR_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_EA_CUR_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_1UA (0)
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_1UA_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EA_CUR_1UA << AW87XXX_PID_5A_REG_BST_EA_CUR_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_4UA (1)
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_4UA_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EA_CUR_4UA << AW87XXX_PID_5A_REG_BST_EA_CUR_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_EA_CUR_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_EA_CUR_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_EA_CUR_START_BIT)
-+
-+/* BST_CK_MODE bit 2 (DFT2R 0x61) */
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_CK_MODE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_CK_MODE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_1P6MHZ (0)
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_1P6MHZ_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_CK_MODE_1P6MHZ << AW87XXX_PID_5A_REG_BST_CK_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_2P0MHZ (1)
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_2P0MHZ_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_CK_MODE_2P0MHZ << AW87XXX_PID_5A_REG_BST_CK_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_CK_MODE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_CK_MODE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_CK_MODE_START_BIT)
-+
-+/* BST_COMPMAX bit 1:0 (DFT2R 0x61) */
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_COMPMAX_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P2V (0)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P2V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_COMPMAX_2P2V << AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P4V (1)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P4V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_COMPMAX_2P4V << AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P6V (2)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P6V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_COMPMAX_2P6V << AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P8V (3)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_2P8V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_COMPMAX_2P8V << AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_COMPMAX_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_COMPMAX_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_COMPMAX_START_BIT)
-+
-+/* default value of DFT2R (0x61) */
-+/* #define AW87XXX_PID_5A_REG_DFT2R_DEFAULT (0x18) */
-+
-+/* DFT3R (0x62) detail */
-+/* BST_PWM_SHORT bit 7 (DFT3R 0x62) */
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_PWM_SHORT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_PWM_SHORT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_VBSTBELOWVDD (0)
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_VBSTBELOWVDD_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_PWM_SHORT_VBSTBELOWVDD << AW87XXX_PID_5A_REG_BST_PWM_SHORT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_VBSTBELOWVDDMINUS_VTH (1)
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_VBSTBELOWVDDMINUS_VTH_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_PWM_SHORT_VBSTBELOWVDDMINUS_VTH << AW87XXX_PID_5A_REG_BST_PWM_SHORT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_PWM_SHORT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_PWM_SHORT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_PWM_SHORT_START_BIT)
-+
-+/* BST_SLOPE bit 6:5 (DFT3R 0x62) */
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SLOPE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE (0)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P25 (1)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P25_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P25 << AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P5 (2)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P5_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P5 << AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P75 (3)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P75_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_ISLOPE1P75 << AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SLOPE_START_BIT)
-+
-+/* BST_LOOPC bit 4 (DFT3R 0x62) */
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_LOOPC_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_LOOPC_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_28PF (0)
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_28PF_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LOOPC_28PF << AW87XXX_PID_5A_REG_BST_LOOPC_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_50PF (1)
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_50PF_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LOOPC_50PF << AW87XXX_PID_5A_REG_BST_LOOPC_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_LOOPC_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_LOOPC_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_LOOPC_START_BIT)
-+
-+/* BST_OS_WIDTH bit 3:2 (DFT3R 0x62) */
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OS_WIDTH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_40NS (0)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_40NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OS_WIDTH_40NS << AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_30NS (1)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_30NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OS_WIDTH_30NS << AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_50NS (2)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_50NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OS_WIDTH_50NS << AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_60NS (3)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_60NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OS_WIDTH_60NS << AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_OS_WIDTH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OS_WIDTH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OS_WIDTH_START_BIT)
-+
-+/* BST_LOOPR bit 1:0 (DFT3R 0x62) */
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_LOOPR_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_320K (0)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_320K_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LOOPR_320K << AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_160K (1)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_160K_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LOOPR_160K << AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_480K (2)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_480K_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LOOPR_480K << AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_320K (3)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_320K_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LOOPR_320K << AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_BST_LOOPR_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_LOOPR_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_LOOPR_START_BIT)
-+
-+/* default value of DFT3R (0x62) */
-+/* #define AW87XXX_PID_5A_REG_DFT3R_DEFAULT (0x02) */
-+
-+/* DFT4R (0x63) detail */
-+/* BST_BURST_IN_DELAY bit 7:6 (DFT4R 0x63) */
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_8US (0)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_8US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_8US << AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_12US (1)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_12US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_12US << AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_4US (2)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_4US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_4US << AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_2US (3)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_2US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_2US << AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_BURST_IN_DELAY_START_BIT)
-+
-+/* BST_BURST_OUT_DELAY bit 5:4 (DFT4R 0x63) */
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_2US (0)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_2US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_2US << AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_4US (1)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_4US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_4US << AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_1P3US (2)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_1P3US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_1P3US << AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_1P0US (3)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_1P0US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_1P0US << AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_BURST_OUT_DELAY_START_BIT)
-+
-+/* BST_EN_DELAY bit 3:2 (DFT4R 0x63) */
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_EN_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_8NS (0)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_8NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EN_DELAY_8NS << AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_80NS (1)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_80NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EN_DELAY_80NS << AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_130NS (2)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_130NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EN_DELAY_130NS << AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_200NS (3)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_200NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EN_DELAY_200NS << AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_BST_EN_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_EN_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_EN_DELAY_START_BIT)
-+
-+/* BST_GD_DELAY bit 1:0 (DFT4R 0x63) */
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_GD_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_1P2NS_LS_1P2NS (0)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_1P2NS_LS_1P2NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_1P2NS_LS_1P2NS << AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_1P2NS_LS_2P5NS (1)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_1P2NS_LS_2P5NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_1P2NS_LS_2P5NS << AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_2P5NS_LS_1P2NS (2)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_2P5NS_LS_1P2NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_2P5NS_LS_1P2NS << AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_2P5NS_LS_2P5NS (3)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_2P5NS_LS_2P5NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_GD_DELAY_HS_2P5NS_LS_2P5NS << AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_GD_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_GD_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_GD_DELAY_START_BIT)
-+
-+/* default value of DFT4R (0x63) */
-+/* #define AW87XXX_PID_5A_REG_DFT4R_DEFAULT (0x08) */
-+
-+/* DFT5R (0x64) detail */
-+/* PA_FLT_SR bit 7 (DFT5R 0x64) */
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_FLT_SR_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_FLT_SR_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_ENABLE (0)
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_FLT_SR_ENABLE << AW87XXX_PID_5A_REG_PA_FLT_SR_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_DISABLE (1)
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_FLT_SR_DISABLE << AW87XXX_PID_5A_REG_PA_FLT_SR_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PA_FLT_SR_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_FLT_SR_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_FLT_SR_START_BIT)
-+
-+/* AGC1_VTH_SEL bit 6:5 (DFT5R 0x64) */
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_AGC1_VTH_SEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN (0)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN << AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_THGEN (1)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_THGEN_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_VTH_SEL_THGEN << AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_AND_THGEN (2)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_AND_THGEN_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_AND_THGEN << AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_AND_THGEN (3)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_AND_THGEN_VALUE \
-+ (AW87XXX_PID_5A_REG_AGC1_VTH_SEL_RAMP_GEN_AND_THGEN << AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_AGC1_VTH_SEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_AGC1_VTH_SEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_AGC1_VTH_SEL_START_BIT)
-+
-+/* BST_OVP2_EN bit 4 (DFT5R 0x64) */
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP2_EN_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP2_EN_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_EN_DISABLE << AW87XXX_PID_5A_REG_BST_OVP2_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_EN_ENABLE << AW87XXX_PID_5A_REG_BST_OVP2_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_EN_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_EN_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP2_EN_START_BIT)
-+
-+/* BST_OVP2_ITH bit 3:2 (DFT5R 0x64) */
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP2_ITH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P5KOHM (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P5KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P5KOHM << AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P25KOHM (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P25KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P25KOHM << AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P167KOHM (2)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P167KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P167KOHM << AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P125KOHM (3)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P125KOHM_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_ITH_PVDD0P125KOHM << AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_ITH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_ITH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP2_ITH_START_BIT)
-+
-+/* BST_OVP2_VTH bit 1:0 (DFT5R 0x64) */
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP2_VTH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_13V_9V (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_13V_9V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_VTH_13V_9V << AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_13P5V_9P5V (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_13P5V_9P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_VTH_13P5V_9P5V << AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_14V_10V (2)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_14V_10V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_VTH_14V_10V << AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_14P5V_10P5V (3)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_14P5V_10P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_VTH_14P5V_10P5V << AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_OVP2_VTH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP2_VTH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP2_VTH_START_BIT)
-+
-+/* default value of DFT5R (0x64) */
-+/* #define AW87XXX_PID_5A_REG_DFT5R_DEFAULT (0x45) */
-+
-+/* DFT6R (0x65) detail */
-+/* POWER_SAVE_DLY_SELECT bit 7 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_HIGH_VOLTAGE_TRIGGER (0)
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_HIGH_VOLTAGE_TRIGGER_VALUE \
-+ (AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_HIGH_VOLTAGE_TRIGGER << AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_CLK_RISING_EDGE_TRIGGER (1)
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_CLK_RISING_EDGE_TRIGGER_VALUE \
-+ (AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_CLK_RISING_EDGE_TRIGGER << AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_POWER_SAVE_DLY_SELECT_START_BIT)
-+
-+/* PA_OPD bit 6 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_PA_OPD_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_PA_OPD_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PA_OPD_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_OPD_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_OPD_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_OPD_OUTPUT_FLOATING (0)
-+#define AW87XXX_PID_5A_REG_PA_OPD_OUTPUT_FLOATING_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OPD_OUTPUT_FLOATING << AW87XXX_PID_5A_REG_PA_OPD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OPD_OUTPUT_TIED_TO_GND (1)
-+#define AW87XXX_PID_5A_REG_PA_OPD_OUTPUT_TIED_TO_GND_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OPD_OUTPUT_TIED_TO_GND << AW87XXX_PID_5A_REG_PA_OPD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OPD_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_PA_OPD_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_OPD_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_OPD_START_BIT)
-+
-+/* CLK_OCP_SEL bit 5 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_CLK_OCP_SEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_CLK_OCP_SEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_160MS (0)
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_160MS_VALUE \
-+ (AW87XXX_PID_5A_REG_CLK_OCP_SEL_160MS << AW87XXX_PID_5A_REG_CLK_OCP_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_640MS (1)
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_640MS_VALUE \
-+ (AW87XXX_PID_5A_REG_CLK_OCP_SEL_640MS << AW87XXX_PID_5A_REG_CLK_OCP_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_CLK_OCP_SEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_CLK_OCP_SEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_CLK_OCP_SEL_START_BIT)
-+
-+/* BST_SKIP_EN bit 4 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SKIP_EN_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SKIP_EN_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SKIP_EN_DISABLE << AW87XXX_PID_5A_REG_BST_SKIP_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SKIP_EN_ENABLE << AW87XXX_PID_5A_REG_BST_SKIP_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_SKIP_EN_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SKIP_EN_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SKIP_EN_START_BIT)
-+
-+/* BST_OVP_DEGLITCH_SEL bit 3 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_NO_DEGLITCH (0)
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_NO_DEGLITCH_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_NO_DEGLITCH << AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_DEGLITCH_300NS (1)
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_DEGLITCH_300NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_DEGLITCH_300NS << AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_OVP_DEGLITCH_SEL_START_BIT)
-+
-+/* BST_NCD_ITH bit 2:1 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_NCD_ITH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_150MA (0)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_150MA_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_NCD_ITH_150MA << AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_200MA (1)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_200MA_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_NCD_ITH_200MA << AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_250MA (2)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_250MA_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_NCD_ITH_250MA << AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_300MA (3)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_300MA_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_NCD_ITH_300MA << AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_NCD_ITH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_NCD_ITH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_NCD_ITH_START_BIT)
-+
-+/* BST_LMD_VTH bit 0 (DFT6R 0x65) */
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_LMD_VTH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_LMD_VTH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_HIGH_SIDE_VDD (0)
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_HIGH_SIDE_VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LMD_VTH_HIGH_SIDE_VDD << AW87XXX_PID_5A_REG_BST_LMD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_LOW_SIDE_VDD (1)
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_LOW_SIDE_VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_LMD_VTH_LOW_SIDE_VDD << AW87XXX_PID_5A_REG_BST_LMD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_LMD_VTH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_LMD_VTH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_LMD_VTH_START_BIT)
-+
-+/* default value of DFT6R (0x65) */
-+/* #define AW87XXX_PID_5A_REG_DFT6R_DEFAULT (0x53) */
-+
-+/* DFT7R (0x66) detail */
-+
-+/* PA_OC_DT bit 4:3 (DFT7R 0x66) */
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_OC_DT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_80NS (0)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_80NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_DT_80NS << AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_150NS (1)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_150NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_DT_150NS << AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_210NS (2)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_210NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_DT_210NS << AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_240NS (3)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_240NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OC_DT_240NS << AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_PA_OC_DT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_OC_DT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_OC_DT_START_BIT)
-+
-+/* PA_RAMP_AGC1 bit 2:1 (DFT7R 0x66) */
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_RAMP_AGC1_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P8VDD (0)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P8VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P8VDD << AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P825VDD (1)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P825VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P825VDD << AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P85VDD (2)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P85VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P85VDD << AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P875VDD (3)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P875VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_RAMP_AGC1_0P875VDD << AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PA_RAMP_AGC1_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_RAMP_AGC1_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_RAMP_AGC1_START_BIT)
-+
-+/* PA_OCSWD bit 0 (DFT7R 0x66) */
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_OCSWD_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_OCSWD_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_THROUGH_GATEDRIVER (0)
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_THROUGH_GATEDRIVER_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OCSWD_THROUGH_GATEDRIVER << AW87XXX_PID_5A_REG_PA_OCSWD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_THROUGH_SWITCH_MOS (1)
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_THROUGH_SWITCH_MOS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_OCSWD_THROUGH_SWITCH_MOS << AW87XXX_PID_5A_REG_PA_OCSWD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PA_OCSWD_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_OCSWD_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_OCSWD_START_BIT)
-+
-+/* default value of DFT7R (0x66) */
-+/* #define AW87XXX_PID_5A_REG_DFT7R_DEFAULT (0x70) */
-+
-+/* DFT8R (0x67) detail */
-+/* PA_GD_DELAY bit 7:6 (DFT8R 0x67) */
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_GD_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_1P2NS_LS_1P2NS (0)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_1P2NS_LS_1P2NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_1P2NS_LS_1P2NS << AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_1P2NS_LS_2P5NS (1)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_1P2NS_LS_2P5NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_1P2NS_LS_2P5NS << AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_2P5NS_LS_1P2NS (2)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_2P5NS_LS_1P2NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_2P5NS_LS_1P2NS << AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_2P5NS_LS_2P5NS (3)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_2P5NS_LS_2P5NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GD_DELAY_HS_2P5NS_LS_2P5NS << AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PA_GD_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_GD_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_GD_DELAY_START_BIT)
-+
-+/* PA_GD_DGT bit 5 (DFT8R 0x67) */
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_GD_DGT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_GD_DGT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_4NS (0)
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_4NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GD_DGT_4NS << AW87XXX_PID_5A_REG_PA_GD_DGT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_5P5NS (1)
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_5P5NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GD_DGT_5P5NS << AW87XXX_PID_5A_REG_PA_GD_DGT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PA_GD_DGT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_GD_DGT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_GD_DGT_START_BIT)
-+
-+/* PA_PORT bit 4:3 (DFT8R 0x67) */
-+#define AW87XXX_PID_5A_REG_PA_PORT_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_PA_PORT_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_PA_PORT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_PORT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_PORT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_PORT_80MS (0)
-+#define AW87XXX_PID_5A_REG_PA_PORT_80MS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_PORT_80MS << AW87XXX_PID_5A_REG_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_PORT_40MS (1)
-+#define AW87XXX_PID_5A_REG_PA_PORT_40MS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_PORT_40MS << AW87XXX_PID_5A_REG_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_PORT_20MS (2)
-+#define AW87XXX_PID_5A_REG_PA_PORT_20MS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_PORT_20MS << AW87XXX_PID_5A_REG_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_PORT_10MS (3)
-+#define AW87XXX_PID_5A_REG_PA_PORT_10MS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_PORT_10MS << AW87XXX_PID_5A_REG_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_PORT_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_PA_PORT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_PORT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_PORT_START_BIT)
-+
-+/* EN_AGC1_ADP bit 2 (DFT8R 0x67) */
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_AGC1_ADP_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_AGC1_ADP_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_AGC_CROSSZERO_AS_BEFORE (0)
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_AGC_CROSSZERO_AS_BEFORE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_AGC1_ADP_AGC_CROSSZERO_AS_BEFORE << AW87XXX_PID_5A_REG_EN_AGC1_ADP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_AGC_CROSSZERO_ADAPTIVELY (1)
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_AGC_CROSSZERO_ADAPTIVELY_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_AGC1_ADP_AGC_CROSSZERO_ADAPTIVELY << AW87XXX_PID_5A_REG_EN_AGC1_ADP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_AGC1_ADP_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_AGC1_ADP_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_AGC1_ADP_START_BIT)
-+
-+/* PD_CROSSZERO bit 1:0 (DFT8R 0x67) */
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PD_CROSSZERO_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC1AGC2_AND_AGC3_CROSS_ZERO (0)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC1AGC2_AND_AGC3_CROSS_ZERO_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC1AGC2_AND_AGC3_CROSS_ZERO << AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC2AGC3_CROSS_ZERO_DISABLE_AGC1_CROSS_ZERO (1)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC2AGC3_CROSS_ZERO_DISABLE_AGC1_CROSS_ZERO_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC2AGC3_CROSS_ZERO_DISABLE_AGC1_CROSS_ZERO << AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC3_CROSS_ZERO_DISABLE_AGC1AGC2_CROSS_ZERO (2)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC3_CROSS_ZERO_DISABLE_AGC1AGC2_CROSS_ZERO_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_CROSSZERO_ENABLE_AGC3_CROSS_ZERO_DISABLE_AGC1AGC2_CROSS_ZERO << AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_DISABLE_AGC1AGC2_AND_AGC3_CROSS_ZERO (3)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_DISABLE_AGC1AGC2_AND_AGC3_CROSS_ZERO_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_CROSSZERO_DISABLE_AGC1AGC2_AND_AGC3_CROSS_ZERO << AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PD_CROSSZERO_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PD_CROSSZERO_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PD_CROSSZERO_START_BIT)
-+
-+/* default value of DFT8R (0x67) */
-+/* #define AW87XXX_PID_5A_REG_DFT8R_DEFAULT (0x08) */
-+
-+/* DFT9R (0x68) detail */
-+/* EN_BOOST_VCLAMP_SS bit 7 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_DISABLE << AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_ENABLE << AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_BOOST_VCLAMP_SS_START_BIT)
-+
-+/* EN_BOOST_PLDO bit 6 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_BOOST_PLDO_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_BOOST_PLDO_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_SET_VDD (0)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_SET_VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_PLDO_SET_VDD << AW87XXX_PID_5A_REG_EN_BOOST_PLDO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_SET_PVLDO (1)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_SET_PVLDO_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_PLDO_SET_PVLDO << AW87XXX_PID_5A_REG_EN_BOOST_PLDO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_BOOST_PLDO_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_BOOST_PLDO_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_BOOST_PLDO_START_BIT)
-+
-+/* EN_CLAMP bit 5 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_CLAMP_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_CLAMP_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_CLAMP_DISABLE << AW87XXX_PID_5A_REG_EN_CLAMP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_CLAMP_ENABLE << AW87XXX_PID_5A_REG_EN_CLAMP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_EN_CLAMP_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_CLAMP_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_CLAMP_START_BIT)
-+
-+/* EN_VBG_PASS bit 4 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_VBG_PASS_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_VBG_PASS_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_VBG_PASS_DISABLE << AW87XXX_PID_5A_REG_EN_VBG_PASS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_VBG_PASS_ENABLE << AW87XXX_PID_5A_REG_EN_VBG_PASS_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_VBG_PASS_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_VBG_PASS_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_VBG_PASS_START_BIT)
-+
-+/* SS_SOFT_IPEAK_ADP bit 3 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_DISABLE << AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_ENABLE << AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SS_SOFT_IPEAK_ADP_START_BIT)
-+
-+/* EN_ADP_IPEAK bit 2 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_ADP_IPEAK_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_ADP_IPEAK_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_ADP_IPEAK_DISABLE << AW87XXX_PID_5A_REG_EN_ADP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_ADP_IPEAK_ENABLE << AW87XXX_PID_5A_REG_EN_ADP_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_ADP_IPEAK_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_ADP_IPEAK_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_ADP_IPEAK_START_BIT)
-+
-+/* SEL_FINISH_ID bit 1 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SEL_FINISH_ID_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SEL_FINISH_ID_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_MODE1_DELAY (0)
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_MODE1_DELAY_VALUE \
-+ (AW87XXX_PID_5A_REG_SEL_FINISH_ID_MODE1_DELAY << AW87XXX_PID_5A_REG_SEL_FINISH_ID_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_LIMIT_SS_FINISH (1)
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_LIMIT_SS_FINISH_VALUE \
-+ (AW87XXX_PID_5A_REG_SEL_FINISH_ID_LIMIT_SS_FINISH << AW87XXX_PID_5A_REG_SEL_FINISH_ID_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_SEL_FINISH_ID_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SEL_FINISH_ID_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SEL_FINISH_ID_START_BIT)
-+
-+/* SS_FINISH_SELECTED bit 0 (DFT9R 0x68) */
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_3US (0)
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_3US_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_3US << AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_0US (1)
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_0US_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_0US << AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SS_FINISH_SELECTED_START_BIT)
-+
-+/* default value of DFT9R (0x68) */
-+/* #define AW87XXX_PID_5A_REG_DFT9R_DEFAULT (0x21) */
-+
-+/* DFTAR (0x69) detail */
-+/* HWM_DELAY_INITIAL bit 7:6 (DFTAR 0x69) */
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_104NS (0)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_104NS_VALUE \
-+ (AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_104NS << AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_63NS (1)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_63NS_VALUE \
-+ (AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_63NS << AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_56NS (2)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_56NS_VALUE \
-+ (AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_56NS << AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_42NS (3)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_42NS_VALUE \
-+ (AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_42NS << AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_HWM_DELAY_INITIAL_START_BIT)
-+
-+/* BST_DFPWM bit 5:3 (DFTAR 0x69) */
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_DFPWM_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_2P5US (0)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_2P5US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_2P5US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_5US (1)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_5US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_5US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_10US (2)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_10US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_10US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_20US (3)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_20US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_20US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_40US (4)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_40US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_40US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_80US (5)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_80US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_80US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_160US (6)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_160US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_160US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_320US (7)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_320US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_320US << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_5A_REG_BST_DFPWM_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_DFPWM_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_DFPWM_START_BIT)
-+
-+/* BST_SOFT_DELAY bit 2:0 (DFTAR 0x69) */
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SOFT_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_40US (0)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_40US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_40US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_80US (1)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_80US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_80US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_160US (2)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_160US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_160US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_320US (3)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_320US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_320US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_1280US (4)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_1280US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_1280US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_2560US (5)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_2560US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_2560US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_5120US (6)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_5120US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_5120US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_10240US (7)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_10240US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_10240US << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_5A_REG_BST_SOFT_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SOFT_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SOFT_DELAY_START_BIT)
-+
-+/* default value of DFTAR (0x69) */
-+/* #define AW87XXX_PID_5A_REG_DFTAR_DEFAULT (0xA4) */
-+
-+/* DFTBR (0x70) detail */
-+/* BST_CLK_DIV bit 4 (DFTBR 0x70) */
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_CLK_DIV_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_CLK_DIV_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_DIV_BY_4 (0)
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_DIV_BY_4_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_CLK_DIV_DIV_BY_4 << AW87XXX_PID_5A_REG_BST_CLK_DIV_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_DIV_BY_2 (1)
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_DIV_BY_2_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_CLK_DIV_DIV_BY_2 << AW87XXX_PID_5A_REG_BST_CLK_DIV_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_CLK_DIV_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_CLK_DIV_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_CLK_DIV_START_BIT)
-+
-+/* RAMP_1SPW_VC bit 3:2 (DFTBR 0x70) */
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_RAMP_1SPW_VC_BITS_LEN)-1) << AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P37VDD (0)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P37VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P37VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P39VDD (1)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P39VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P39VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P33VDD (2)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P33VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P33VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P35VDD (3)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P35VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VC_VC0P35VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VC_DEFAULT \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VC_DEFAULT_VALUE << AW87XXX_PID_5A_REG_RAMP_1SPW_VC_START_BIT)
-+
-+/* RAMP_1SPW_VL bit 1:0 (DFTBR 0x70) */
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_RAMP_1SPW_VL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P16VDD (0)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P16VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P16VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P18VDD (1)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P18VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P18VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P20VDD (2)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P20VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P20VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P14VDD (3)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P14VDD_VALUE \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VL_VC0P14VDD << AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_RAMP_1SPW_VL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_RAMP_1SPW_VL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_RAMP_1SPW_VL_START_BIT)
-+
-+/* default value of DFTBR (0x70) */
-+/* #define AW87XXX_PID_5A_REG_DFTBR_DEFAULT (0x1C) */
-+
-+/* DFTCR (0x71) detail */
-+/* DT_EN bit 7 (DFTCR 0x71) */
-+#define AW87XXX_PID_5A_REG_DT_EN_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_DT_EN_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_DT_EN_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_DT_EN_BITS_LEN)-1) << AW87XXX_PID_5A_REG_DT_EN_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_DT_EN_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_DT_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_DT_EN_DISABLE << AW87XXX_PID_5A_REG_DT_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_DT_EN_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_DT_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_DT_EN_ENABLE << AW87XXX_PID_5A_REG_DT_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_DT_EN_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_DT_EN_DEFAULT \
-+ (AW87XXX_PID_5A_REG_DT_EN_DEFAULT_VALUE << AW87XXX_PID_5A_REG_DT_EN_START_BIT)
-+
-+/* BST_TD bit 6:4 (DFTCR 0x71) */
-+#define AW87XXX_PID_5A_REG_BST_TD_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_BST_TD_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_BST_TD_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_TD_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_TD_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_0P08MS (0)
-+#define AW87XXX_PID_5A_REG_BST_TD_0P08MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_0P08MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_0P16MS (1)
-+#define AW87XXX_PID_5A_REG_BST_TD_0P16MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_0P16MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_0P32MS (2)
-+#define AW87XXX_PID_5A_REG_BST_TD_0P32MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_0P32MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_0P64MS (3)
-+#define AW87XXX_PID_5A_REG_BST_TD_0P64MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_0P64MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_1P28MS (4)
-+#define AW87XXX_PID_5A_REG_BST_TD_1P28MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_1P28MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_2P56MS (5)
-+#define AW87XXX_PID_5A_REG_BST_TD_2P56MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_2P56MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_5P12MS (6)
-+#define AW87XXX_PID_5A_REG_BST_TD_5P12MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_5P12MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_10P24MS (7)
-+#define AW87XXX_PID_5A_REG_BST_TD_10P24MS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_TD_10P24MS << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_TD_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_TD_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_TD_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_TD_START_BIT)
-+
-+/* BST_GTDR_DDT bit 3 (DFTCR 0x71) */
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_GTDR_DDT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_GTDR_DDT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_3NS (0)
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_3NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_GTDR_DDT_3NS << AW87XXX_PID_5A_REG_BST_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_6NS (1)
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_6NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_GTDR_DDT_6NS << AW87XXX_PID_5A_REG_BST_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_GTDR_DDT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_GTDR_DDT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_GTDR_DDT_START_BIT)
-+
-+/* BST_EN_RSQN_DLY bit 2 (DFTCR 0x71) */
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_DISABLE << AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_ENABLE << AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_EN_RSQN_DLY_START_BIT)
-+
-+/* BST_RSQN_DLY bit 1:0 (DFTCR 0x71) */
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_RSQN_DLY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_15NS (0)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_15NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_RSQN_DLY_15NS << AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_25NS (1)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_25NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_RSQN_DLY_25NS << AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_35NS (2)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_35NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_RSQN_DLY_35NS << AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_45NS (3)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_45NS_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_RSQN_DLY_45NS << AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_BST_RSQN_DLY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_RSQN_DLY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_RSQN_DLY_START_BIT)
-+
-+/* default value of DFTCR (0x71) */
-+/* #define AW87XXX_PID_5A_REG_DFTCR_DEFAULT (0x10) */
-+
-+/* DFTDR (0x72) detail */
-+/* DLY_EN bit 7 (DFTDR 0x72) */
-+#define AW87XXX_PID_5A_REG_DLY_EN_START_BIT (7)
-+#define AW87XXX_PID_5A_REG_DLY_EN_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_DLY_EN_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_DLY_EN_BITS_LEN)-1) << AW87XXX_PID_5A_REG_DLY_EN_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_DLY_EN_NO_DELAY (0)
-+#define AW87XXX_PID_5A_REG_DLY_EN_NO_DELAY_VALUE \
-+ (AW87XXX_PID_5A_REG_DLY_EN_NO_DELAY << AW87XXX_PID_5A_REG_DLY_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_DLY_EN_DELAY_TWO_CLOCK (1)
-+#define AW87XXX_PID_5A_REG_DLY_EN_DELAY_TWO_CLOCK_VALUE \
-+ (AW87XXX_PID_5A_REG_DLY_EN_DELAY_TWO_CLOCK << AW87XXX_PID_5A_REG_DLY_EN_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_DLY_EN_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_DLY_EN_DEFAULT \
-+ (AW87XXX_PID_5A_REG_DLY_EN_DEFAULT_VALUE << AW87XXX_PID_5A_REG_DLY_EN_START_BIT)
-+
-+/* DOWNSIGNAL_SEL bit 6 (DFTDR 0x72) */
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_SET_160MS (0)
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_SET_160MS_VALUE \
-+ (AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_SET_160MS << AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_SET_640MS (1)
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_SET_640MS_VALUE \
-+ (AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_SET_640MS << AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_DOWNSIGNAL_SEL_START_BIT)
-+
-+/* BST_SLOPE_LIMIT bit 5:3 (DFTDR 0x72) */
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_BITS_LEN (3)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0SLOPE (0)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P25SLOPE (1)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P25SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P25SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P5SLOPE (2)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P5SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P5SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P25SLOPE (3)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P25SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P25SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P5SLOPE (4)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P5SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P5SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P75SLOPE (5)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P75SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_0P75SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P25SLOPE (6)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P25SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P25SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P75SLOPE (7)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P75SLOPE_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_1P75SLOPE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SLOPE_LIMIT_START_BIT)
-+
-+/* MODEL_START_DELAY bit 2:1 (DFTDR 0x72) */
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_MODEL_START_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_20US (0)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_20US_VALUE \
-+ (AW87XXX_PID_5A_REG_MODEL_START_DELAY_20US << AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_0US (1)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_0US_VALUE \
-+ (AW87XXX_PID_5A_REG_MODEL_START_DELAY_0US << AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_5US (2)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_5US_VALUE \
-+ (AW87XXX_PID_5A_REG_MODEL_START_DELAY_5US << AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_2P5US (3)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_2P5US_VALUE \
-+ (AW87XXX_PID_5A_REG_MODEL_START_DELAY_2P5US << AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_MODEL_START_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_MODEL_START_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_MODEL_START_DELAY_START_BIT)
-+
-+/* PEAK_LIMIT_SS_CAP bit 0 (DFTDR 0x72) */
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_350FF (0)
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_350FF_VALUE \
-+ (AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_350FF << AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_0FF (1)
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_0FF_VALUE \
-+ (AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_0FF << AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PEAK_LIMIT_SS_CAP_START_BIT)
-+
-+/* default value of DFTDR (0x72) */
-+/* #define AW87XXX_PID_5A_REG_DFTDR_DEFAULT (0xA0) */
-+
-+/* DFTER (0x73) detail */
-+/* BST_SS_TIME bit 7:6 (DFTER 0x73) */
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_BST_SS_TIME_BITS_LEN)-1) << AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_35US (0)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_35US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SS_TIME_35US << AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_56US (1)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_56US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SS_TIME_56US << AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_76US (2)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_76US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SS_TIME_76US << AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_107US (3)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_107US_VALUE \
-+ (AW87XXX_PID_5A_REG_BST_SS_TIME_107US << AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_BST_SS_TIME_DEFAULT \
-+ (AW87XXX_PID_5A_REG_BST_SS_TIME_DEFAULT_VALUE << AW87XXX_PID_5A_REG_BST_SS_TIME_START_BIT)
-+
-+/* PD_UVLO bit 5 (DFTER 0x73) */
-+#define AW87XXX_PID_5A_REG_PD_UVLO_START_BIT (5)
-+#define AW87XXX_PID_5A_REG_PD_UVLO_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PD_UVLO_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PD_UVLO_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PD_UVLO_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PD_UVLO_ENABLE (0)
-+#define AW87XXX_PID_5A_REG_PD_UVLO_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_UVLO_ENABLE << AW87XXX_PID_5A_REG_PD_UVLO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_UVLO_DISABLE (1)
-+#define AW87XXX_PID_5A_REG_PD_UVLO_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_UVLO_DISABLE << AW87XXX_PID_5A_REG_PD_UVLO_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_UVLO_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PD_UVLO_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PD_UVLO_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PD_UVLO_START_BIT)
-+
-+/* UVLO_VTH bit 4:3 (DFTER 0x73) */
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT (3)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_UVLO_VTH_BITS_LEN)-1) << AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P6V_VL2P5V (0)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P6V_VL2P5V_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_VTH_VH2P6V_VL2P5V << AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P7V_VL2P6V (1)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P7V_VL2P6V_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_VTH_VH2P7V_VL2P6V << AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P8V_VL2P7V (2)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P8V_VL2P7V_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_VTH_VH2P8V_VL2P7V << AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P9V_VL2P8V (3)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_VH2P9V_VL2P8V_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_VTH_VH2P9V_VL2P8V << AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_5A_REG_UVLO_VTH_DEFAULT \
-+ (AW87XXX_PID_5A_REG_UVLO_VTH_DEFAULT_VALUE << AW87XXX_PID_5A_REG_UVLO_VTH_START_BIT)
-+
-+/* UVLO_DT bit 2 (DFTER 0x73) */
-+#define AW87XXX_PID_5A_REG_UVLO_DT_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_UVLO_DT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_UVLO_DT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_UVLO_DT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_UVLO_DT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_UVLO_DT_3US (0)
-+#define AW87XXX_PID_5A_REG_UVLO_DT_3US_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_DT_3US << AW87XXX_PID_5A_REG_UVLO_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_DT_10US (1)
-+#define AW87XXX_PID_5A_REG_UVLO_DT_10US_VALUE \
-+ (AW87XXX_PID_5A_REG_UVLO_DT_10US << AW87XXX_PID_5A_REG_UVLO_DT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_UVLO_DT_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_5A_REG_UVLO_DT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_UVLO_DT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_UVLO_DT_START_BIT)
-+
-+/* OC_DISABLE bit 1 (DFTER 0x73) */
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_OC_DISABLE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_OC_DISABLE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_ENABLE (0)
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_OC_DISABLE_ENABLE << AW87XXX_PID_5A_REG_OC_DISABLE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_SHUTDOWN (1)
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_SHUTDOWN_VALUE \
-+ (AW87XXX_PID_5A_REG_OC_DISABLE_SHUTDOWN << AW87XXX_PID_5A_REG_OC_DISABLE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_OC_DISABLE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_OC_DISABLE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_OC_DISABLE_START_BIT)
-+
-+/* PD_OT bit 0 (DFTER 0x73) */
-+#define AW87XXX_PID_5A_REG_PD_OT_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_PD_OT_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_PD_OT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PD_OT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PD_OT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PD_OT_ENABLE (0)
-+#define AW87XXX_PID_5A_REG_PD_OT_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_OT_ENABLE << AW87XXX_PID_5A_REG_PD_OT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_OT_SHUTDOWN (1)
-+#define AW87XXX_PID_5A_REG_PD_OT_SHUTDOWN_VALUE \
-+ (AW87XXX_PID_5A_REG_PD_OT_SHUTDOWN << AW87XXX_PID_5A_REG_PD_OT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PD_OT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PD_OT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PD_OT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PD_OT_START_BIT)
-+
-+/* default value of DFTER (0x73) */
-+/* #define AW87XXX_PID_5A_REG_DFTER_DEFAULT (0x54) */
-+
-+/* DFTFR (0x74) detail */
-+/* EN_SWF bit 6 (DFTFR 0x74) */
-+#define AW87XXX_PID_5A_REG_EN_SWF_START_BIT (6)
-+#define AW87XXX_PID_5A_REG_EN_SWF_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_SWF_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_SWF_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_SWF_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_SWF_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_SWF_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_SWF_DISABLE << AW87XXX_PID_5A_REG_EN_SWF_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_SWF_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_SWF_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_SWF_ENABLE << AW87XXX_PID_5A_REG_EN_SWF_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_SWF_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_SWF_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_SWF_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_SWF_START_BIT)
-+
-+/* SS_CONTROL bit 5:4 (DFTFR 0x74) */
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT (4)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_SS_CONTROL_BITS_LEN)-1) << AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SPREAD_SPECTRUM (0)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SPREAD_SPECTRUM_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_CONTROL_SPREAD_SPECTRUM << AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SW20111 (1)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SW20111_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_CONTROL_SW20111 << AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SW20000 (2)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SW20000_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_CONTROL_SW20000 << AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT)
-+/*
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SW20111 (3)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_SW20111_VALUE \
-+ (AW87XXX_PID_5A_REG_SS_CONTROL_SW20111 << AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT)
-+*/
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_SS_CONTROL_DEFAULT \
-+ (AW87XXX_PID_5A_REG_SS_CONTROL_DEFAULT_VALUE << AW87XXX_PID_5A_REG_SS_CONTROL_START_BIT)
-+
-+/* PA_GTDR_DDT bit 3:2 (DFTFR 0x74) */
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT (2)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_BITS_LEN (2)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_PA_GTDR_DDT_BITS_LEN)-1) << AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_12NS (0)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_12NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GTDR_DDT_12NS << AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_13NS (1)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_13NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GTDR_DDT_13NS << AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_14NS (2)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_14NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GTDR_DDT_14NS << AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_15NS (3)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_15NS_VALUE \
-+ (AW87XXX_PID_5A_REG_PA_GTDR_DDT_15NS << AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_PA_GTDR_DDT_DEFAULT \
-+ (AW87XXX_PID_5A_REG_PA_GTDR_DDT_DEFAULT_VALUE << AW87XXX_PID_5A_REG_PA_GTDR_DDT_START_BIT)
-+
-+/* EN_HWM_DELAY bit 1 (DFTFR 0x74) */
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_START_BIT (1)
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_HWM_DELAY_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_HWM_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_HWM_DELAY_DISABLE << AW87XXX_PID_5A_REG_EN_HWM_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_HWM_DELAY_ENABLE << AW87XXX_PID_5A_REG_EN_HWM_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_HWM_DELAY_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_HWM_DELAY_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_HWM_DELAY_START_BIT)
-+
-+/* EN_HW_MODE bit 0 (DFTFR 0x74) */
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_START_BIT (0)
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_5A_REG_EN_HW_MODE_BITS_LEN)-1) << AW87XXX_PID_5A_REG_EN_HW_MODE_START_BIT))
-+
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_DISABLE (0)
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_HW_MODE_DISABLE << AW87XXX_PID_5A_REG_EN_HW_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_ENABLE (1)
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_5A_REG_EN_HW_MODE_ENABLE << AW87XXX_PID_5A_REG_EN_HW_MODE_START_BIT)
-+
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_5A_REG_EN_HW_MODE_DEFAULT \
-+ (AW87XXX_PID_5A_REG_EN_HW_MODE_DEFAULT_VALUE << AW87XXX_PID_5A_REG_EN_HW_MODE_START_BIT)
-+
-+/* default value of DFTFR (0x74) */
-+/* #define AW87XXX_PID_5A_REG_DFTFR_DEFAULT (0x00) */
-+
-+/* detail information of registers end */
-+
-+#endif /* #ifndef __AW87XXX_PID_5A_REG_H__ */
-\ No newline at end of file
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_60_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_60_reg.h
-new file mode 100644
-index 000000000..b878aad8c
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_60_reg.h
-@@ -0,0 +1,5246 @@
-+#ifndef __AW87XXX_PID_60_REG_H__
-+#define __AW87XXX_PID_60_REG_H__
-+
-+/* registers list */
-+#define AW87XXX_PID_60_ID_REG (0x00)
-+#define AW87XXX_PID_60_SYSCTRL_REG (0x01)
-+#define AW87XXX_PID_60_BSTOVR_REG (0x02)
-+#define AW87XXX_PID_60_PEAKLIMIT_REG (0x03)
-+#define AW87XXX_PID_60_ADPSET_REG (0x04)
-+#define AW87XXX_PID_60_PAG_REG (0x05)
-+#define AW87XXX_PID_60_AGC1PA_REG (0x06)
-+#define AW87XXX_PID_60_AGC2PA_REG (0x07)
-+#define AW87XXX_PID_60_AGC3PA_REG (0x08)
-+#define AW87XXX_PID_60_AGC3P_REG (0x09)
-+#define AW87XXX_PID_60_LOW_BAT_REG (0x0A)
-+#define AW87XXX_PID_60_BSTOUT_REG (0x0B)
-+#define AW87XXX_PID_60_SYSST_REG (0x59)
-+#define AW87XXX_PID_60_SYSINT_REG (0x60)
-+#define AW87XXX_PID_60_BURST_CON_REG (0x61)
-+#define AW87XXX_PID_60_BST_BIAS_REG (0x62)
-+#define AW87XXX_PID_60_BST_EA_REG (0x63)
-+#define AW87XXX_PID_60_BST_DE_SOFT_REG (0x64)
-+#define AW87XXX_PID_60_BST_BURST_KICK_REG (0x65)
-+#define AW87XXX_PID_60_BST_CON1_REG (0x66)
-+#define AW87XXX_PID_60_BST_OVP_REG (0x67)
-+#define AW87XXX_PID_60_LINE_MODE_REG (0x68)
-+#define AW87XXX_PID_60_BST_ISEN_REG (0x69)
-+#define AW87XXX_PID_60_BST_PEAK_REG (0x6A)
-+#define AW87XXX_PID_60_BST_PEAK2_REG (0x6B)
-+#define AW87XXX_PID_60_OFFTIME_REG (0x6C)
-+#define AW87XXX_PID_60_ADPBST_REG (0x6D)
-+#define AW87XXX_PID_60_OTA_REG (0x6E)
-+#define AW87XXX_PID_60_RAMPGEN_REG (0x6F)
-+#define AW87XXX_PID_60_CLASSD_SYSCTRL_REG (0x70)
-+#define AW87XXX_PID_60_GTDR_REG (0x71)
-+#define AW87XXX_PID_60_OC_REG (0x72)
-+#define AW87XXX_PID_60_AGC_CON_REG (0x73)
-+#define AW87XXX_PID_60_NG_REG (0x74)
-+#define AW87XXX_PID_60_NG2_REG (0x75)
-+#define AW87XXX_PID_60_NG3_REG (0x76)
-+#define AW87XXX_PID_60_CP_REG (0x77)
-+#define AW87XXX_PID_60_TEST_GTDR_REG (0x78)
-+#define AW87XXX_PID_60_TEST_BST_REG (0x79)
-+#define AW87XXX_PID_60_TEST_MODE_REG (0x7A)
-+#define AW87XXX_PID_60_TEST_CON_REG (0x7B)
-+#define AW87XXX_PID_60_ENCR_REG (0x7C)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_60_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_60_REG_MAX (0x7D)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+#define AW87XXX_PID_60_ESD_REG_VAL (0x91)
-+
-+const unsigned char aw87xxx_pid_60_reg_access[AW87XXX_PID_60_REG_MAX] = {
-+ [AW87XXX_PID_60_ID_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_60_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BSTOVR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_PEAKLIMIT_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_ADPSET_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_PAG_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_AGC1PA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_AGC2PA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_AGC3PA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_AGC3P_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_LOW_BAT_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BSTOUT_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_60_SYSST_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_60_SYSINT_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_60_BURST_CON_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_BIAS_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_EA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_DE_SOFT_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_BURST_KICK_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_CON1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_OVP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_LINE_MODE_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_ISEN_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_PEAK_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_BST_PEAK2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_OFFTIME_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_ADPBST_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_OTA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_RAMPGEN_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_CLASSD_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_GTDR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_OC_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_AGC_CON_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_NG_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_NG2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_NG3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_CP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_TEST_GTDR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_TEST_BST_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_TEST_MODE_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_TEST_CON_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_60_ENCR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+};
-+
-+/* detail information of registers begin */
-+/* ID (0x00) detail */
-+/* IDCODE bit 7:0 (ID 0x00) */
-+#define AW87XXX_PID_60_IDCODE_START_BIT (0)
-+#define AW87XXX_PID_60_IDCODE_BITS_LEN (8)
-+#define AW87XXX_PID_60_IDCODE_MASK \
-+ (~(((1<<AW87XXX_PID_60_IDCODE_BITS_LEN)-1) << AW87XXX_PID_60_IDCODE_START_BIT))
-+
-+#define AW87XXX_PID_60_IDCODE_DEFAULT_VALUE (0x60)
-+#define AW87XXX_PID_60_IDCODE_DEFAULT \
-+ (AW87XXX_PID_60_IDCODE_DEFAULT_VALUE << AW87XXX_PID_60_IDCODE_START_BIT)
-+
-+/* default value of ID (0x00) */
-+/* #define AW87XXX_PID_60_ID_DEFAULT (0x60) */
-+
-+/* SYSCTRL (0x01) detail */
-+/* EN_HVBAT bit 0 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_60_EN_HVBAT_START_BIT (0)
-+#define AW87XXX_PID_60_EN_HVBAT_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_HVBAT_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_HVBAT_BITS_LEN)-1) << AW87XXX_PID_60_EN_HVBAT_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_HVBAT_DISABLE (0)
-+#define AW87XXX_PID_60_EN_HVBAT_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_HVBAT_DISABLE << AW87XXX_PID_60_EN_HVBAT_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_HVBAT_ENABLE (1)
-+#define AW87XXX_PID_60_EN_HVBAT_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_HVBAT_ENABLE << AW87XXX_PID_60_EN_HVBAT_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_HVBAT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_HVBAT_DEFAULT \
-+ (AW87XXX_PID_60_EN_HVBAT_DEFAULT_VALUE << AW87XXX_PID_60_EN_HVBAT_START_BIT)
-+
-+/* RCV_MODE bit 1 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_60_RCV_MODE_START_BIT (1)
-+#define AW87XXX_PID_60_RCV_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_60_RCV_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_60_RCV_MODE_BITS_LEN)-1) << AW87XXX_PID_60_RCV_MODE_START_BIT))
-+
-+#define AW87XXX_PID_60_RCV_MODE_DISABLE (0)
-+#define AW87XXX_PID_60_RCV_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_60_RCV_MODE_DISABLE << AW87XXX_PID_60_RCV_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_RCV_MODE_ENABLE (1)
-+#define AW87XXX_PID_60_RCV_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_60_RCV_MODE_ENABLE << AW87XXX_PID_60_RCV_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_RCV_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_RCV_MODE_DEFAULT \
-+ (AW87XXX_PID_60_RCV_MODE_DEFAULT_VALUE << AW87XXX_PID_60_RCV_MODE_START_BIT)
-+
-+/* EN_PA bit 2 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_60_EN_PA_START_BIT (2)
-+#define AW87XXX_PID_60_EN_PA_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_PA_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_PA_BITS_LEN)-1) << AW87XXX_PID_60_EN_PA_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_PA_DISABLE (0)
-+#define AW87XXX_PID_60_EN_PA_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_PA_DISABLE << AW87XXX_PID_60_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_PA_ENABLE (1)
-+#define AW87XXX_PID_60_EN_PA_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_PA_ENABLE << AW87XXX_PID_60_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_PA_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_EN_PA_DEFAULT \
-+ (AW87XXX_PID_60_EN_PA_DEFAULT_VALUE << AW87XXX_PID_60_EN_PA_START_BIT)
-+
-+/* EN_BOOST bit 3 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_60_EN_BOOST_START_BIT (3)
-+#define AW87XXX_PID_60_EN_BOOST_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_BOOST_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_BOOST_BITS_LEN)-1) << AW87XXX_PID_60_EN_BOOST_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_BOOST_DISABLE (0)
-+#define AW87XXX_PID_60_EN_BOOST_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_BOOST_DISABLE << AW87XXX_PID_60_EN_BOOST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_BOOST_ENABLE (1)
-+#define AW87XXX_PID_60_EN_BOOST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_BOOST_ENABLE << AW87XXX_PID_60_EN_BOOST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_BOOST_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_EN_BOOST_DEFAULT \
-+ (AW87XXX_PID_60_EN_BOOST_DEFAULT_VALUE << AW87XXX_PID_60_EN_BOOST_START_BIT)
-+
-+/* EN_CP bit 4 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_60_EN_CP_START_BIT (4)
-+#define AW87XXX_PID_60_EN_CP_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_CP_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_CP_BITS_LEN)-1) << AW87XXX_PID_60_EN_CP_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_CP_DISABLE (0)
-+#define AW87XXX_PID_60_EN_CP_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_CP_DISABLE << AW87XXX_PID_60_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_CP_ENABLE (1)
-+#define AW87XXX_PID_60_EN_CP_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_CP_ENABLE << AW87XXX_PID_60_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_CP_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_EN_CP_DEFAULT \
-+ (AW87XXX_PID_60_EN_CP_DEFAULT_VALUE << AW87XXX_PID_60_EN_CP_START_BIT)
-+
-+/* EN_SW bit 5 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_60_EN_SW_START_BIT (5)
-+#define AW87XXX_PID_60_EN_SW_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_SW_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_SW_BITS_LEN)-1) << AW87XXX_PID_60_EN_SW_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_SW_DISABLE (0)
-+#define AW87XXX_PID_60_EN_SW_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_SW_DISABLE << AW87XXX_PID_60_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_SW_ENABLE (1)
-+#define AW87XXX_PID_60_EN_SW_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_SW_ENABLE << AW87XXX_PID_60_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_SW_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_SW_DEFAULT \
-+ (AW87XXX_PID_60_EN_SW_DEFAULT_VALUE << AW87XXX_PID_60_EN_SW_START_BIT)
-+
-+/* default value of SYSCTRL (0x01) */
-+/* #define AW87XXX_PID_60_SYSCTRL_DEFAULT (0x1C) */
-+
-+/* BSTOVR (0x02) detail */
-+/* CP_FREQ bit 6:5 (BSTOVR 0x02) */
-+#define AW87XXX_PID_60_CP_FREQ_START_BIT (5)
-+#define AW87XXX_PID_60_CP_FREQ_BITS_LEN (2)
-+#define AW87XXX_PID_60_CP_FREQ_MASK \
-+ (~(((1<<AW87XXX_PID_60_CP_FREQ_BITS_LEN)-1) << AW87XXX_PID_60_CP_FREQ_START_BIT))
-+
-+#define AW87XXX_PID_60_CP_FREQ_4P8MHZ (0)
-+#define AW87XXX_PID_60_CP_FREQ_4P8MHZ_VALUE \
-+ (AW87XXX_PID_60_CP_FREQ_4P8MHZ << AW87XXX_PID_60_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_FREQ_6P4MHZ (1)
-+#define AW87XXX_PID_60_CP_FREQ_6P4MHZ_VALUE \
-+ (AW87XXX_PID_60_CP_FREQ_6P4MHZ << AW87XXX_PID_60_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_FREQ_8P0MHZ (2)
-+#define AW87XXX_PID_60_CP_FREQ_8P0MHZ_VALUE \
-+ (AW87XXX_PID_60_CP_FREQ_8P0MHZ << AW87XXX_PID_60_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_FREQ_9P6MHZ (3)
-+#define AW87XXX_PID_60_CP_FREQ_9P6MHZ_VALUE \
-+ (AW87XXX_PID_60_CP_FREQ_9P6MHZ << AW87XXX_PID_60_CP_FREQ_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_FREQ_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_CP_FREQ_DEFAULT \
-+ (AW87XXX_PID_60_CP_FREQ_DEFAULT_VALUE << AW87XXX_PID_60_CP_FREQ_START_BIT)
-+
-+/* BST_VOUT bit 4:0 (BSTOVR 0x02) */
-+#define AW87XXX_PID_60_BST_VOUT_START_BIT (0)
-+#define AW87XXX_PID_60_BST_VOUT_BITS_LEN (5)
-+#define AW87XXX_PID_60_BST_VOUT_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_VOUT_BITS_LEN)-1) << AW87XXX_PID_60_BST_VOUT_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_VOUT_4P75V (0)
-+#define AW87XXX_PID_60_BST_VOUT_4P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_4P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_5P0V (1)
-+#define AW87XXX_PID_60_BST_VOUT_5P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_5P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_5P25V (2)
-+#define AW87XXX_PID_60_BST_VOUT_5P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_5P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_5P5V (3)
-+#define AW87XXX_PID_60_BST_VOUT_5P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_5P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_5P75V (4)
-+#define AW87XXX_PID_60_BST_VOUT_5P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_5P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_6P0V (5)
-+#define AW87XXX_PID_60_BST_VOUT_6P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_6P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_6P25V (6)
-+#define AW87XXX_PID_60_BST_VOUT_6P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_6P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_6P5V (7)
-+#define AW87XXX_PID_60_BST_VOUT_6P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_6P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_6P75V (8)
-+#define AW87XXX_PID_60_BST_VOUT_6P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_6P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_7P0V (9)
-+#define AW87XXX_PID_60_BST_VOUT_7P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_7P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_7P25V (10)
-+#define AW87XXX_PID_60_BST_VOUT_7P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_7P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_7P5V (11)
-+#define AW87XXX_PID_60_BST_VOUT_7P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_7P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_7P75V (12)
-+#define AW87XXX_PID_60_BST_VOUT_7P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_7P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_8P0V (13)
-+#define AW87XXX_PID_60_BST_VOUT_8P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_8P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_8P25V (14)
-+#define AW87XXX_PID_60_BST_VOUT_8P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_8P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_8P5V (15)
-+#define AW87XXX_PID_60_BST_VOUT_8P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_8P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_8P75V (16)
-+#define AW87XXX_PID_60_BST_VOUT_8P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_8P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_9P0V (17)
-+#define AW87XXX_PID_60_BST_VOUT_9P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_9P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_9P25V (18)
-+#define AW87XXX_PID_60_BST_VOUT_9P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_9P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_9P5V (19)
-+#define AW87XXX_PID_60_BST_VOUT_9P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_9P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_9P75V (20)
-+#define AW87XXX_PID_60_BST_VOUT_9P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_9P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_10P0V (21)
-+#define AW87XXX_PID_60_BST_VOUT_10P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_10P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_10P25V (22)
-+#define AW87XXX_PID_60_BST_VOUT_10P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_10P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_10P5V (23)
-+#define AW87XXX_PID_60_BST_VOUT_10P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_10P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_10P75V (24)
-+#define AW87XXX_PID_60_BST_VOUT_10P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_10P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_11P0V (25)
-+#define AW87XXX_PID_60_BST_VOUT_11P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_11P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_11P25V (26)
-+#define AW87XXX_PID_60_BST_VOUT_11P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_11P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_11P5V (27)
-+#define AW87XXX_PID_60_BST_VOUT_11P5V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_11P5V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_11P75V (28)
-+#define AW87XXX_PID_60_BST_VOUT_11P75V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_11P75V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_12P0V (29)
-+#define AW87XXX_PID_60_BST_VOUT_12P0V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_12P0V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_12P25V (30)
-+#define AW87XXX_PID_60_BST_VOUT_12P25V_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_12P25V << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_DEFAULT_VALUE (0x11)
-+#define AW87XXX_PID_60_BST_VOUT_DEFAULT \
-+ (AW87XXX_PID_60_BST_VOUT_DEFAULT_VALUE << AW87XXX_PID_60_BST_VOUT_START_BIT)
-+
-+/* default value of BSTOVR (0x02) */
-+/* #define AW87XXX_PID_60_BSTOVR_DEFAULT (0x31) */
-+
-+/* PEAKLIMIT (0x03) detail */
-+/* BST_OVP2_VTH bit 6:4 (PEAKLIMIT 0x03) */
-+#define AW87XXX_PID_60_BST_OVP2_VTH_START_BIT (4)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP2_VTH_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_13P5V (0)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_13P5V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_13P5V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_14P0 (1)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_14P0_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_14P0 << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_14P5V (2)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_14P5V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_14P5V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_15P0V (3)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_15P0V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_15P0V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_9P0V (4)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_9P0V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_9P0V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_9P5V (5)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_9P5V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_9P5V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_10P0V (6)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_10P0V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_10P0V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_10P5V (7)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_10P5V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_10P5V << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_VTH_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_OVP2_VTH_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP2_VTH_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP2_VTH_START_BIT)
-+
-+/* BST_IPEAK bit 3:0 (PEAKLIMIT 0x03) */
-+#define AW87XXX_PID_60_BST_IPEAK_START_BIT (0)
-+#define AW87XXX_PID_60_BST_IPEAK_BITS_LEN (4)
-+#define AW87XXX_PID_60_BST_IPEAK_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_1P5A (0)
-+#define AW87XXX_PID_60_BST_IPEAK_1P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_1P5A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_1P75A (1)
-+#define AW87XXX_PID_60_BST_IPEAK_1P75A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_1P75A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_2P0A (2)
-+#define AW87XXX_PID_60_BST_IPEAK_2P0A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_2P0A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_2P25A (3)
-+#define AW87XXX_PID_60_BST_IPEAK_2P25A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_2P25A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_2P5A (4)
-+#define AW87XXX_PID_60_BST_IPEAK_2P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_2P5A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_2P75A (5)
-+#define AW87XXX_PID_60_BST_IPEAK_2P75A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_2P75A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_3P0A (6)
-+#define AW87XXX_PID_60_BST_IPEAK_3P0A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_3P0A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_3P25A (7)
-+#define AW87XXX_PID_60_BST_IPEAK_3P25A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_3P25A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_3P5A (8)
-+#define AW87XXX_PID_60_BST_IPEAK_3P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_3P5A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_3P75A (9)
-+#define AW87XXX_PID_60_BST_IPEAK_3P75A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_3P75A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_4A (10)
-+#define AW87XXX_PID_60_BST_IPEAK_4A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_4A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_4P25A (11)
-+#define AW87XXX_PID_60_BST_IPEAK_4P25A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_4P25A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_4P50A (12)
-+#define AW87XXX_PID_60_BST_IPEAK_4P50A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_4P50A << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_DEFAULT_VALUE (9)
-+#define AW87XXX_PID_60_BST_IPEAK_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_START_BIT)
-+
-+/* default value of PEAKLIMIT (0x03) */
-+/* #define AW87XXX_PID_60_PEAKLIMIT_DEFAULT (0x09) */
-+
-+/* ADPSET (0x04) detail */
-+/* EN_ADP_BST bit 6 (ADPSET 0x04) */
-+#define AW87XXX_PID_60_EN_ADP_BST_START_BIT (6)
-+#define AW87XXX_PID_60_EN_ADP_BST_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_ADP_BST_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_ADP_BST_BITS_LEN)-1) << AW87XXX_PID_60_EN_ADP_BST_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_ADP_BST_DISABLE (0)
-+#define AW87XXX_PID_60_EN_ADP_BST_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_ADP_BST_DISABLE << AW87XXX_PID_60_EN_ADP_BST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_ADP_BST_ENABLE (1)
-+#define AW87XXX_PID_60_EN_ADP_BST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_ADP_BST_ENABLE << AW87XXX_PID_60_EN_ADP_BST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_ADP_BST_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_EN_ADP_BST_DEFAULT \
-+ (AW87XXX_PID_60_EN_ADP_BST_DEFAULT_VALUE << AW87XXX_PID_60_EN_ADP_BST_START_BIT)
-+
-+/* ADP_BOOST_MODE bit 5:3 (ADPSET 0x04) */
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT (3)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_BITS_LEN (3)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_60_ADP_BOOST_MODE_BITS_LEN)-1) << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT))
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_RCV (0)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_RCV_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_RCV << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_FORCE_BOOST (1)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_FORCE_BOOST_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_FORCE_BOOST << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_OSBOSD (2)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_OSBOSD_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_OSBOSD << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_TSBTSD (3)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_TSBTSD_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_TSBTSD << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_TSBOSD (4)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_TSBOSD_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_TSBOSD << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MSBOSD (5)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MSBOSD_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_MSBOSD << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MSBTSD (6)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MSBTSD_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_MSBTSD << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MSBMSD (7)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_MSBMSD_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_MSBMSD << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_ADP_BOOST_MODE_DEFAULT \
-+ (AW87XXX_PID_60_ADP_BOOST_MODE_DEFAULT_VALUE << AW87XXX_PID_60_ADP_BOOST_MODE_START_BIT)
-+
-+/* SET_BOOST_VTH2 bit 2:0 (ADPSET 0x04) */
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT (0)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_BITS_LEN (3)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_MASK \
-+ (~(((1<<AW87XXX_PID_60_SET_BOOST_VTH2_BITS_LEN)-1) << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT))
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P2W (0)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P2W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_1P2W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P4W (1)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P4W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_1P4W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P6W (2)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P6W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_1P6W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P8W (3)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_1P8W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_1P8W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P0W (4)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P0W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_2P0W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P2W (5)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P2W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_2P2W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P4W (6)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P4W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_2P4W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P6W (7)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_2P6W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_2P6W << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_60_SET_BOOST_VTH2_DEFAULT \
-+ (AW87XXX_PID_60_SET_BOOST_VTH2_DEFAULT_VALUE << AW87XXX_PID_60_SET_BOOST_VTH2_START_BIT)
-+
-+/* default value of ADPSET (0x04) */
-+/* #define AW87XXX_PID_60_ADPSET_DEFAULT (0x54) */
-+
-+/* PAG (0x05) detail */
-+/* SET_BOOST_VTH1 bit 6:5 (PAG 0x05) */
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT (5)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_BITS_LEN (2)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_MASK \
-+ (~(((1<<AW87XXX_PID_60_SET_BOOST_VTH1_BITS_LEN)-1) << AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT))
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P1W (0)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P1W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH1_0P1W << AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P2W (1)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P2W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH1_0P2W << AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P3W (2)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P3W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH1_0P3W << AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P4W (3)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_0P4W_VALUE \
-+ (AW87XXX_PID_60_SET_BOOST_VTH1_0P4W << AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT)
-+
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_SET_BOOST_VTH1_DEFAULT \
-+ (AW87XXX_PID_60_SET_BOOST_VTH1_DEFAULT_VALUE << AW87XXX_PID_60_SET_BOOST_VTH1_START_BIT)
-+
-+/* PA_GAIN bit 4:0 (PAG 0x05) */
-+#define AW87XXX_PID_60_PA_GAIN_START_BIT (0)
-+#define AW87XXX_PID_60_PA_GAIN_BITS_LEN (5)
-+#define AW87XXX_PID_60_PA_GAIN_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_GAIN_BITS_LEN)-1) << AW87XXX_PID_60_PA_GAIN_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_GAIN_0DB (0)
-+#define AW87XXX_PID_60_PA_GAIN_0DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_0DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_1P5DB (1)
-+#define AW87XXX_PID_60_PA_GAIN_1P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_1P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_3DB (2)
-+#define AW87XXX_PID_60_PA_GAIN_3DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_3DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_4P5DB (3)
-+#define AW87XXX_PID_60_PA_GAIN_4P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_4P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_6DB (4)
-+#define AW87XXX_PID_60_PA_GAIN_6DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_6DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_7P5DB (5)
-+#define AW87XXX_PID_60_PA_GAIN_7P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_7P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_9DB (6)
-+#define AW87XXX_PID_60_PA_GAIN_9DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_9DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_10P5DB (7)
-+#define AW87XXX_PID_60_PA_GAIN_10P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_10P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_12DB (8)
-+#define AW87XXX_PID_60_PA_GAIN_12DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_12DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_13P5DB (9)
-+#define AW87XXX_PID_60_PA_GAIN_13P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_13P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_15DB (10)
-+#define AW87XXX_PID_60_PA_GAIN_15DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_15DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_16P5DB (11)
-+#define AW87XXX_PID_60_PA_GAIN_16P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_16P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_18DB (12)
-+#define AW87XXX_PID_60_PA_GAIN_18DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_18DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_19P5DB (13)
-+#define AW87XXX_PID_60_PA_GAIN_19P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_19P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_21DB (14)
-+#define AW87XXX_PID_60_PA_GAIN_21DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_21DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_22P5DB (15)
-+#define AW87XXX_PID_60_PA_GAIN_22P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_22P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_24DB (16)
-+#define AW87XXX_PID_60_PA_GAIN_24DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_24DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_25P5DB (17)
-+#define AW87XXX_PID_60_PA_GAIN_25P5DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_25P5DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GAIN_27DB (18)
-+#define AW87XXX_PID_60_PA_GAIN_27DB_VALUE \
-+ (AW87XXX_PID_60_PA_GAIN_27DB << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+/*
-+Fix me here:
-+reg_addr:0x05, reg_name:PAG, field_name:PA_GAIN, content:when RCV_MODE=0??PA_GAIN default?? 10000
-+maybe need to fix manually
-+*/
-+#define AW87XXX_PID_60_PA_GAIN_DEFAULT_VALUE (0x10)
-+#define AW87XXX_PID_60_PA_GAIN_DEFAULT \
-+ (AW87XXX_PID_60_PA_GAIN_DEFAULT_VALUE << AW87XXX_PID_60_PA_GAIN_START_BIT)
-+
-+/* default value of PAG (0x05) */
-+/* #define AW87XXX_PID_60_PAG_DEFAULT (0x50) */
-+
-+/* AGC1PA (0x06) detail */
-+/* PD_AGC1 bit 7 (AGC1PA 0x06) */
-+#define AW87XXX_PID_60_PD_AGC1_START_BIT (7)
-+#define AW87XXX_PID_60_PD_AGC1_BITS_LEN (1)
-+#define AW87XXX_PID_60_PD_AGC1_MASK \
-+ (~(((1<<AW87XXX_PID_60_PD_AGC1_BITS_LEN)-1) << AW87XXX_PID_60_PD_AGC1_START_BIT))
-+
-+#define AW87XXX_PID_60_PD_AGC1_ENABLE (0)
-+#define AW87XXX_PID_60_PD_AGC1_ENABLE_VALUE \
-+ (AW87XXX_PID_60_PD_AGC1_ENABLE << AW87XXX_PID_60_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_AGC1_DISABLE (1)
-+#define AW87XXX_PID_60_PD_AGC1_DISABLE_VALUE \
-+ (AW87XXX_PID_60_PD_AGC1_DISABLE << AW87XXX_PID_60_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_AGC1_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PD_AGC1_DEFAULT \
-+ (AW87XXX_PID_60_PD_AGC1_DEFAULT_VALUE << AW87XXX_PID_60_PD_AGC1_START_BIT)
-+
-+/* AGC1_OUTPUT_LEVEL bit 6:3 (AGC1PA 0x06) */
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT (3)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_BITS_LEN (4)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_BITS_LEN)-1) << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5V (0)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P2V (1)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P2V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P2V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P4V (2)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P4V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P4V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P6V (3)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P6V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P6V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P8V (4)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P8V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_5P8V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P0V (5)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P0V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P0V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P2V (6)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P2V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P2V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P4V (7)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P4V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P4V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P6V (8)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P6V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P6V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P8V (9)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P8V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_6P8V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7V (10)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P2V (11)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P2V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P2V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P4V (12)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P4V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P4V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P6V (13)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P6V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P6V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P8V (14)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P8V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_7P8V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_8V (15)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_8V_VALUE \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_8V << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_DEFAULT_VALUE (0x9)
-+#define AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_DEFAULT \
-+ (AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_DEFAULT_VALUE << AW87XXX_PID_60_AGC1_OUTPUT_LEVEL_START_BIT)
-+
-+/* AGC1_ATT_TIME bit 2:0 (AGC1PA 0x06) */
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT (0)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC1_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P04MSDB (0)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P04MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P04MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P08MSDB (1)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P08MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P08MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P16MSDB (2)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P16MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P16MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P32MSDB (3)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P32MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P32MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P02MSDB (4)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P02MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P02MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P01MSDB (5)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P01MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P01MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P005MSDB (6)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P005MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P005MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P005MSDB (7)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_0P005MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_0P005MSDB << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_AGC1_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_60_AGC1_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_60_AGC1_ATT_TIME_START_BIT)
-+
-+/* default value of AGC1PA (0x06) */
-+/* #define AW87XXX_PID_60_AGC1PA_DEFAULT (0x49) */
-+
-+/* AGC2PA (0x07) detail */
-+/* AGC2_OUTPUT_POWER bit 6:3 (AGC2PA 0x07) */
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT (3)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_BITS_LEN (4)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC2_OUTPUT_POWER_BITS_LEN)-1) << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P0W4_OHM (0)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P0W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P0W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P4W4_OHM (1)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P4W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P4W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P8W4_OHM (2)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P8W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_2P8W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_3P2W4_OHM (3)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_3P2W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_3P2W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_3P6W4_OHM (4)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_3P6W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_3P6W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P0W4_OHM (5)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P0W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P0W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P4W4_OHM (6)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P4W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P4W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P8W4_OHM (7)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P8W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_4P8W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_5P2W4_OHM (8)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_5P2W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_5P2W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_5P6W4_OHM (9)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_5P6W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_5P6W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_6W4_OHM (10)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_6W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_6W4_OHM << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_AGC2_OFF (11)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_AGC2_OFF_VALUE \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_AGC2_OFF << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_60_AGC2_OUTPUT_POWER_DEFAULT \
-+ (AW87XXX_PID_60_AGC2_OUTPUT_POWER_DEFAULT_VALUE << AW87XXX_PID_60_AGC2_OUTPUT_POWER_START_BIT)
-+
-+/* AGC2_ATT_TIME bit 2:0 (AGC2PA 0x07) */
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT (0)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC2_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_0P16MSDB (0)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_0P16MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_0P16MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_0P32MSDB (1)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_0P32MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_0P32MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_0P64MSDB (2)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_0P64MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_0P64MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_2P56MSDB (3)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_2P56MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_2P56MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_10P24MSDB (4)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_10P24MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_10P24MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_40P96MSDB (5)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_40P96MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_40P96MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_82MSDB (6)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_82MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_82MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_164MSDB (7)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_164MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_164MSDB << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_AGC2_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_60_AGC2_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_60_AGC2_ATT_TIME_START_BIT)
-+
-+/* default value of AGC2PA (0x07) */
-+/* #define AW87XXX_PID_60_AGC2PA_DEFAULT (0x1A) */
-+
-+/* AGC3PA (0x08) detail */
-+/* PD_AGC3 bit 4 (AGC3PA 0x08) */
-+#define AW87XXX_PID_60_PD_AGC3_START_BIT (4)
-+#define AW87XXX_PID_60_PD_AGC3_BITS_LEN (1)
-+#define AW87XXX_PID_60_PD_AGC3_MASK \
-+ (~(((1<<AW87XXX_PID_60_PD_AGC3_BITS_LEN)-1) << AW87XXX_PID_60_PD_AGC3_START_BIT))
-+
-+#define AW87XXX_PID_60_PD_AGC3_ENABLE (0)
-+#define AW87XXX_PID_60_PD_AGC3_ENABLE_VALUE \
-+ (AW87XXX_PID_60_PD_AGC3_ENABLE << AW87XXX_PID_60_PD_AGC3_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_AGC3_DISABLE (1)
-+#define AW87XXX_PID_60_PD_AGC3_DISABLE_VALUE \
-+ (AW87XXX_PID_60_PD_AGC3_DISABLE << AW87XXX_PID_60_PD_AGC3_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_AGC3_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PD_AGC3_DEFAULT \
-+ (AW87XXX_PID_60_PD_AGC3_DEFAULT_VALUE << AW87XXX_PID_60_PD_AGC3_START_BIT)
-+
-+/* EN_HW_MODE bit 5 (AGC3PA 0x08) */
-+#define AW87XXX_PID_60_EN_HW_MODE_START_BIT (5)
-+#define AW87XXX_PID_60_EN_HW_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_HW_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_HW_MODE_BITS_LEN)-1) << AW87XXX_PID_60_EN_HW_MODE_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_HW_MODE_DISABLE (0)
-+#define AW87XXX_PID_60_EN_HW_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_HW_MODE_DISABLE << AW87XXX_PID_60_EN_HW_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_HW_MODE_ENABLE (1)
-+#define AW87XXX_PID_60_EN_HW_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_HW_MODE_ENABLE << AW87XXX_PID_60_EN_HW_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_HW_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_HW_MODE_DEFAULT \
-+ (AW87XXX_PID_60_EN_HW_MODE_DEFAULT_VALUE << AW87XXX_PID_60_EN_HW_MODE_START_BIT)
-+
-+/* AGC3_OUTPUT_POWER bit 3:0 (AGC3PA 0x08) */
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT (0)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_BITS_LEN (4)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC3_OUTPUT_POWER_BITS_LEN)-1) << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P0W4_OHM (0)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P0W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P0W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P2W4_OHM (1)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P2W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P2W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P4W4_OHM (2)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P4W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P4W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P6W4_OHM (3)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P6W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P6W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P8W4_OHM (4)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P8W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_1P8W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P0W4_OHM (5)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P0W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P0W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P2W4_OHM (6)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P2W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P2W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P4W4_OHM (7)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P4W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P4W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P6W4_OHM (8)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P6W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P6W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P8W4_OHM (9)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P8W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_2P8W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P0W4_OHM (10)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P0W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P0W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P2W4_OHM (11)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P2W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P2W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P4W4_OHM (12)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P4W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P4W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P6W4_OHM (13)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P6W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P6W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P8W4_OHM (14)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P8W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_3P8W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_4P0W4_OHM (15)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_4P0W4_OHM_VALUE \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_4P0W4_OHM << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_60_AGC3_OUTPUT_POWER_DEFAULT \
-+ (AW87XXX_PID_60_AGC3_OUTPUT_POWER_DEFAULT_VALUE << AW87XXX_PID_60_AGC3_OUTPUT_POWER_START_BIT)
-+
-+/* default value of AGC3PA (0x08) */
-+/* #define AW87XXX_PID_60_AGC3PA_DEFAULT (0x03) */
-+
-+/* AGC3P (0x09) detail */
-+/* AGC3_REL_TIME bit 7:5 (AGC3P 0x09) */
-+#define AW87XXX_PID_60_AGC3_REL_TIME_START_BIT (5)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC3_REL_TIME_BITS_LEN)-1) << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_5P12MSDB (0)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_5P12MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_5P12MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_10P24MSDB (1)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_10P24MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_10P24MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_20P48MSDB (2)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_20P48MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_20P48MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_40P96MSDB (3)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_40P96MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_40P96MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_81P92MSDB (4)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_81P92MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_81P92MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_163P84MSDB (5)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_163P84MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_163P84MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_327P68MSDB (6)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_327P68MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_327P68MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_655P36MSDB (7)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_655P36MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_655P36MSDB << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_REL_TIME_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_AGC3_REL_TIME_DEFAULT \
-+ (AW87XXX_PID_60_AGC3_REL_TIME_DEFAULT_VALUE << AW87XXX_PID_60_AGC3_REL_TIME_START_BIT)
-+
-+/* AGC3_ATT_TIME bit 4:2 (AGC3P 0x09) */
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT (2)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_BITS_LEN (3)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC3_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_1P28MSDB (0)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_1P28MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_1P28MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_2P56MSDB (1)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_2P56MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_2P56MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_10P24MSDB (2)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_10P24MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_10P24MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_40P96MSDB (3)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_40P96MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_40P96MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_82MSDB (4)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_82MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_82MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_164MSDB (5)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_164MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_164MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_328MSDB (6)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_328MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_328MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_656MSDB (7)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_656MSDB_VALUE \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_656MSDB << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_60_AGC3_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_60_AGC3_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_60_AGC3_ATT_TIME_START_BIT)
-+
-+/* AGC3_FIRST_ATT_TIME bit 1:0 (AGC3P 0x09) */
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT (0)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_5P12MS (0)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_5P12MS_VALUE \
-+ (AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_5P12MS << AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_10P24MS (1)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_10P24MS_VALUE \
-+ (AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_10P24MS << AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_20P48MS (2)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_20P48MS_VALUE \
-+ (AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_20P48MS << AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_41MS (3)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_41MS_VALUE \
-+ (AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_41MS << AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_60_AGC3_FIRST_ATT_TIME_START_BIT)
-+
-+/* default value of AGC3P (0x09) */
-+/* #define AW87XXX_PID_60_AGC3P_DEFAULT (0x4E) */
-+
-+/* LOW_BAT (0x0A) detail */
-+/* EN_BAT_SFGD bit 6 (LOW_BAT 0x0A) */
-+#define AW87XXX_PID_60_EN_BAT_SFGD_START_BIT (6)
-+#define AW87XXX_PID_60_EN_BAT_SFGD_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_BAT_SFGD_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_BAT_SFGD_BITS_LEN)-1) << AW87XXX_PID_60_EN_BAT_SFGD_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_BAT_SFGD_DISABLE (0)
-+#define AW87XXX_PID_60_EN_BAT_SFGD_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_BAT_SFGD_DISABLE << AW87XXX_PID_60_EN_BAT_SFGD_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_BAT_SFGD_ENABLE (1)
-+#define AW87XXX_PID_60_EN_BAT_SFGD_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_BAT_SFGD_ENABLE << AW87XXX_PID_60_EN_BAT_SFGD_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_BAT_SFGD_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_BAT_SFGD_DEFAULT \
-+ (AW87XXX_PID_60_EN_BAT_SFGD_DEFAULT_VALUE << AW87XXX_PID_60_EN_BAT_SFGD_START_BIT)
-+
-+/* BAT_SFGD_VTH bit 5:4 (LOW_BAT 0x0A) */
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT (4)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BAT_SFGD_VTH_BITS_LEN)-1) << AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT))
-+
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P3V (0)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P3V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_VTH_3P3V << AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P4V (1)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P4V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_VTH_3P4V << AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P5V (2)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P5V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_VTH_3P5V << AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P6V (3)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_3P6V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_VTH_3P6V << AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BAT_SFGD_VTH_DEFAULT \
-+ (AW87XXX_PID_60_BAT_SFGD_VTH_DEFAULT_VALUE << AW87XXX_PID_60_BAT_SFGD_VTH_START_BIT)
-+
-+/* BAT_SFGD_LEVEL bit 3:2 (LOW_BAT 0x0A) */
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT (2)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_BITS_LEN (2)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_BAT_SFGD_LEVEL_BITS_LEN)-1) << AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT))
-+
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_5V (0)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_5V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_LEVEL_5V << AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_5P5V (1)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_5P5V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_LEVEL_5P5V << AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_6V (2)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_6V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_LEVEL_6V << AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_6P5V (3)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_6P5V_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_LEVEL_6P5V << AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_DEFAULT_VALUE (0x01)
-+#define AW87XXX_PID_60_BAT_SFGD_LEVEL_DEFAULT \
-+ (AW87XXX_PID_60_BAT_SFGD_LEVEL_DEFAULT_VALUE << AW87XXX_PID_60_BAT_SFGD_LEVEL_START_BIT)
-+
-+/* BAT_SFGD_DEGLITCH bit 1:0 (LOW_BAT 0x0A) */
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT (0)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_BITS_LEN (2)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BAT_SFGD_DEGLITCH_BITS_LEN)-1) << AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT))
-+
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_1MS (0)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_1MS_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_DEGLITCH_1MS << AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_500US (1)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_500US_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_DEGLITCH_500US << AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_200US (2)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_200US_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_DEGLITCH_200US << AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_DISABLE (3)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BAT_SFGD_DEGLITCH_DISABLE << AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_BAT_SFGD_DEGLITCH_DEFAULT \
-+ (AW87XXX_PID_60_BAT_SFGD_DEGLITCH_DEFAULT_VALUE << AW87XXX_PID_60_BAT_SFGD_DEGLITCH_START_BIT)
-+
-+/* default value of LOW_BAT (0x0A) */
-+/* #define AW87XXX_PID_60_LOW_BAT_DEFAULT (0x14) */
-+
-+/* BSTOUT (0x0B) detail */
-+/* ADP_BOOST_VOUT bit 4:0 (BSTOUT 0x0B) */
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT (0)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_BITS_LEN (5)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_MASK \
-+ (~(((1<<AW87XXX_PID_60_ADP_BOOST_VOUT_BITS_LEN)-1) << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT))
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_4P75V (0)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_4P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_4P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P0V (1)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_5P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P25V (2)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_5P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P5V (3)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_5P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P75V (4)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_5P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_5P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P0V (5)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_6P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P25V (6)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_6P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P5V (7)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_6P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P75V (8)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_6P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_6P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P0V (9)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_7P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P25V (10)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_7P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P5V (11)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_7P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P75V (12)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_7P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_7P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P0V (13)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_8P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P25V (14)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_8P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P5V (15)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_8P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P75V (16)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_8P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_8P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P0V (17)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_9P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P25V (18)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_9P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P5V (19)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_9P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P75V (20)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_9P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_9P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P0V (21)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_10P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P25V (22)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_10P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P5V (23)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_10P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P75V (24)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_10P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_10P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P0V (25)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_11P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P25V (26)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_11P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P5V (27)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P5V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_11P5V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P75V (28)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_11P75V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_11P75V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_12P0V (29)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_12P0V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_12P0V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_12P25V (30)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_12P25V_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_12P25V << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_DEFAULT_VALUE (0x11)
-+#define AW87XXX_PID_60_ADP_BOOST_VOUT_DEFAULT \
-+ (AW87XXX_PID_60_ADP_BOOST_VOUT_DEFAULT_VALUE << AW87XXX_PID_60_ADP_BOOST_VOUT_START_BIT)
-+
-+/* default value of BSTOUT (0x0B) */
-+/* #define AW87XXX_PID_60_BSTOUT_DEFAULT (0x11) */
-+
-+/* SYSST (0x59) detail */
-+/* ADP_BOOST_S bit 0 (SYSST 0x59) */
-+#define AW87XXX_PID_60_ADP_BOOST_S_START_BIT (0)
-+#define AW87XXX_PID_60_ADP_BOOST_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_ADP_BOOST_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_ADP_BOOST_S_BITS_LEN)-1) << AW87XXX_PID_60_ADP_BOOST_S_START_BIT))
-+
-+#define AW87XXX_PID_60_ADP_BOOST_S_DIRECT_MODE (0)
-+#define AW87XXX_PID_60_ADP_BOOST_S_DIRECT_MODE_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_S_DIRECT_MODE << AW87XXX_PID_60_ADP_BOOST_S_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_S_BOOST_MODE (1)
-+#define AW87XXX_PID_60_ADP_BOOST_S_BOOST_MODE_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_S_BOOST_MODE << AW87XXX_PID_60_ADP_BOOST_S_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_ADP_BOOST_S_DEFAULT \
-+ (AW87XXX_PID_60_ADP_BOOST_S_DEFAULT_VALUE << AW87XXX_PID_60_ADP_BOOST_S_START_BIT)
-+
-+/* OT160_S bit 1 (SYSST 0x59) */
-+#define AW87XXX_PID_60_OT160_S_START_BIT (1)
-+#define AW87XXX_PID_60_OT160_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_OT160_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_OT160_S_BITS_LEN)-1) << AW87XXX_PID_60_OT160_S_START_BIT))
-+
-+#define AW87XXX_PID_60_OT160_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_OT160_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_OT160_S_NORMAL_OPERATION << AW87XXX_PID_60_OT160_S_START_BIT)
-+
-+#define AW87XXX_PID_60_OT160_S_PA_OVER_TEMPRETURE_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_OT160_S_PA_OVER_TEMPRETURE_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_OT160_S_PA_OVER_TEMPRETURE_PROTECTION_DETECTED << AW87XXX_PID_60_OT160_S_START_BIT)
-+
-+#define AW87XXX_PID_60_OT160_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_OT160_S_DEFAULT \
-+ (AW87XXX_PID_60_OT160_S_DEFAULT_VALUE << AW87XXX_PID_60_OT160_S_START_BIT)
-+
-+/* PA_OC_S bit 2 (SYSST 0x59) */
-+#define AW87XXX_PID_60_PA_OC_S_START_BIT (2)
-+#define AW87XXX_PID_60_PA_OC_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_PA_OC_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_OC_S_BITS_LEN)-1) << AW87XXX_PID_60_PA_OC_S_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_OC_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_PA_OC_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_PA_OC_S_NORMAL_OPERATION << AW87XXX_PID_60_PA_OC_S_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_S_PA_OVER_CURRENT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_PA_OC_S_PA_OVER_CURRENT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_PA_OC_S_PA_OVER_CURRENT_PROTECTION_DETECTED << AW87XXX_PID_60_PA_OC_S_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_PA_OC_S_DEFAULT \
-+ (AW87XXX_PID_60_PA_OC_S_DEFAULT_VALUE << AW87XXX_PID_60_PA_OC_S_START_BIT)
-+
-+/* BST_SCP_S bit 3 (SYSST 0x59) */
-+#define AW87XXX_PID_60_BST_SCP_S_START_BIT (3)
-+#define AW87XXX_PID_60_BST_SCP_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_SCP_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SCP_S_BITS_LEN)-1) << AW87XXX_PID_60_BST_SCP_S_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SCP_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_BST_SCP_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_S_NORMAL_OPERATION << AW87XXX_PID_60_BST_SCP_S_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_S_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_BST_SCP_S_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_S_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED << AW87XXX_PID_60_BST_SCP_S_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_SCP_S_DEFAULT \
-+ (AW87XXX_PID_60_BST_SCP_S_DEFAULT_VALUE << AW87XXX_PID_60_BST_SCP_S_START_BIT)
-+
-+/* BST_OVP2_S bit 4 (SYSST 0x59) */
-+#define AW87XXX_PID_60_BST_OVP2_S_START_BIT (4)
-+#define AW87XXX_PID_60_BST_OVP2_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP2_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP2_S_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP2_S_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP2_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_BST_OVP2_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_S_NORMAL_OPERATION << AW87XXX_PID_60_BST_OVP2_S_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_S_BOOST_HEAVY_LOAD_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_BST_OVP2_S_BOOST_HEAVY_LOAD_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_S_BOOST_HEAVY_LOAD_PROTECTION_DETECTED << AW87XXX_PID_60_BST_OVP2_S_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_OVP2_S_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP2_S_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP2_S_START_BIT)
-+
-+/* BST_OVP_S bit 5 (SYSST 0x59) */
-+#define AW87XXX_PID_60_BST_OVP_S_START_BIT (5)
-+#define AW87XXX_PID_60_BST_OVP_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP_S_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP_S_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_BST_OVP_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_S_NORMAL_OPERATION << AW87XXX_PID_60_BST_OVP_S_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_S_BOOST_OVER_VOLTAGE_PROTECTION (1)
-+#define AW87XXX_PID_60_BST_OVP_S_BOOST_OVER_VOLTAGE_PROTECTION_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_S_BOOST_OVER_VOLTAGE_PROTECTION << AW87XXX_PID_60_BST_OVP_S_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_OVP_S_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP_S_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP_S_START_BIT)
-+
-+/* LOW_BATT_S bit 6 (SYSST 0x59) */
-+#define AW87XXX_PID_60_LOW_BATT_S_START_BIT (6)
-+#define AW87XXX_PID_60_LOW_BATT_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_LOW_BATT_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_LOW_BATT_S_BITS_LEN)-1) << AW87XXX_PID_60_LOW_BATT_S_START_BIT))
-+
-+#define AW87XXX_PID_60_LOW_BATT_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_LOW_BATT_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_LOW_BATT_S_NORMAL_OPERATION << AW87XXX_PID_60_LOW_BATT_S_START_BIT)
-+
-+#define AW87XXX_PID_60_LOW_BATT_S_LOW_VBAT_DETECTED (1)
-+#define AW87XXX_PID_60_LOW_BATT_S_LOW_VBAT_DETECTED_VALUE \
-+ (AW87XXX_PID_60_LOW_BATT_S_LOW_VBAT_DETECTED << AW87XXX_PID_60_LOW_BATT_S_START_BIT)
-+
-+#define AW87XXX_PID_60_LOW_BATT_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_LOW_BATT_S_DEFAULT \
-+ (AW87XXX_PID_60_LOW_BATT_S_DEFAULT_VALUE << AW87XXX_PID_60_LOW_BATT_S_START_BIT)
-+
-+/* UVLO_S bit 7 (SYSST 0x59) */
-+#define AW87XXX_PID_60_UVLO_S_START_BIT (7)
-+#define AW87XXX_PID_60_UVLO_S_BITS_LEN (1)
-+#define AW87XXX_PID_60_UVLO_S_MASK \
-+ (~(((1<<AW87XXX_PID_60_UVLO_S_BITS_LEN)-1) << AW87XXX_PID_60_UVLO_S_START_BIT))
-+
-+#define AW87XXX_PID_60_UVLO_S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_UVLO_S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_UVLO_S_NORMAL_OPERATION << AW87XXX_PID_60_UVLO_S_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_S_VBAT_UNDER_VOLTAGE (1)
-+#define AW87XXX_PID_60_UVLO_S_VBAT_UNDER_VOLTAGE_VALUE \
-+ (AW87XXX_PID_60_UVLO_S_VBAT_UNDER_VOLTAGE << AW87XXX_PID_60_UVLO_S_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_S_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_UVLO_S_DEFAULT \
-+ (AW87XXX_PID_60_UVLO_S_DEFAULT_VALUE << AW87XXX_PID_60_UVLO_S_START_BIT)
-+
-+/* default value of SYSST (0x59) */
-+/* #define AW87XXX_PID_60_SYSST_DEFAULT (0xFF) */
-+
-+/* SYSINT (0x60) detail */
-+/* ADP_BOOST_I bit 0 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_ADP_BOOST_I_START_BIT (0)
-+#define AW87XXX_PID_60_ADP_BOOST_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_ADP_BOOST_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_ADP_BOOST_I_BITS_LEN)-1) << AW87XXX_PID_60_ADP_BOOST_I_START_BIT))
-+
-+#define AW87XXX_PID_60_ADP_BOOST_I_DIRECT_MODE (0)
-+#define AW87XXX_PID_60_ADP_BOOST_I_DIRECT_MODE_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_I_DIRECT_MODE << AW87XXX_PID_60_ADP_BOOST_I_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_I_BOOST_MODE (1)
-+#define AW87XXX_PID_60_ADP_BOOST_I_BOOST_MODE_VALUE \
-+ (AW87XXX_PID_60_ADP_BOOST_I_BOOST_MODE << AW87XXX_PID_60_ADP_BOOST_I_START_BIT)
-+
-+#define AW87XXX_PID_60_ADP_BOOST_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_ADP_BOOST_I_DEFAULT \
-+ (AW87XXX_PID_60_ADP_BOOST_I_DEFAULT_VALUE << AW87XXX_PID_60_ADP_BOOST_I_START_BIT)
-+
-+/* OT160_I bit 1 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_OT160_I_START_BIT (1)
-+#define AW87XXX_PID_60_OT160_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_OT160_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_OT160_I_BITS_LEN)-1) << AW87XXX_PID_60_OT160_I_START_BIT))
-+
-+#define AW87XXX_PID_60_OT160_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_OT160_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_OT160_I_NORMAL_OPERATION << AW87XXX_PID_60_OT160_I_START_BIT)
-+
-+#define AW87XXX_PID_60_OT160_I_PA_OVER_TEMPRETURE_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_OT160_I_PA_OVER_TEMPRETURE_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_OT160_I_PA_OVER_TEMPRETURE_PROTECTION_DETECTED << AW87XXX_PID_60_OT160_I_START_BIT)
-+
-+#define AW87XXX_PID_60_OT160_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_OT160_I_DEFAULT \
-+ (AW87XXX_PID_60_OT160_I_DEFAULT_VALUE << AW87XXX_PID_60_OT160_I_START_BIT)
-+
-+/* PA_OC_I bit 2 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_PA_OC_I_START_BIT (2)
-+#define AW87XXX_PID_60_PA_OC_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_PA_OC_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_OC_I_BITS_LEN)-1) << AW87XXX_PID_60_PA_OC_I_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_OC_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_PA_OC_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_PA_OC_I_NORMAL_OPERATION << AW87XXX_PID_60_PA_OC_I_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_I_PA_OVER_CURRENT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_PA_OC_I_PA_OVER_CURRENT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_PA_OC_I_PA_OVER_CURRENT_PROTECTION_DETECTED << AW87XXX_PID_60_PA_OC_I_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_PA_OC_I_DEFAULT \
-+ (AW87XXX_PID_60_PA_OC_I_DEFAULT_VALUE << AW87XXX_PID_60_PA_OC_I_START_BIT)
-+
-+/* BST_SCP_I bit 3 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_BST_SCP_I_START_BIT (3)
-+#define AW87XXX_PID_60_BST_SCP_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_SCP_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SCP_I_BITS_LEN)-1) << AW87XXX_PID_60_BST_SCP_I_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SCP_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_BST_SCP_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_I_NORMAL_OPERATION << AW87XXX_PID_60_BST_SCP_I_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_I_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_BST_SCP_I_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_I_BOOST_SHORT_CIRCUIT_PROTECTION_DETECTED << AW87XXX_PID_60_BST_SCP_I_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_SCP_I_DEFAULT \
-+ (AW87XXX_PID_60_BST_SCP_I_DEFAULT_VALUE << AW87XXX_PID_60_BST_SCP_I_START_BIT)
-+
-+/* BST_OVP2_I bit 4 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_BST_OVP2_I_START_BIT (4)
-+#define AW87XXX_PID_60_BST_OVP2_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP2_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP2_I_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP2_I_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP2_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_BST_OVP2_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_I_NORMAL_OPERATION << AW87XXX_PID_60_BST_OVP2_I_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_I_BOOST_HEAVY_LOAD_PROTECTION_DETECTED (1)
-+#define AW87XXX_PID_60_BST_OVP2_I_BOOST_HEAVY_LOAD_PROTECTION_DETECTED_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_I_BOOST_HEAVY_LOAD_PROTECTION_DETECTED << AW87XXX_PID_60_BST_OVP2_I_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_OVP2_I_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP2_I_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP2_I_START_BIT)
-+
-+/* BST_OVP_I bit 5 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_BST_OVP_I_START_BIT (5)
-+#define AW87XXX_PID_60_BST_OVP_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP_I_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP_I_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_BST_OVP_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_I_NORMAL_OPERATION << AW87XXX_PID_60_BST_OVP_I_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_I_BOOST_OVER_VOLTAGE_PROTECTION (1)
-+#define AW87XXX_PID_60_BST_OVP_I_BOOST_OVER_VOLTAGE_PROTECTION_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_I_BOOST_OVER_VOLTAGE_PROTECTION << AW87XXX_PID_60_BST_OVP_I_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_OVP_I_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP_I_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP_I_START_BIT)
-+
-+/* LOW_BATT_I bit 6 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_LOW_BATT_I_START_BIT (6)
-+#define AW87XXX_PID_60_LOW_BATT_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_LOW_BATT_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_LOW_BATT_I_BITS_LEN)-1) << AW87XXX_PID_60_LOW_BATT_I_START_BIT))
-+
-+#define AW87XXX_PID_60_LOW_BATT_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_LOW_BATT_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_LOW_BATT_I_NORMAL_OPERATION << AW87XXX_PID_60_LOW_BATT_I_START_BIT)
-+
-+#define AW87XXX_PID_60_LOW_BATT_I_LOW_VBAT_DETECTED (1)
-+#define AW87XXX_PID_60_LOW_BATT_I_LOW_VBAT_DETECTED_VALUE \
-+ (AW87XXX_PID_60_LOW_BATT_I_LOW_VBAT_DETECTED << AW87XXX_PID_60_LOW_BATT_I_START_BIT)
-+
-+#define AW87XXX_PID_60_LOW_BATT_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_LOW_BATT_I_DEFAULT \
-+ (AW87XXX_PID_60_LOW_BATT_I_DEFAULT_VALUE << AW87XXX_PID_60_LOW_BATT_I_START_BIT)
-+
-+/* UVLO_I bit 7 (SYSINT 0x60) */
-+#define AW87XXX_PID_60_UVLO_I_START_BIT (7)
-+#define AW87XXX_PID_60_UVLO_I_BITS_LEN (1)
-+#define AW87XXX_PID_60_UVLO_I_MASK \
-+ (~(((1<<AW87XXX_PID_60_UVLO_I_BITS_LEN)-1) << AW87XXX_PID_60_UVLO_I_START_BIT))
-+
-+#define AW87XXX_PID_60_UVLO_I_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_60_UVLO_I_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_60_UVLO_I_NORMAL_OPERATION << AW87XXX_PID_60_UVLO_I_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_I_VBAT_UNDER_VOLTAGE (1)
-+#define AW87XXX_PID_60_UVLO_I_VBAT_UNDER_VOLTAGE_VALUE \
-+ (AW87XXX_PID_60_UVLO_I_VBAT_UNDER_VOLTAGE << AW87XXX_PID_60_UVLO_I_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_I_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_UVLO_I_DEFAULT \
-+ (AW87XXX_PID_60_UVLO_I_DEFAULT_VALUE << AW87XXX_PID_60_UVLO_I_START_BIT)
-+
-+/* default value of SYSINT (0x60) */
-+/* #define AW87XXX_PID_60_SYSINT_DEFAULT (0xFF) */
-+
-+/* BURST_CON (0x61) detail */
-+/* BURST_PEAK bit 7:5 (BURST_CON 0x61) */
-+#define AW87XXX_PID_60_BURST_PEAK_START_BIT (5)
-+#define AW87XXX_PID_60_BURST_PEAK_BITS_LEN (3)
-+#define AW87XXX_PID_60_BURST_PEAK_MASK \
-+ (~(((1<<AW87XXX_PID_60_BURST_PEAK_BITS_LEN)-1) << AW87XXX_PID_60_BURST_PEAK_START_BIT))
-+
-+#define AW87XXX_PID_60_BURST_PEAK_10MA (0)
-+#define AW87XXX_PID_60_BURST_PEAK_10MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_10MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_20MA (1)
-+#define AW87XXX_PID_60_BURST_PEAK_20MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_20MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_30MA (2)
-+#define AW87XXX_PID_60_BURST_PEAK_30MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_30MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_50MA (3)
-+#define AW87XXX_PID_60_BURST_PEAK_50MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_50MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_70MA (4)
-+#define AW87XXX_PID_60_BURST_PEAK_70MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_70MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_130MA (5)
-+#define AW87XXX_PID_60_BURST_PEAK_130MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_130MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_160MA (7)
-+#define AW87XXX_PID_60_BURST_PEAK_160MA_VALUE \
-+ (AW87XXX_PID_60_BURST_PEAK_160MA << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_PEAK_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_60_BURST_PEAK_DEFAULT \
-+ (AW87XXX_PID_60_BURST_PEAK_DEFAULT_VALUE << AW87XXX_PID_60_BURST_PEAK_START_BIT)
-+
-+/* BST_BURST_SS bit 4:2 (BURST_CON 0x61) */
-+#define AW87XXX_PID_60_BST_BURST_SS_START_BIT (2)
-+#define AW87XXX_PID_60_BST_BURST_SS_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_BURST_SS_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BURST_SS_BITS_LEN)-1) << AW87XXX_PID_60_BST_BURST_SS_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_700MV (0)
-+#define AW87XXX_PID_60_BST_BURST_SS_700MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_700MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_760MV (1)
-+#define AW87XXX_PID_60_BST_BURST_SS_760MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_760MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_820MV (2)
-+#define AW87XXX_PID_60_BST_BURST_SS_820MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_820MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_880MV (3)
-+#define AW87XXX_PID_60_BST_BURST_SS_880MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_880MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_940MV (4)
-+#define AW87XXX_PID_60_BST_BURST_SS_940MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_940MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_1000MV (5)
-+#define AW87XXX_PID_60_BST_BURST_SS_1000MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_1000MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_1060MV (6)
-+#define AW87XXX_PID_60_BST_BURST_SS_1060MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_1060MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_1120MV (7)
-+#define AW87XXX_PID_60_BST_BURST_SS_1120MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SS_1120MV << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SS_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_BURST_SS_DEFAULT \
-+ (AW87XXX_PID_60_BST_BURST_SS_DEFAULT_VALUE << AW87XXX_PID_60_BST_BURST_SS_START_BIT)
-+
-+/* BST_COMPMAX bit 1:0 (BURST_CON 0x61) */
-+#define AW87XXX_PID_60_BST_COMPMAX_START_BIT (0)
-+#define AW87XXX_PID_60_BST_COMPMAX_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_COMPMAX_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_COMPMAX_BITS_LEN)-1) << AW87XXX_PID_60_BST_COMPMAX_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_COMPMAX_2P0V (0)
-+#define AW87XXX_PID_60_BST_COMPMAX_2P0V_VALUE \
-+ (AW87XXX_PID_60_BST_COMPMAX_2P0V << AW87XXX_PID_60_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_COMPMAX_2P2V (1)
-+#define AW87XXX_PID_60_BST_COMPMAX_2P2V_VALUE \
-+ (AW87XXX_PID_60_BST_COMPMAX_2P2V << AW87XXX_PID_60_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_COMPMAX_2P3V (2)
-+#define AW87XXX_PID_60_BST_COMPMAX_2P3V_VALUE \
-+ (AW87XXX_PID_60_BST_COMPMAX_2P3V << AW87XXX_PID_60_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_COMPMAX_2P4V (3)
-+#define AW87XXX_PID_60_BST_COMPMAX_2P4V_VALUE \
-+ (AW87XXX_PID_60_BST_COMPMAX_2P4V << AW87XXX_PID_60_BST_COMPMAX_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_COMPMAX_DEFAULT_VALUE (3)
-+#define AW87XXX_PID_60_BST_COMPMAX_DEFAULT \
-+ (AW87XXX_PID_60_BST_COMPMAX_DEFAULT_VALUE << AW87XXX_PID_60_BST_COMPMAX_START_BIT)
-+
-+/* default value of BURST_CON (0x61) */
-+/* #define AW87XXX_PID_60_BURST_CON_DEFAULT (0x47) */
-+
-+/* BST_BIAS (0x62) detail */
-+/* BST_EA_CUR bit 0 (BST_BIAS 0x62) */
-+#define AW87XXX_PID_60_BST_EA_CUR_START_BIT (0)
-+#define AW87XXX_PID_60_BST_EA_CUR_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_EA_CUR_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_EA_CUR_BITS_LEN)-1) << AW87XXX_PID_60_BST_EA_CUR_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_EA_CUR_1UA (0)
-+#define AW87XXX_PID_60_BST_EA_CUR_1UA_VALUE \
-+ (AW87XXX_PID_60_BST_EA_CUR_1UA << AW87XXX_PID_60_BST_EA_CUR_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EA_CUR_2UA (1)
-+#define AW87XXX_PID_60_BST_EA_CUR_2UA_VALUE \
-+ (AW87XXX_PID_60_BST_EA_CUR_2UA << AW87XXX_PID_60_BST_EA_CUR_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EA_CUR_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_EA_CUR_DEFAULT \
-+ (AW87XXX_PID_60_BST_EA_CUR_DEFAULT_VALUE << AW87XXX_PID_60_BST_EA_CUR_START_BIT)
-+
-+/* BST_BURST_SSMD bit 5 (BST_BIAS 0x62) */
-+#define AW87XXX_PID_60_BST_BURST_SSMD_START_BIT (5)
-+#define AW87XXX_PID_60_BST_BURST_SSMD_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_BURST_SSMD_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BURST_SSMD_BITS_LEN)-1) << AW87XXX_PID_60_BST_BURST_SSMD_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BURST_SSMD_SLOW (0)
-+#define AW87XXX_PID_60_BST_BURST_SSMD_SLOW_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SSMD_SLOW << AW87XXX_PID_60_BST_BURST_SSMD_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SSMD_FAST (1)
-+#define AW87XXX_PID_60_BST_BURST_SSMD_FAST_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_SSMD_FAST << AW87XXX_PID_60_BST_BURST_SSMD_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_SSMD_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_BURST_SSMD_DEFAULT \
-+ (AW87XXX_PID_60_BST_BURST_SSMD_DEFAULT_VALUE << AW87XXX_PID_60_BST_BURST_SSMD_START_BIT)
-+
-+/* BST_NCD_ITH bit 7:6 (BST_BIAS 0x62) */
-+#define AW87XXX_PID_60_BST_NCD_ITH_START_BIT (6)
-+#define AW87XXX_PID_60_BST_NCD_ITH_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_NCD_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_NCD_ITH_BITS_LEN)-1) << AW87XXX_PID_60_BST_NCD_ITH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_NCD_ITH_170MA (0)
-+#define AW87XXX_PID_60_BST_NCD_ITH_170MA_VALUE \
-+ (AW87XXX_PID_60_BST_NCD_ITH_170MA << AW87XXX_PID_60_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_NCD_ITH_220MA (1)
-+#define AW87XXX_PID_60_BST_NCD_ITH_220MA_VALUE \
-+ (AW87XXX_PID_60_BST_NCD_ITH_220MA << AW87XXX_PID_60_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_NCD_ITH_280MA (2)
-+#define AW87XXX_PID_60_BST_NCD_ITH_280MA_VALUE \
-+ (AW87XXX_PID_60_BST_NCD_ITH_280MA << AW87XXX_PID_60_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_NCD_ITH_340MA (3)
-+#define AW87XXX_PID_60_BST_NCD_ITH_340MA_VALUE \
-+ (AW87XXX_PID_60_BST_NCD_ITH_340MA << AW87XXX_PID_60_BST_NCD_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_NCD_ITH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_NCD_ITH_DEFAULT \
-+ (AW87XXX_PID_60_BST_NCD_ITH_DEFAULT_VALUE << AW87XXX_PID_60_BST_NCD_ITH_START_BIT)
-+
-+/* BST_VOUT_TRIM bit 4:3 (BST_BIAS 0x62) */
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT (3)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_VOUT_TRIM_BITS_LEN)-1) << AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_25UA (0)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_25UA_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_TRIM_25UA << AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_24UA (1)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_24UA_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_TRIM_24UA << AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_25P5UA (2)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_25P5UA_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_TRIM_25P5UA << AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_24P5UA (3)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_24P5UA_VALUE \
-+ (AW87XXX_PID_60_BST_VOUT_TRIM_24P5UA << AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_VOUT_TRIM_DEFAULT \
-+ (AW87XXX_PID_60_BST_VOUT_TRIM_DEFAULT_VALUE << AW87XXX_PID_60_BST_VOUT_TRIM_START_BIT)
-+
-+/* BST_BURST_IN bit 2:1 (BST_BIAS 0x62) */
-+#define AW87XXX_PID_60_BST_BURST_IN_START_BIT (1)
-+#define AW87XXX_PID_60_BST_BURST_IN_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_BURST_IN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BURST_IN_BITS_LEN)-1) << AW87XXX_PID_60_BST_BURST_IN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_3MV (0)
-+#define AW87XXX_PID_60_BST_BURST_IN_3MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_3MV << AW87XXX_PID_60_BST_BURST_IN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_5MV (1)
-+#define AW87XXX_PID_60_BST_BURST_IN_5MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_5MV << AW87XXX_PID_60_BST_BURST_IN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_7MV (2)
-+#define AW87XXX_PID_60_BST_BURST_IN_7MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_7MV << AW87XXX_PID_60_BST_BURST_IN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_9MV (3)
-+#define AW87XXX_PID_60_BST_BURST_IN_9MV_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_9MV << AW87XXX_PID_60_BST_BURST_IN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_BURST_IN_DEFAULT \
-+ (AW87XXX_PID_60_BST_BURST_IN_DEFAULT_VALUE << AW87XXX_PID_60_BST_BURST_IN_START_BIT)
-+
-+/* default value of BST_BIAS (0x62) */
-+/* #define AW87XXX_PID_60_BST_BIAS_DEFAULT (0x60) */
-+
-+/* BST_EA (0x63) detail */
-+/* BST_LOW_CLAMP_EN bit 2 (BST_EA 0x63) */
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_START_BIT (2)
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_LOW_CLAMP_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_LOW_CLAMP_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_DISABLE (0)
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_LOW_CLAMP_EN_DISABLE << AW87XXX_PID_60_BST_LOW_CLAMP_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_ENABLE (1)
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_LOW_CLAMP_EN_ENABLE << AW87XXX_PID_60_BST_LOW_CLAMP_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_LOW_CLAMP_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_LOW_CLAMP_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_LOW_CLAMP_EN_START_BIT)
-+
-+/* EN_VOUT_DIV bit 7 (BST_EA 0x63) */
-+#define AW87XXX_PID_60_EN_VOUT_DIV_START_BIT (7)
-+#define AW87XXX_PID_60_EN_VOUT_DIV_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_VOUT_DIV_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_VOUT_DIV_BITS_LEN)-1) << AW87XXX_PID_60_EN_VOUT_DIV_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_VOUT_DIV_DISABLE (0)
-+#define AW87XXX_PID_60_EN_VOUT_DIV_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_VOUT_DIV_DISABLE << AW87XXX_PID_60_EN_VOUT_DIV_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_VOUT_DIV_ENABLE (1)
-+#define AW87XXX_PID_60_EN_VOUT_DIV_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_VOUT_DIV_ENABLE << AW87XXX_PID_60_EN_VOUT_DIV_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_VOUT_DIV_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_EN_VOUT_DIV_DEFAULT \
-+ (AW87XXX_PID_60_EN_VOUT_DIV_DEFAULT_VALUE << AW87XXX_PID_60_EN_VOUT_DIV_START_BIT)
-+
-+/* BST_BURST_OUT_DELAY bit 6:5 (BST_EA 0x63) */
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT (5)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BURST_OUT_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_2P8US (0)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_2P8US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_OUT_DELAY_2P8US << AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_8P1US (1)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_8P1US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_OUT_DELAY_8P1US << AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_1P2US (2)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_1P2US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_OUT_DELAY_1P2US << AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_1P8US (3)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_1P8US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_OUT_DELAY_1P8US << AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_BURST_OUT_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_BST_BURST_OUT_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_BST_BURST_OUT_DELAY_START_BIT)
-+
-+/* BST_BURST_IN_DELAY bit 4:3 (BST_EA 0x63) */
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT (3)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BURST_IN_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_7P4US (0)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_7P4US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_DELAY_7P4US << AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_14P6US (1)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_14P6US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_DELAY_14P6US << AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_3P7US (2)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_3P7US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_DELAY_3P7US << AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_5US (3)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_5US_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_IN_DELAY_5US << AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_BURST_IN_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_BST_BURST_IN_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_BST_BURST_IN_DELAY_START_BIT)
-+
-+/* BST_LOOPR bit 1:0 (BST_EA 0x63) */
-+#define AW87XXX_PID_60_BST_LOOPR_START_BIT (0)
-+#define AW87XXX_PID_60_BST_LOOPR_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_LOOPR_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_LOOPR_BITS_LEN)-1) << AW87XXX_PID_60_BST_LOOPR_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_LOOPR_100K (0)
-+#define AW87XXX_PID_60_BST_LOOPR_100K_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPR_100K << AW87XXX_PID_60_BST_LOOPR_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOOPR_200K (1)
-+#define AW87XXX_PID_60_BST_LOOPR_200K_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPR_200K << AW87XXX_PID_60_BST_LOOPR_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOOPR_400K (2)
-+#define AW87XXX_PID_60_BST_LOOPR_400K_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPR_400K << AW87XXX_PID_60_BST_LOOPR_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOOPR_500K (3)
-+#define AW87XXX_PID_60_BST_LOOPR_500K_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPR_500K << AW87XXX_PID_60_BST_LOOPR_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOOPR_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_60_BST_LOOPR_DEFAULT \
-+ (AW87XXX_PID_60_BST_LOOPR_DEFAULT_VALUE << AW87XXX_PID_60_BST_LOOPR_START_BIT)
-+
-+/* default value of BST_EA (0x63) */
-+/* #define AW87XXX_PID_60_BST_EA_DEFAULT (0x86) */
-+
-+/* BST_DE_SOFT (0x64) detail */
-+/* EN_ADP_PEAK bit 0 (BST_DE_SOFT 0x64) */
-+#define AW87XXX_PID_60_EN_ADP_PEAK_START_BIT (0)
-+#define AW87XXX_PID_60_EN_ADP_PEAK_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_ADP_PEAK_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_ADP_PEAK_BITS_LEN)-1) << AW87XXX_PID_60_EN_ADP_PEAK_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_ADP_PEAK_DISABLE (0)
-+#define AW87XXX_PID_60_EN_ADP_PEAK_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_ADP_PEAK_DISABLE << AW87XXX_PID_60_EN_ADP_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_ADP_PEAK_ENABLE (1)
-+#define AW87XXX_PID_60_EN_ADP_PEAK_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_ADP_PEAK_ENABLE << AW87XXX_PID_60_EN_ADP_PEAK_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_ADP_PEAK_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_EN_ADP_PEAK_DEFAULT \
-+ (AW87XXX_PID_60_EN_ADP_PEAK_DEFAULT_VALUE << AW87XXX_PID_60_EN_ADP_PEAK_START_BIT)
-+
-+/* BST_SOFT_MODE_EN bit 7 (BST_DE_SOFT 0x64) */
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_START_BIT (7)
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SOFT_MODE_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_SOFT_MODE_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_DISABLE (0)
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_SOFT_MODE_EN_DISABLE << AW87XXX_PID_60_BST_SOFT_MODE_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_ENABLE (1)
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_SOFT_MODE_EN_ENABLE << AW87XXX_PID_60_BST_SOFT_MODE_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SOFT_MODE_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_SOFT_MODE_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_SOFT_MODE_EN_START_BIT)
-+
-+/* BST_LOOPC bit 6:5 (BST_DE_SOFT 0x64) */
-+#define AW87XXX_PID_60_BST_LOOPC_START_BIT (5)
-+#define AW87XXX_PID_60_BST_LOOPC_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_LOOPC_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_LOOPC_BITS_LEN)-1) << AW87XXX_PID_60_BST_LOOPC_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_LOOPC_30PF (0)
-+#define AW87XXX_PID_60_BST_LOOPC_30PF_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPC_30PF << AW87XXX_PID_60_BST_LOOPC_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOOPC_40PF (1)
-+#define AW87XXX_PID_60_BST_LOOPC_40PF_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPC_40PF << AW87XXX_PID_60_BST_LOOPC_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_BST_LOOPC_40PF (2)
-+#define AW87XXX_PID_60_BST_LOOPC_40PF_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPC_40PF << AW87XXX_PID_60_BST_LOOPC_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_BST_LOOPC_50PF (3)
-+#define AW87XXX_PID_60_BST_LOOPC_50PF_VALUE \
-+ (AW87XXX_PID_60_BST_LOOPC_50PF << AW87XXX_PID_60_BST_LOOPC_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LOOPC_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_LOOPC_DEFAULT \
-+ (AW87XXX_PID_60_BST_LOOPC_DEFAULT_VALUE << AW87XXX_PID_60_BST_LOOPC_START_BIT)
-+
-+/* BST_SEL_DFPWM bit 4:3 (BST_DE_SOFT 0x64) */
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT (3)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SEL_DFPWM_BITS_LEN)-1) << AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_32US_00_2US (0)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_32US_00_2US_VALUE \
-+ (AW87XXX_PID_60_BST_SEL_DFPWM_32US_00_2US << AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_64US_01_CLK (1)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_64US_01_CLK_VALUE \
-+ (AW87XXX_PID_60_BST_SEL_DFPWM_64US_01_CLK << AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_128US_10_4US (2)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_128US_10_4US_VALUE \
-+ (AW87XXX_PID_60_BST_SEL_DFPWM_128US_10_4US << AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_256US_11_8US (3)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_256US_11_8US_VALUE \
-+ (AW87XXX_PID_60_BST_SEL_DFPWM_256US_11_8US << AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_SEL_DFPWM_DEFAULT \
-+ (AW87XXX_PID_60_BST_SEL_DFPWM_DEFAULT_VALUE << AW87XXX_PID_60_BST_SEL_DFPWM_START_BIT)
-+
-+/* BST_SOFT_DELAY bit 2:1 (BST_DE_SOFT 0x64) */
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT (1)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SOFT_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_40US_001280U (0)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_40US_001280U_VALUE \
-+ (AW87XXX_PID_60_BST_SOFT_DELAY_40US_001280U << AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_80US_012560U (1)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_80US_012560U_VALUE \
-+ (AW87XXX_PID_60_BST_SOFT_DELAY_80US_012560U << AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_160US_105120U (2)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_160US_105120U_VALUE \
-+ (AW87XXX_PID_60_BST_SOFT_DELAY_160US_105120U << AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_320US_1110240U (3)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_320US_1110240U_VALUE \
-+ (AW87XXX_PID_60_BST_SOFT_DELAY_320US_1110240U << AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SOFT_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_BST_SOFT_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_BST_SOFT_DELAY_START_BIT)
-+
-+/* default value of BST_DE_SOFT (0x64) */
-+/* #define AW87XXX_PID_60_BST_DE_SOFT_DEFAULT (0x09) */
-+
-+/* BST_BURST_KICK (0x65) detail */
-+/* EN_TRANS_ERROR bit 0 (BST_BURST_KICK 0x65) */
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_START_BIT (0)
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_TRANS_ERROR_BITS_LEN)-1) << AW87XXX_PID_60_EN_TRANS_ERROR_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_DISABLE (0)
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_TRANS_ERROR_DISABLE << AW87XXX_PID_60_EN_TRANS_ERROR_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_ENABLE (1)
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_TRANS_ERROR_ENABLE << AW87XXX_PID_60_EN_TRANS_ERROR_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_EN_TRANS_ERROR_DEFAULT \
-+ (AW87XXX_PID_60_EN_TRANS_ERROR_DEFAULT_VALUE << AW87XXX_PID_60_EN_TRANS_ERROR_START_BIT)
-+
-+/* BST_SCP_VTH bit 1 (BST_BURST_KICK 0x65) */
-+#define AW87XXX_PID_60_BST_SCP_VTH_START_BIT (1)
-+#define AW87XXX_PID_60_BST_SCP_VTH_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_SCP_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SCP_VTH_BITS_LEN)-1) << AW87XXX_PID_60_BST_SCP_VTH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SCP_VTH_HIGH_SIDE_VDD (0)
-+#define AW87XXX_PID_60_BST_SCP_VTH_HIGH_SIDE_VDD_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_VTH_HIGH_SIDE_VDD << AW87XXX_PID_60_BST_SCP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_VTH_LOW_SIDE_VDD (1)
-+#define AW87XXX_PID_60_BST_SCP_VTH_LOW_SIDE_VDD_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_VTH_LOW_SIDE_VDD << AW87XXX_PID_60_BST_SCP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_VTH_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SCP_VTH_DEFAULT \
-+ (AW87XXX_PID_60_BST_SCP_VTH_DEFAULT_VALUE << AW87XXX_PID_60_BST_SCP_VTH_START_BIT)
-+
-+/* BST_SKIP_EN bit 6 (BST_BURST_KICK 0x65) */
-+#define AW87XXX_PID_60_BST_SKIP_EN_START_BIT (6)
-+#define AW87XXX_PID_60_BST_SKIP_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_SKIP_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SKIP_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_SKIP_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SKIP_EN_ENABLE (0)
-+#define AW87XXX_PID_60_BST_SKIP_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_SKIP_EN_ENABLE << AW87XXX_PID_60_BST_SKIP_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SKIP_EN_DISABLE (1)
-+#define AW87XXX_PID_60_BST_SKIP_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_SKIP_EN_DISABLE << AW87XXX_PID_60_BST_SKIP_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SKIP_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SKIP_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_SKIP_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_SKIP_EN_START_BIT)
-+
-+/* BST_ADBK_COMP_ADJ bit 7 (BST_BURST_KICK 0x65) */
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_START_BIT (7)
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_ADBK_COMP_ADJ_BITS_LEN)-1) << AW87XXX_PID_60_BST_ADBK_COMP_ADJ_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_14UA (0)
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_14UA_VALUE \
-+ (AW87XXX_PID_60_BST_ADBK_COMP_ADJ_14UA << AW87XXX_PID_60_BST_ADBK_COMP_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_10UA (1)
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_10UA_VALUE \
-+ (AW87XXX_PID_60_BST_ADBK_COMP_ADJ_10UA << AW87XXX_PID_60_BST_ADBK_COMP_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_ADBK_COMP_ADJ_DEFAULT \
-+ (AW87XXX_PID_60_BST_ADBK_COMP_ADJ_DEFAULT_VALUE << AW87XXX_PID_60_BST_ADBK_COMP_ADJ_START_BIT)
-+
-+/* BST_OVP2_ITH bit 5:4 (BST_BURST_KICK 0x65) */
-+#define AW87XXX_PID_60_BST_OVP2_ITH_START_BIT (4)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP2_ITH_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP2_ITH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP2_ITH_32MA (0)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_32MA_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_ITH_32MA << AW87XXX_PID_60_BST_OVP2_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_ITH_48MA (1)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_48MA_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_ITH_48MA << AW87XXX_PID_60_BST_OVP2_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_ITH_64MA (2)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_64MA_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_ITH_64MA << AW87XXX_PID_60_BST_OVP2_ITH_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_BST_OVP2_ITH_64MA (3)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_64MA_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_ITH_64MA << AW87XXX_PID_60_BST_OVP2_ITH_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_BST_OVP2_ITH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_OVP2_ITH_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP2_ITH_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP2_ITH_START_BIT)
-+
-+/* BST_KICK_ITH bit 3:2 (BST_BURST_KICK 0x65) */
-+#define AW87XXX_PID_60_BST_KICK_ITH_START_BIT (2)
-+#define AW87XXX_PID_60_BST_KICK_ITH_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_KICK_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_KICK_ITH_BITS_LEN)-1) << AW87XXX_PID_60_BST_KICK_ITH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_KICK_ITH_32MA (0)
-+#define AW87XXX_PID_60_BST_KICK_ITH_32MA_VALUE \
-+ (AW87XXX_PID_60_BST_KICK_ITH_32MA << AW87XXX_PID_60_BST_KICK_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_KICK_ITH_48MA (1)
-+#define AW87XXX_PID_60_BST_KICK_ITH_48MA_VALUE \
-+ (AW87XXX_PID_60_BST_KICK_ITH_48MA << AW87XXX_PID_60_BST_KICK_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_KICK_ITH_64MA (2)
-+#define AW87XXX_PID_60_BST_KICK_ITH_64MA_VALUE \
-+ (AW87XXX_PID_60_BST_KICK_ITH_64MA << AW87XXX_PID_60_BST_KICK_ITH_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_BST_KICK_ITH_64MA (3)
-+#define AW87XXX_PID_60_BST_KICK_ITH_64MA_VALUE \
-+ (AW87XXX_PID_60_BST_KICK_ITH_64MA << AW87XXX_PID_60_BST_KICK_ITH_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_BST_KICK_ITH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_KICK_ITH_DEFAULT \
-+ (AW87XXX_PID_60_BST_KICK_ITH_DEFAULT_VALUE << AW87XXX_PID_60_BST_KICK_ITH_START_BIT)
-+
-+/* default value of BST_BURST_KICK (0x65) */
-+/* #define AW87XXX_PID_60_BST_BURST_KICK_DEFAULT (0x14) */
-+
-+/* BST_CON1 (0x66) detail */
-+/* BST_GTDR_DDT bit 2 (BST_CON1 0x66) */
-+#define AW87XXX_PID_60_BST_GTDR_DDT_START_BIT (2)
-+#define AW87XXX_PID_60_BST_GTDR_DDT_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_GTDR_DDT_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_GTDR_DDT_BITS_LEN)-1) << AW87XXX_PID_60_BST_GTDR_DDT_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_GTDR_DDT_9NS (0)
-+#define AW87XXX_PID_60_BST_GTDR_DDT_9NS_VALUE \
-+ (AW87XXX_PID_60_BST_GTDR_DDT_9NS << AW87XXX_PID_60_BST_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_GTDR_DDT_12NS (1)
-+#define AW87XXX_PID_60_BST_GTDR_DDT_12NS_VALUE \
-+ (AW87XXX_PID_60_BST_GTDR_DDT_12NS << AW87XXX_PID_60_BST_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_GTDR_DDT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_GTDR_DDT_DEFAULT \
-+ (AW87XXX_PID_60_BST_GTDR_DDT_DEFAULT_VALUE << AW87XXX_PID_60_BST_GTDR_DDT_START_BIT)
-+
-+/* EN_ADP_MODE1_DEGLITCH bit 3 (BST_CON1 0x66) */
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_START_BIT (3)
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_BITS_LEN)-1) << AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_DISABLE (0)
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_DISABLE << AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_ENABLE (1)
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_ENABLE << AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_DEFAULT \
-+ (AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_DEFAULT_VALUE << AW87XXX_PID_60_EN_ADP_MODE1_DEGLITCH_START_BIT)
-+
-+/* SS_FINISH_SELECT bit 6 (BST_CON1 0x66) */
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_START_BIT (6)
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_BITS_LEN (1)
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_MASK \
-+ (~(((1<<AW87XXX_PID_60_SS_FINISH_SELECT_BITS_LEN)-1) << AW87XXX_PID_60_SS_FINISH_SELECT_START_BIT))
-+
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_NOT_USE (0)
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_NOT_USE_VALUE \
-+ (AW87XXX_PID_60_SS_FINISH_SELECT_NOT_USE << AW87XXX_PID_60_SS_FINISH_SELECT_START_BIT)
-+
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_USE (1)
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_USE_VALUE \
-+ (AW87XXX_PID_60_SS_FINISH_SELECT_USE << AW87XXX_PID_60_SS_FINISH_SELECT_START_BIT)
-+
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_SS_FINISH_SELECT_DEFAULT \
-+ (AW87XXX_PID_60_SS_FINISH_SELECT_DEFAULT_VALUE << AW87XXX_PID_60_SS_FINISH_SELECT_START_BIT)
-+
-+/* BST_GDRV_TEST bit 7 (BST_CON1 0x66) */
-+#define AW87XXX_PID_60_BST_GDRV_TEST_START_BIT (7)
-+#define AW87XXX_PID_60_BST_GDRV_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_GDRV_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_GDRV_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_GDRV_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_GDRV_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_BST_GDRV_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_GDRV_TEST_DIABLE << AW87XXX_PID_60_BST_GDRV_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_GDRV_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_GDRV_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_GDRV_TEST_ENABLE << AW87XXX_PID_60_BST_GDRV_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_GDRV_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_GDRV_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_GDRV_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_GDRV_TEST_START_BIT)
-+
-+/* BST_EN_DELAY bit 5:4 (BST_CON1 0x66) */
-+#define AW87XXX_PID_60_BST_EN_DELAY_START_BIT (4)
-+#define AW87XXX_PID_60_BST_EN_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_EN_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_EN_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_BST_EN_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_EN_DELAY_8N (0)
-+#define AW87XXX_PID_60_BST_EN_DELAY_8N_VALUE \
-+ (AW87XXX_PID_60_BST_EN_DELAY_8N << AW87XXX_PID_60_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EN_DELAY_80N (1)
-+#define AW87XXX_PID_60_BST_EN_DELAY_80N_VALUE \
-+ (AW87XXX_PID_60_BST_EN_DELAY_80N << AW87XXX_PID_60_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EN_DELAY_130N (2)
-+#define AW87XXX_PID_60_BST_EN_DELAY_130N_VALUE \
-+ (AW87XXX_PID_60_BST_EN_DELAY_130N << AW87XXX_PID_60_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EN_DELAY_200N (3)
-+#define AW87XXX_PID_60_BST_EN_DELAY_200N_VALUE \
-+ (AW87XXX_PID_60_BST_EN_DELAY_200N << AW87XXX_PID_60_BST_EN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EN_DELAY_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_EN_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_BST_EN_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_BST_EN_DELAY_START_BIT)
-+
-+/* BST_SRC bit 1:0 (BST_CON1 0x66) */
-+#define AW87XXX_PID_60_BST_SRC_START_BIT (0)
-+#define AW87XXX_PID_60_BST_SRC_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_SRC_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SRC_BITS_LEN)-1) << AW87XXX_PID_60_BST_SRC_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SRC_3NS (0)
-+#define AW87XXX_PID_60_BST_SRC_3NS_VALUE \
-+ (AW87XXX_PID_60_BST_SRC_3NS << AW87XXX_PID_60_BST_SRC_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SRC_4NS (1)
-+#define AW87XXX_PID_60_BST_SRC_4NS_VALUE \
-+ (AW87XXX_PID_60_BST_SRC_4NS << AW87XXX_PID_60_BST_SRC_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SRC_7NS (2)
-+#define AW87XXX_PID_60_BST_SRC_7NS_VALUE \
-+ (AW87XXX_PID_60_BST_SRC_7NS << AW87XXX_PID_60_BST_SRC_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SRC_15NS (3)
-+#define AW87XXX_PID_60_BST_SRC_15NS_VALUE \
-+ (AW87XXX_PID_60_BST_SRC_15NS << AW87XXX_PID_60_BST_SRC_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SRC_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SRC_DEFAULT \
-+ (AW87XXX_PID_60_BST_SRC_DEFAULT_VALUE << AW87XXX_PID_60_BST_SRC_START_BIT)
-+
-+/* default value of BST_CON1 (0x66) */
-+/* #define AW87XXX_PID_60_BST_CON1_DEFAULT (0x10) */
-+
-+/* BST_OVP (0x67) detail */
-+/* BST_OVP_VTH bit 0 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BST_OVP_VTH_START_BIT (0)
-+#define AW87XXX_PID_60_BST_OVP_VTH_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP_VTH_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP_VTH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP_VTH_3MINUS6P875V (0)
-+#define AW87XXX_PID_60_BST_OVP_VTH_3MINUS6P875V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_VTH_3MINUS6P875V << AW87XXX_PID_60_BST_OVP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_VTH_7MINUS11V (1)
-+#define AW87XXX_PID_60_BST_OVP_VTH_7MINUS11V_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_VTH_7MINUS11V << AW87XXX_PID_60_BST_OVP_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_VTH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_OVP_VTH_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP_VTH_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP_VTH_START_BIT)
-+
-+/* BST_VFB_EN bit 1 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BST_VFB_EN_START_BIT (1)
-+#define AW87XXX_PID_60_BST_VFB_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_VFB_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_VFB_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_VFB_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_VFB_EN_DISABLE (0)
-+#define AW87XXX_PID_60_BST_VFB_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_VFB_EN_DISABLE << AW87XXX_PID_60_BST_VFB_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VFB_EN_ENABLE (1)
-+#define AW87XXX_PID_60_BST_VFB_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_VFB_EN_ENABLE << AW87XXX_PID_60_BST_VFB_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_VFB_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_VFB_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_VFB_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_VFB_EN_START_BIT)
-+
-+/* BST_FORCE_PWM bit 2 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BST_FORCE_PWM_START_BIT (2)
-+#define AW87XXX_PID_60_BST_FORCE_PWM_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_FORCE_PWM_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_FORCE_PWM_BITS_LEN)-1) << AW87XXX_PID_60_BST_FORCE_PWM_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_FORCE_PWM_DISABLE (0)
-+#define AW87XXX_PID_60_BST_FORCE_PWM_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_FORCE_PWM_DISABLE << AW87XXX_PID_60_BST_FORCE_PWM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_FORCE_PWM_ENABLE (1)
-+#define AW87XXX_PID_60_BST_FORCE_PWM_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_FORCE_PWM_ENABLE << AW87XXX_PID_60_BST_FORCE_PWM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_FORCE_PWM_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_FORCE_PWM_DEFAULT \
-+ (AW87XXX_PID_60_BST_FORCE_PWM_DEFAULT_VALUE << AW87XXX_PID_60_BST_FORCE_PWM_START_BIT)
-+
-+/* BST_OVP2_EN bit 5 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BST_OVP2_EN_START_BIT (5)
-+#define AW87XXX_PID_60_BST_OVP2_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP2_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP2_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP2_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP2_EN_DISABLE (0)
-+#define AW87XXX_PID_60_BST_OVP2_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_EN_DISABLE << AW87XXX_PID_60_BST_OVP2_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_EN_ENABLE (1)
-+#define AW87XXX_PID_60_BST_OVP2_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_OVP2_EN_ENABLE << AW87XXX_PID_60_BST_OVP2_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP2_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_OVP2_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP2_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP2_EN_START_BIT)
-+
-+/* BST_OVP_DEGLI_SEL bit 6 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_START_BIT (6)
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP_DEGLI_SEL_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP_DEGLI_SEL_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_NO_DEGLITCH (0)
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_NO_DEGLITCH_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_DEGLI_SEL_NO_DEGLITCH << AW87XXX_PID_60_BST_OVP_DEGLI_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_DEGLITCH (1)
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_DEGLITCH_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_DEGLI_SEL_DEGLITCH << AW87XXX_PID_60_BST_OVP_DEGLI_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_OVP_DEGLI_SEL_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP_DEGLI_SEL_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP_DEGLI_SEL_START_BIT)
-+
-+/* BST_CLK_DIV bit 7 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BST_CLK_DIV_START_BIT (7)
-+#define AW87XXX_PID_60_BST_CLK_DIV_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_CLK_DIV_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_CLK_DIV_BITS_LEN)-1) << AW87XXX_PID_60_BST_CLK_DIV_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_CLK_DIV_DIV_BY_4 (0)
-+#define AW87XXX_PID_60_BST_CLK_DIV_DIV_BY_4_VALUE \
-+ (AW87XXX_PID_60_BST_CLK_DIV_DIV_BY_4 << AW87XXX_PID_60_BST_CLK_DIV_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_CLK_DIV_DIV_BY_2 (1)
-+#define AW87XXX_PID_60_BST_CLK_DIV_DIV_BY_2_VALUE \
-+ (AW87XXX_PID_60_BST_CLK_DIV_DIV_BY_2 << AW87XXX_PID_60_BST_CLK_DIV_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_CLK_DIV_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_CLK_DIV_DEFAULT \
-+ (AW87XXX_PID_60_BST_CLK_DIV_DEFAULT_VALUE << AW87XXX_PID_60_BST_CLK_DIV_START_BIT)
-+
-+/* BURST_HYS_EN bit 4:3 (BST_OVP 0x67) */
-+#define AW87XXX_PID_60_BURST_HYS_EN_START_BIT (3)
-+#define AW87XXX_PID_60_BURST_HYS_EN_BITS_LEN (2)
-+#define AW87XXX_PID_60_BURST_HYS_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BURST_HYS_EN_BITS_LEN)-1) << AW87XXX_PID_60_BURST_HYS_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BURST_HYS_EN_OUT (0)
-+#define AW87XXX_PID_60_BURST_HYS_EN_OUT_VALUE \
-+ (AW87XXX_PID_60_BURST_HYS_EN_OUT << AW87XXX_PID_60_BURST_HYS_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_HYS_EN_IN (1)
-+#define AW87XXX_PID_60_BURST_HYS_EN_IN_VALUE \
-+ (AW87XXX_PID_60_BURST_HYS_EN_IN << AW87XXX_PID_60_BURST_HYS_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_HYS_EN_OUT_AND_IN (3)
-+#define AW87XXX_PID_60_BURST_HYS_EN_OUT_AND_IN_VALUE \
-+ (AW87XXX_PID_60_BURST_HYS_EN_OUT_AND_IN << AW87XXX_PID_60_BURST_HYS_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BURST_HYS_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BURST_HYS_EN_DEFAULT \
-+ (AW87XXX_PID_60_BURST_HYS_EN_DEFAULT_VALUE << AW87XXX_PID_60_BURST_HYS_EN_START_BIT)
-+
-+/* default value of BST_OVP (0x67) */
-+/* #define AW87XXX_PID_60_BST_OVP_DEFAULT (0x81) */
-+
-+/* LINE_MODE (0x68) detail */
-+/* BST_EN_RSQN_DLY bit 0 (LINE_MODE 0x68) */
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_START_BIT (0)
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_EN_RSQN_DLY_BITS_LEN)-1) << AW87XXX_PID_60_BST_EN_RSQN_DLY_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_DISABLE (0)
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_EN_RSQN_DLY_DISABLE << AW87XXX_PID_60_BST_EN_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_ENABLE (1)
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_EN_RSQN_DLY_ENABLE << AW87XXX_PID_60_BST_EN_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_EN_RSQN_DLY_DEFAULT \
-+ (AW87XXX_PID_60_BST_EN_RSQN_DLY_DEFAULT_VALUE << AW87XXX_PID_60_BST_EN_RSQN_DLY_START_BIT)
-+
-+/* BST_FORCE_BOOST bit 1 (LINE_MODE 0x68) */
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_START_BIT (1)
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_FORCE_BOOST_BITS_LEN)-1) << AW87XXX_PID_60_BST_FORCE_BOOST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_DISABLE (0)
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_FORCE_BOOST_DISABLE << AW87XXX_PID_60_BST_FORCE_BOOST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_FORCE_BOOST_ENABLE << AW87XXX_PID_60_BST_FORCE_BOOST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_FORCE_BOOST_DEFAULT \
-+ (AW87XXX_PID_60_BST_FORCE_BOOST_DEFAULT_VALUE << AW87XXX_PID_60_BST_FORCE_BOOST_START_BIT)
-+
-+/* BST_PWM_SHORT bit 2 (LINE_MODE 0x68) */
-+#define AW87XXX_PID_60_BST_PWM_SHORT_START_BIT (2)
-+#define AW87XXX_PID_60_BST_PWM_SHORT_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_PWM_SHORT_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_PWM_SHORT_BITS_LEN)-1) << AW87XXX_PID_60_BST_PWM_SHORT_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_PWM_SHORT_VBSTBELOWVDD (0)
-+#define AW87XXX_PID_60_BST_PWM_SHORT_VBSTBELOWVDD_VALUE \
-+ (AW87XXX_PID_60_BST_PWM_SHORT_VBSTBELOWVDD << AW87XXX_PID_60_BST_PWM_SHORT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_PWM_SHORT_VBSTBELOWVDDMINUSVTH (1)
-+#define AW87XXX_PID_60_BST_PWM_SHORT_VBSTBELOWVDDMINUSVTH_VALUE \
-+ (AW87XXX_PID_60_BST_PWM_SHORT_VBSTBELOWVDDMINUSVTH << AW87XXX_PID_60_BST_PWM_SHORT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_PWM_SHORT_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_PWM_SHORT_DEFAULT \
-+ (AW87XXX_PID_60_BST_PWM_SHORT_DEFAULT_VALUE << AW87XXX_PID_60_BST_PWM_SHORT_START_BIT)
-+
-+/* BST_OS_WIDTH bit 7:5 (LINE_MODE 0x68) */
-+#define AW87XXX_PID_60_BST_OS_WIDTH_START_BIT (5)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OS_WIDTH_BITS_LEN)-1) << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_10NS (0)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_10NS_VALUE \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_10NS << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_20NS (1)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_20NS_VALUE \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_20NS << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_30NS (2)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_30NS_VALUE \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_30NS << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_40NS (3)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_40NS_VALUE \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_40NS << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_50NS (4)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_50NS_VALUE \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_50NS << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_60NS (5)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_60NS_VALUE \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_60NS << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OS_WIDTH_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_OS_WIDTH_DEFAULT \
-+ (AW87XXX_PID_60_BST_OS_WIDTH_DEFAULT_VALUE << AW87XXX_PID_60_BST_OS_WIDTH_START_BIT)
-+
-+/* MODE1_START_DELAY bit 4:3 (LINE_MODE 0x68) */
-+#define AW87XXX_PID_60_MODE1_START_DELAY_START_BIT (3)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_BITS_LEN (2)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_MODE1_START_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_MODE1_START_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_MODE1_START_DELAY_15P6US (0)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_15P6US_VALUE \
-+ (AW87XXX_PID_60_MODE1_START_DELAY_15P6US << AW87XXX_PID_60_MODE1_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_MODE1_START_DELAY_11P4US (1)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_11P4US_VALUE \
-+ (AW87XXX_PID_60_MODE1_START_DELAY_11P4US << AW87XXX_PID_60_MODE1_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_MODE1_START_DELAY_7P3US (2)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_7P3US_VALUE \
-+ (AW87XXX_PID_60_MODE1_START_DELAY_7P3US << AW87XXX_PID_60_MODE1_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_MODE1_START_DELAY_3US (3)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_3US_VALUE \
-+ (AW87XXX_PID_60_MODE1_START_DELAY_3US << AW87XXX_PID_60_MODE1_START_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_MODE1_START_DELAY_DEFAULT_VALUE (3)
-+#define AW87XXX_PID_60_MODE1_START_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_MODE1_START_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_MODE1_START_DELAY_START_BIT)
-+
-+/* default value of LINE_MODE (0x68) */
-+/* #define AW87XXX_PID_60_LINE_MODE_DEFAULT (0x3F) */
-+
-+/* BST_ISEN (0x69) detail */
-+/* BST_RSQN_DLY bit 7:5 (BST_ISEN 0x69) */
-+#define AW87XXX_PID_60_BST_RSQN_DLY_START_BIT (5)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_RSQN_DLY_BITS_LEN)-1) << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_15NS (0)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_15NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_15NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_25NS (1)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_25NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_25NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_35NS (2)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_35NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_35NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_45NS (3)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_45NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_45NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_70NS (4)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_70NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_70NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_80NS (5)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_80NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_80NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_90NS (6)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_90NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_90NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_100NS (7)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_100NS_VALUE \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_100NS << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_RSQN_DLY_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_60_BST_RSQN_DLY_DEFAULT \
-+ (AW87XXX_PID_60_BST_RSQN_DLY_DEFAULT_VALUE << AW87XXX_PID_60_BST_RSQN_DLY_START_BIT)
-+
-+/* BST_SLOPE bit 4:3 (BST_ISEN 0x69) */
-+#define AW87XXX_PID_60_BST_SLOPE_START_BIT (3)
-+#define AW87XXX_PID_60_BST_SLOPE_BITS_LEN (2)
-+#define AW87XXX_PID_60_BST_SLOPE_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SLOPE_BITS_LEN)-1) << AW87XXX_PID_60_BST_SLOPE_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1 (0)
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_ISLOPE1 << AW87XXX_PID_60_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1P25 (1)
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1P25_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_ISLOPE1P25 << AW87XXX_PID_60_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1P5 (2)
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1P5_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_ISLOPE1P5 << AW87XXX_PID_60_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1P75 (3)
-+#define AW87XXX_PID_60_BST_SLOPE_ISLOPE1P75_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_ISLOPE1P75 << AW87XXX_PID_60_BST_SLOPE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SLOPE_DEFAULT \
-+ (AW87XXX_PID_60_BST_SLOPE_DEFAULT_VALUE << AW87XXX_PID_60_BST_SLOPE_START_BIT)
-+
-+/* BST_SLOPE_LIMIT bit 2:0 (BST_ISEN 0x69) */
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT (0)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SLOPE_LIMIT_BITS_LEN)-1) << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_0P50ISLOPE (0)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_0P50ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_0P50ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_0P75ISLOPE (1)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_0P75ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_0P75ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P00ISLOPE (2)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P00ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_1P00ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P25ISLOPE (3)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P25ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_1P25ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P50ISLOPE (4)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P50ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_1P50ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P75ISLOPE (5)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_1P75ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_1P75ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_2P00ISLOPE (6)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_2P00ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_2P00ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_2P25ISLOPE (7)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_2P25ISLOPE_VALUE \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_2P25ISLOPE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_60_BST_SLOPE_LIMIT_DEFAULT \
-+ (AW87XXX_PID_60_BST_SLOPE_LIMIT_DEFAULT_VALUE << AW87XXX_PID_60_BST_SLOPE_LIMIT_START_BIT)
-+
-+/* default value of BST_ISEN (0x69) */
-+/* #define AW87XXX_PID_60_BST_ISEN_DEFAULT (0x42) */
-+
-+/* BST_PEAK (0x6A) detail */
-+/* BST_IPEAK_LOWBAT bit 3 (BST_PEAK 0x6A) */
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_START_BIT (3)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_LOWBAT_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_LOWBAT_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_2P5A (0)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_2P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_LOWBAT_2P5A << AW87XXX_PID_60_BST_IPEAK_LOWBAT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_2P75A (1)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_2P75A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_LOWBAT_2P75A << AW87XXX_PID_60_BST_IPEAK_LOWBAT_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_LOWBAT_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_LOWBAT_START_BIT)
-+
-+/* BST_IPEAK_LOWBAT_EN bit 4 (BST_PEAK 0x6A) */
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_START_BIT (4)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_DISABLE (0)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_DISABLE << AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_ENABLE (1)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_ENABLE << AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_LOWBAT_EN_START_BIT)
-+
-+/* BST_IPEAK_ADJ bit 5 (BST_PEAK 0x6A) */
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_START_BIT (5)
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_ADJ_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_ADJ_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_IPEAK (0)
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_IPEAK_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_ADJ_IPEAK << AW87XXX_PID_60_BST_IPEAK_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_IPEAK0P5A (1)
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_IPEAK0P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_ADJ_IPEAK0P5A << AW87XXX_PID_60_BST_IPEAK_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_IPEAK_ADJ_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_ADJ_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_ADJ_START_BIT)
-+
-+/* BACK_ADPT_R400K bit 6 (BST_PEAK 0x6A) */
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_START_BIT (6)
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_BITS_LEN (1)
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_MASK \
-+ (~(((1<<AW87XXX_PID_60_BACK_ADPT_R400K_BITS_LEN)-1) << AW87XXX_PID_60_BACK_ADPT_R400K_START_BIT))
-+
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_DISABLE (0)
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BACK_ADPT_R400K_DISABLE << AW87XXX_PID_60_BACK_ADPT_R400K_START_BIT)
-+
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_ENABALE (1)
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_ENABALE_VALUE \
-+ (AW87XXX_PID_60_BACK_ADPT_R400K_ENABALE << AW87XXX_PID_60_BACK_ADPT_R400K_START_BIT)
-+
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BACK_ADPT_R400K_DEFAULT \
-+ (AW87XXX_PID_60_BACK_ADPT_R400K_DEFAULT_VALUE << AW87XXX_PID_60_BACK_ADPT_R400K_START_BIT)
-+
-+/* SEL_FINISH_ID bit 7 (BST_PEAK 0x6A) */
-+#define AW87XXX_PID_60_SEL_FINISH_ID_START_BIT (7)
-+#define AW87XXX_PID_60_SEL_FINISH_ID_BITS_LEN (1)
-+#define AW87XXX_PID_60_SEL_FINISH_ID_MASK \
-+ (~(((1<<AW87XXX_PID_60_SEL_FINISH_ID_BITS_LEN)-1) << AW87XXX_PID_60_SEL_FINISH_ID_START_BIT))
-+
-+#define AW87XXX_PID_60_SEL_FINISH_ID_MODE1START (0)
-+#define AW87XXX_PID_60_SEL_FINISH_ID_MODE1START_VALUE \
-+ (AW87XXX_PID_60_SEL_FINISH_ID_MODE1START << AW87XXX_PID_60_SEL_FINISH_ID_START_BIT)
-+
-+#define AW87XXX_PID_60_SEL_FINISH_ID_LIMITSSFINISH (1)
-+#define AW87XXX_PID_60_SEL_FINISH_ID_LIMITSSFINISH_VALUE \
-+ (AW87XXX_PID_60_SEL_FINISH_ID_LIMITSSFINISH << AW87XXX_PID_60_SEL_FINISH_ID_START_BIT)
-+
-+#define AW87XXX_PID_60_SEL_FINISH_ID_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_SEL_FINISH_ID_DEFAULT \
-+ (AW87XXX_PID_60_SEL_FINISH_ID_DEFAULT_VALUE << AW87XXX_PID_60_SEL_FINISH_ID_START_BIT)
-+
-+/* BST_IPEAK_SS bit 2:0 (BST_PEAK 0x6A) */
-+#define AW87XXX_PID_60_BST_IPEAK_SS_START_BIT (0)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_SS_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_0P8A (0)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_0P8A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_0P8A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P0A (1)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P0A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_1P0A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P25A (2)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P25A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_1P25A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P5A (3)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_1P5A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P75A (4)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_1P75A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_1P75A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_2A (5)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_2A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_2A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_2P25A (6)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_2P25A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_2P25A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_2P50A (7)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_2P50A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_2P50A << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_SS_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_60_BST_IPEAK_SS_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_SS_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_SS_START_BIT)
-+
-+/* default value of BST_PEAK (0x6A) */
-+/* #define AW87XXX_PID_60_BST_PEAK_DEFAULT (0x01) */
-+
-+/* BST_PEAK2 (0x6B) detail */
-+/* BST_BACK_EN bit 2 (BST_PEAK2 0x6B) */
-+#define AW87XXX_PID_60_BST_BACK_EN_START_BIT (2)
-+#define AW87XXX_PID_60_BST_BACK_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_BACK_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BACK_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_BACK_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BACK_EN_ENABLE (0)
-+#define AW87XXX_PID_60_BST_BACK_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_BACK_EN_ENABLE << AW87XXX_PID_60_BST_BACK_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BACK_EN_DIABALE (1)
-+#define AW87XXX_PID_60_BST_BACK_EN_DIABALE_VALUE \
-+ (AW87XXX_PID_60_BST_BACK_EN_DIABALE << AW87XXX_PID_60_BST_BACK_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BACK_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_BACK_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_BACK_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_BACK_EN_START_BIT)
-+
-+/* BST_IPEAK_ITH_EN bit 3 (BST_PEAK2 0x6B) */
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_START_BIT (3)
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_ITH_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_ITH_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_IPEAK (0)
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_IPEAK_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_ITH_EN_IPEAK << AW87XXX_PID_60_BST_IPEAK_ITH_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_IPEAKMINUS0P5A (1)
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_IPEAKMINUS0P5A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_ITH_EN_IPEAKMINUS0P5A << AW87XXX_PID_60_BST_IPEAK_ITH_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_IPEAK_ITH_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_ITH_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_ITH_EN_START_BIT)
-+
-+/* BST_IPEAK_TRIM bit 7:4 (BST_PEAK2 0x6B) */
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT (4)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_BITS_LEN (4)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_IPEAK_TRIM_BITS_LEN)-1) << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0A (0)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_0A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0P2A (1)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0P2A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_0P2A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0P4A (2)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0P4A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_0P4A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0P6A (3)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_0P6A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_0P6A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P6A (8)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P6A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P6A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P4A (9)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P4A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P4A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P2A (10)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P2A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1P2A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1A (11)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS1A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P8A (12)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P8A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P8A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P6A (13)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P6A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P6A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P4A (14)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P4A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P4A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P2A (15)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P2A_VALUE \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_MINUS0P2A << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_IPEAK_TRIM_DEFAULT \
-+ (AW87XXX_PID_60_BST_IPEAK_TRIM_DEFAULT_VALUE << AW87XXX_PID_60_BST_IPEAK_TRIM_START_BIT)
-+
-+/* OFFTIME_OUT_C bit 1:0 (BST_PEAK2 0x6B) */
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT (0)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_BITS_LEN (2)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_MASK \
-+ (~(((1<<AW87XXX_PID_60_OFFTIME_OUT_C_BITS_LEN)-1) << AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT))
-+
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_0 (0)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_0_VALUE \
-+ (AW87XXX_PID_60_OFFTIME_OUT_C_0 << AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT)
-+
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_1 (1)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_1_VALUE \
-+ (AW87XXX_PID_60_OFFTIME_OUT_C_1 << AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT)
-+
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_2 (2)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_2_VALUE \
-+ (AW87XXX_PID_60_OFFTIME_OUT_C_2 << AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT)
-+
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_3 (3)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_3_VALUE \
-+ (AW87XXX_PID_60_OFFTIME_OUT_C_3 << AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT)
-+
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_60_OFFTIME_OUT_C_DEFAULT \
-+ (AW87XXX_PID_60_OFFTIME_OUT_C_DEFAULT_VALUE << AW87XXX_PID_60_OFFTIME_OUT_C_START_BIT)
-+
-+/* default value of BST_PEAK2 (0x6B) */
-+/* #define AW87XXX_PID_60_BST_PEAK2_DEFAULT (0x02) */
-+
-+/* OFFTIME (0x6C) detail */
-+/* HEAD_ROOM bit 3 (OFFTIME 0x6C) */
-+#define AW87XXX_PID_60_HEAD_ROOM_START_BIT (3)
-+#define AW87XXX_PID_60_HEAD_ROOM_BITS_LEN (1)
-+#define AW87XXX_PID_60_HEAD_ROOM_MASK \
-+ (~(((1<<AW87XXX_PID_60_HEAD_ROOM_BITS_LEN)-1) << AW87XXX_PID_60_HEAD_ROOM_START_BIT))
-+
-+#define AW87XXX_PID_60_HEAD_ROOM_1P5V (0)
-+#define AW87XXX_PID_60_HEAD_ROOM_1P5V_VALUE \
-+ (AW87XXX_PID_60_HEAD_ROOM_1P5V << AW87XXX_PID_60_HEAD_ROOM_START_BIT)
-+
-+#define AW87XXX_PID_60_HEAD_ROOM_2P0V (1)
-+#define AW87XXX_PID_60_HEAD_ROOM_2P0V_VALUE \
-+ (AW87XXX_PID_60_HEAD_ROOM_2P0V << AW87XXX_PID_60_HEAD_ROOM_START_BIT)
-+
-+#define AW87XXX_PID_60_HEAD_ROOM_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_HEAD_ROOM_DEFAULT \
-+ (AW87XXX_PID_60_HEAD_ROOM_DEFAULT_VALUE << AW87XXX_PID_60_HEAD_ROOM_START_BIT)
-+
-+/* BST_OFFTIME_EN bit 7 (OFFTIME 0x6C) */
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_START_BIT (7)
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OFFTIME_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_OFFTIME_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_ENABLE (0)
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_EN_ENABLE << AW87XXX_PID_60_BST_OFFTIME_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_DIABALE (1)
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_DIABALE_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_EN_DIABALE << AW87XXX_PID_60_BST_OFFTIME_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_OFFTIME_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_OFFTIME_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_OFFTIME_EN_START_BIT)
-+
-+/* BST_OFFTIME bit 6:4 (OFFTIME 0x6C) */
-+#define AW87XXX_PID_60_BST_OFFTIME_START_BIT (4)
-+#define AW87XXX_PID_60_BST_OFFTIME_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_OFFTIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OFFTIME_BITS_LEN)-1) << AW87XXX_PID_60_BST_OFFTIME_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_4 (0)
-+#define AW87XXX_PID_60_BST_OFFTIME_4_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_4 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_3 (1)
-+#define AW87XXX_PID_60_BST_OFFTIME_3_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_3 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_2 (2)
-+#define AW87XXX_PID_60_BST_OFFTIME_2_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_2 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_1 (3)
-+#define AW87XXX_PID_60_BST_OFFTIME_1_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_1 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_0 (4)
-+#define AW87XXX_PID_60_BST_OFFTIME_0_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_0 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_MINUS1 (5)
-+#define AW87XXX_PID_60_BST_OFFTIME_MINUS1_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_MINUS1 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_MINUS2 (6)
-+#define AW87XXX_PID_60_BST_OFFTIME_MINUS2_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_MINUS2 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_MINUS3 (7)
-+#define AW87XXX_PID_60_BST_OFFTIME_MINUS3_VALUE \
-+ (AW87XXX_PID_60_BST_OFFTIME_MINUS3 << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OFFTIME_DEFAULT_VALUE (4)
-+#define AW87XXX_PID_60_BST_OFFTIME_DEFAULT \
-+ (AW87XXX_PID_60_BST_OFFTIME_DEFAULT_VALUE << AW87XXX_PID_60_BST_OFFTIME_START_BIT)
-+
-+/* BST_OUT_VTH0 bit 2:0 (OFFTIME 0x6C) */
-+#define AW87XXX_PID_60_BST_OUT_VTH0_START_BIT (0)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_BITS_LEN (3)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OUT_VTH0_BITS_LEN)-1) << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_6P5V (0)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_6P5V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_6P5V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_6P75V (1)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_6P75V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_6P75V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P0V (2)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P0V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_7P0V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P25V (3)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P25V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_7P25V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P5V (4)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P5V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_7P5V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P75V (5)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_7P75V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_7P75V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_8P0V (6)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_8P0V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_8P0V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_8P25V (7)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_8P25V_VALUE \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_8P25V << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OUT_VTH0_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_BST_OUT_VTH0_DEFAULT \
-+ (AW87XXX_PID_60_BST_OUT_VTH0_DEFAULT_VALUE << AW87XXX_PID_60_BST_OUT_VTH0_START_BIT)
-+
-+/* default value of OFFTIME (0x6C) */
-+/* #define AW87XXX_PID_60_OFFTIME_DEFAULT (0x41) */
-+
-+/* ADPBST (0x6D) detail */
-+/* REG_CLK_CP_OTA bit 0 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_START_BIT (0)
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_CLK_CP_OTA_BITS_LEN)-1) << AW87XXX_PID_60_REG_CLK_CP_OTA_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_200KHZ (0)
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_200KHZ_VALUE \
-+ (AW87XXX_PID_60_REG_CLK_CP_OTA_200KHZ << AW87XXX_PID_60_REG_CLK_CP_OTA_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_400KHZ (1)
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_400KHZ_VALUE \
-+ (AW87XXX_PID_60_REG_CLK_CP_OTA_400KHZ << AW87XXX_PID_60_REG_CLK_CP_OTA_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_REG_CLK_CP_OTA_DEFAULT \
-+ (AW87XXX_PID_60_REG_CLK_CP_OTA_DEFAULT_VALUE << AW87XXX_PID_60_REG_CLK_CP_OTA_START_BIT)
-+
-+/* OTA_MD2 bit 1 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_OTA_MD2_START_BIT (1)
-+#define AW87XXX_PID_60_OTA_MD2_BITS_LEN (1)
-+#define AW87XXX_PID_60_OTA_MD2_MASK \
-+ (~(((1<<AW87XXX_PID_60_OTA_MD2_BITS_LEN)-1) << AW87XXX_PID_60_OTA_MD2_START_BIT))
-+
-+#define AW87XXX_PID_60_OTA_MD2_DISABLE (0)
-+#define AW87XXX_PID_60_OTA_MD2_DISABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_MD2_DISABLE << AW87XXX_PID_60_OTA_MD2_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_MD2_ENABLE (1)
-+#define AW87XXX_PID_60_OTA_MD2_ENABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_MD2_ENABLE << AW87XXX_PID_60_OTA_MD2_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_MD2_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_OTA_MD2_DEFAULT \
-+ (AW87XXX_PID_60_OTA_MD2_DEFAULT_VALUE << AW87XXX_PID_60_OTA_MD2_START_BIT)
-+
-+/* OTA_RCV bit 2 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_OTA_RCV_START_BIT (2)
-+#define AW87XXX_PID_60_OTA_RCV_BITS_LEN (1)
-+#define AW87XXX_PID_60_OTA_RCV_MASK \
-+ (~(((1<<AW87XXX_PID_60_OTA_RCV_BITS_LEN)-1) << AW87XXX_PID_60_OTA_RCV_START_BIT))
-+
-+#define AW87XXX_PID_60_OTA_RCV_DISABLE (0)
-+#define AW87XXX_PID_60_OTA_RCV_DISABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_RCV_DISABLE << AW87XXX_PID_60_OTA_RCV_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_RCV_ENABLE (1)
-+#define AW87XXX_PID_60_OTA_RCV_ENABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_RCV_ENABLE << AW87XXX_PID_60_OTA_RCV_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_RCV_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_OTA_RCV_DEFAULT \
-+ (AW87XXX_PID_60_OTA_RCV_DEFAULT_VALUE << AW87XXX_PID_60_OTA_RCV_START_BIT)
-+
-+/* MSBM_VDD_SEL bit 3 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_START_BIT (3)
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_MSBM_VDD_SEL_BITS_LEN)-1) << AW87XXX_PID_60_MSBM_VDD_SEL_START_BIT))
-+
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_VDDBELOW4P5V (0)
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_VDDBELOW4P5V_VALUE \
-+ (AW87XXX_PID_60_MSBM_VDD_SEL_VDDBELOW4P5V << AW87XXX_PID_60_MSBM_VDD_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_VDDABOVE4P5V (1)
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_VDDABOVE4P5V_VALUE \
-+ (AW87XXX_PID_60_MSBM_VDD_SEL_VDDABOVE4P5V << AW87XXX_PID_60_MSBM_VDD_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_MSBM_VDD_SEL_DEFAULT \
-+ (AW87XXX_PID_60_MSBM_VDD_SEL_DEFAULT_VALUE << AW87XXX_PID_60_MSBM_VDD_SEL_START_BIT)
-+
-+/* DLY_EN bit 4 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_DLY_EN_START_BIT (4)
-+#define AW87XXX_PID_60_DLY_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_DLY_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_DLY_EN_BITS_LEN)-1) << AW87XXX_PID_60_DLY_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_DLY_EN_DISABLE (0)
-+#define AW87XXX_PID_60_DLY_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_DLY_EN_DISABLE << AW87XXX_PID_60_DLY_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_DLY_EN_ENABLE (1)
-+#define AW87XXX_PID_60_DLY_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_DLY_EN_ENABLE << AW87XXX_PID_60_DLY_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_DLY_EN_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_DLY_EN_DEFAULT \
-+ (AW87XXX_PID_60_DLY_EN_DEFAULT_VALUE << AW87XXX_PID_60_DLY_EN_START_BIT)
-+
-+/* DLY_CLK_EN bit 5 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_DLY_CLK_EN_START_BIT (5)
-+#define AW87XXX_PID_60_DLY_CLK_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_DLY_CLK_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_DLY_CLK_EN_BITS_LEN)-1) << AW87XXX_PID_60_DLY_CLK_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_DLY_CLK_EN_DISABLE (0)
-+#define AW87XXX_PID_60_DLY_CLK_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_DLY_CLK_EN_DISABLE << AW87XXX_PID_60_DLY_CLK_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_DLY_CLK_EN_ENABLE (1)
-+#define AW87XXX_PID_60_DLY_CLK_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_DLY_CLK_EN_ENABLE << AW87XXX_PID_60_DLY_CLK_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_DLY_CLK_EN_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_DLY_CLK_EN_DEFAULT \
-+ (AW87XXX_PID_60_DLY_CLK_EN_DEFAULT_VALUE << AW87XXX_PID_60_DLY_CLK_EN_START_BIT)
-+
-+/* ADPBST_FALL_TIME bit 7:6 (ADPBST 0x6D) */
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT (6)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_ADPBST_FALL_TIME_BITS_LEN)-1) << AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_5MS (0)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_5MS_VALUE \
-+ (AW87XXX_PID_60_ADPBST_FALL_TIME_5MS << AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_10MS (1)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_10MS_VALUE \
-+ (AW87XXX_PID_60_ADPBST_FALL_TIME_10MS << AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_20MS (2)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_20MS_VALUE \
-+ (AW87XXX_PID_60_ADPBST_FALL_TIME_20MS << AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_40MS (3)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_40MS_VALUE \
-+ (AW87XXX_PID_60_ADPBST_FALL_TIME_40MS << AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_ADPBST_FALL_TIME_DEFAULT \
-+ (AW87XXX_PID_60_ADPBST_FALL_TIME_DEFAULT_VALUE << AW87XXX_PID_60_ADPBST_FALL_TIME_START_BIT)
-+
-+/* default value of ADPBST (0x6D) */
-+/* #define AW87XXX_PID_60_ADPBST_DEFAULT (0x50) */
-+
-+/* OTA (0x6E) detail */
-+/* EN_SWF bit 0 (OTA 0x6E) */
-+#define AW87XXX_PID_60_EN_SWF_START_BIT (0)
-+#define AW87XXX_PID_60_EN_SWF_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_SWF_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_SWF_BITS_LEN)-1) << AW87XXX_PID_60_EN_SWF_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_SWF_DISABLE (0)
-+#define AW87XXX_PID_60_EN_SWF_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_SWF_DISABLE << AW87XXX_PID_60_EN_SWF_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_SWF_ENABLE (1)
-+#define AW87XXX_PID_60_EN_SWF_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_SWF_ENABLE << AW87XXX_PID_60_EN_SWF_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_SWF_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_SWF_DEFAULT \
-+ (AW87XXX_PID_60_EN_SWF_DEFAULT_VALUE << AW87XXX_PID_60_EN_SWF_START_BIT)
-+
-+/* BST_CK_MODE bit 1 (OTA 0x6E) */
-+#define AW87XXX_PID_60_BST_CK_MODE_START_BIT (1)
-+#define AW87XXX_PID_60_BST_CK_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_CK_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_CK_MODE_BITS_LEN)-1) << AW87XXX_PID_60_BST_CK_MODE_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_CK_MODE_1P6MHZ (0)
-+#define AW87XXX_PID_60_BST_CK_MODE_1P6MHZ_VALUE \
-+ (AW87XXX_PID_60_BST_CK_MODE_1P6MHZ << AW87XXX_PID_60_BST_CK_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_CK_MODE_2P0MHZ (1)
-+#define AW87XXX_PID_60_BST_CK_MODE_2P0MHZ_VALUE \
-+ (AW87XXX_PID_60_BST_CK_MODE_2P0MHZ << AW87XXX_PID_60_BST_CK_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_CK_MODE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_BST_CK_MODE_DEFAULT \
-+ (AW87XXX_PID_60_BST_CK_MODE_DEFAULT_VALUE << AW87XXX_PID_60_BST_CK_MODE_START_BIT)
-+
-+/* EN_LOOP_GBW_REDUCE bit 2 (OTA 0x6E) */
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_START_BIT (2)
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_BITS_LEN)-1) << AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_DISABLE (0)
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_DISABLE << AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_ENABLE (1)
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_ENABLE << AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_DEFAULT \
-+ (AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_DEFAULT_VALUE << AW87XXX_PID_60_EN_LOOP_GBW_REDUCE_START_BIT)
-+
-+/* EN_DEM_POWER bit 3 (OTA 0x6E) */
-+#define AW87XXX_PID_60_EN_DEM_POWER_START_BIT (3)
-+#define AW87XXX_PID_60_EN_DEM_POWER_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_DEM_POWER_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_DEM_POWER_BITS_LEN)-1) << AW87XXX_PID_60_EN_DEM_POWER_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_DEM_POWER_DISABLE (0)
-+#define AW87XXX_PID_60_EN_DEM_POWER_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_DEM_POWER_DISABLE << AW87XXX_PID_60_EN_DEM_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_DEM_POWER_ENABLE (1)
-+#define AW87XXX_PID_60_EN_DEM_POWER_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_DEM_POWER_ENABLE << AW87XXX_PID_60_EN_DEM_POWER_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_DEM_POWER_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_DEM_POWER_DEFAULT \
-+ (AW87XXX_PID_60_EN_DEM_POWER_DEFAULT_VALUE << AW87XXX_PID_60_EN_DEM_POWER_START_BIT)
-+
-+/* REG_CLK_CP_RIN bit 4 (OTA 0x6E) */
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_START_BIT (4)
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_CLK_CP_RIN_BITS_LEN)-1) << AW87XXX_PID_60_REG_CLK_CP_RIN_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_200KHZ (0)
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_200KHZ_VALUE \
-+ (AW87XXX_PID_60_REG_CLK_CP_RIN_200KHZ << AW87XXX_PID_60_REG_CLK_CP_RIN_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_400KHZ (1)
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_400KHZ_VALUE \
-+ (AW87XXX_PID_60_REG_CLK_CP_RIN_400KHZ << AW87XXX_PID_60_REG_CLK_CP_RIN_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_REG_CLK_CP_RIN_DEFAULT \
-+ (AW87XXX_PID_60_REG_CLK_CP_RIN_DEFAULT_VALUE << AW87XXX_PID_60_REG_CLK_CP_RIN_START_BIT)
-+
-+/* EN_DEM bit 5 (OTA 0x6E) */
-+#define AW87XXX_PID_60_EN_DEM_START_BIT (5)
-+#define AW87XXX_PID_60_EN_DEM_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_DEM_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_DEM_BITS_LEN)-1) << AW87XXX_PID_60_EN_DEM_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_DEM_DISABLE (0)
-+#define AW87XXX_PID_60_EN_DEM_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_DEM_DISABLE << AW87XXX_PID_60_EN_DEM_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_DEM_ENABLE (1)
-+#define AW87XXX_PID_60_EN_DEM_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_DEM_ENABLE << AW87XXX_PID_60_EN_DEM_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_DEM_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_DEM_DEFAULT \
-+ (AW87XXX_PID_60_EN_DEM_DEFAULT_VALUE << AW87XXX_PID_60_EN_DEM_START_BIT)
-+
-+/* OTA_NG bit 6 (OTA 0x6E) */
-+#define AW87XXX_PID_60_OTA_NG_START_BIT (6)
-+#define AW87XXX_PID_60_OTA_NG_BITS_LEN (1)
-+#define AW87XXX_PID_60_OTA_NG_MASK \
-+ (~(((1<<AW87XXX_PID_60_OTA_NG_BITS_LEN)-1) << AW87XXX_PID_60_OTA_NG_START_BIT))
-+
-+#define AW87XXX_PID_60_OTA_NG_DISABLE (0)
-+#define AW87XXX_PID_60_OTA_NG_DISABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_NG_DISABLE << AW87XXX_PID_60_OTA_NG_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_NG_ENABLE (1)
-+#define AW87XXX_PID_60_OTA_NG_ENABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_NG_ENABLE << AW87XXX_PID_60_OTA_NG_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_NG_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_OTA_NG_DEFAULT \
-+ (AW87XXX_PID_60_OTA_NG_DEFAULT_VALUE << AW87XXX_PID_60_OTA_NG_START_BIT)
-+
-+/* OTA_CP bit 7 (OTA 0x6E) */
-+#define AW87XXX_PID_60_OTA_CP_START_BIT (7)
-+#define AW87XXX_PID_60_OTA_CP_BITS_LEN (1)
-+#define AW87XXX_PID_60_OTA_CP_MASK \
-+ (~(((1<<AW87XXX_PID_60_OTA_CP_BITS_LEN)-1) << AW87XXX_PID_60_OTA_CP_START_BIT))
-+
-+#define AW87XXX_PID_60_OTA_CP_DISABLE (0)
-+#define AW87XXX_PID_60_OTA_CP_DISABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_CP_DISABLE << AW87XXX_PID_60_OTA_CP_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_CP_ENABLE (1)
-+#define AW87XXX_PID_60_OTA_CP_ENABLE_VALUE \
-+ (AW87XXX_PID_60_OTA_CP_ENABLE << AW87XXX_PID_60_OTA_CP_START_BIT)
-+
-+#define AW87XXX_PID_60_OTA_CP_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_OTA_CP_DEFAULT \
-+ (AW87XXX_PID_60_OTA_CP_DEFAULT_VALUE << AW87XXX_PID_60_OTA_CP_START_BIT)
-+
-+/* default value of OTA (0x6E) */
-+/* #define AW87XXX_PID_60_OTA_DEFAULT (0xC0) */
-+
-+/* RAMPGEN (0x6F) detail */
-+/* RAMP_1SPW_VL bit 7:6 (RAMPGEN 0x6F) */
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT (6)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_BITS_LEN (2)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_MASK \
-+ (~(((1<<AW87XXX_PID_60_RAMP_1SPW_VL_BITS_LEN)-1) << AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT))
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P16VDD (0)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P16VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VL_0P16VDD << AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P18VDD (1)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P18VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VL_0P18VDD << AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P20VDD (2)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P20VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VL_0P20VDD << AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P14VDD (3)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_0P14VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VL_0P14VDD << AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_RAMP_1SPW_VL_DEFAULT \
-+ (AW87XXX_PID_60_RAMP_1SPW_VL_DEFAULT_VALUE << AW87XXX_PID_60_RAMP_1SPW_VL_START_BIT)
-+
-+/* PA_RAMP_AGC1 bit 5:4 (RAMPGEN 0x6F) */
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT (4)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_BITS_LEN (2)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_RAMP_AGC1_BITS_LEN)-1) << AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P8VDD (0)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P8VDD_VALUE \
-+ (AW87XXX_PID_60_PA_RAMP_AGC1_0P8VDD << AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P825VDD (1)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P825VDD_VALUE \
-+ (AW87XXX_PID_60_PA_RAMP_AGC1_0P825VDD << AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P85VDD (2)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P85VDD_VALUE \
-+ (AW87XXX_PID_60_PA_RAMP_AGC1_0P85VDD << AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P875VDD (3)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_0P875VDD_VALUE \
-+ (AW87XXX_PID_60_PA_RAMP_AGC1_0P875VDD << AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PA_RAMP_AGC1_DEFAULT \
-+ (AW87XXX_PID_60_PA_RAMP_AGC1_DEFAULT_VALUE << AW87XXX_PID_60_PA_RAMP_AGC1_START_BIT)
-+
-+/* RAMP_1SPW_VC bit 3:2 (RAMPGEN 0x6F) */
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT (2)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_BITS_LEN (2)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_MASK \
-+ (~(((1<<AW87XXX_PID_60_RAMP_1SPW_VC_BITS_LEN)-1) << AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT))
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P37VDD (0)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P37VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VC_0P37VDD << AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P39VDD (1)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P39VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VC_0P39VDD << AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P33VDD (2)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P33VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VC_0P33VDD << AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P35VDD (3)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_0P35VDD_VALUE \
-+ (AW87XXX_PID_60_RAMP_1SPW_VC_0P35VDD << AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT)
-+
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_60_RAMP_1SPW_VC_DEFAULT \
-+ (AW87XXX_PID_60_RAMP_1SPW_VC_DEFAULT_VALUE << AW87XXX_PID_60_RAMP_1SPW_VC_START_BIT)
-+
-+/* SS_CONTROL bit 1:0 (RAMPGEN 0x6F) */
-+#define AW87XXX_PID_60_SS_CONTROL_START_BIT (0)
-+#define AW87XXX_PID_60_SS_CONTROL_BITS_LEN (2)
-+#define AW87XXX_PID_60_SS_CONTROL_MASK \
-+ (~(((1<<AW87XXX_PID_60_SS_CONTROL_BITS_LEN)-1) << AW87XXX_PID_60_SS_CONTROL_START_BIT))
-+
-+#define AW87XXX_PID_60_SS_CONTROL_SS_MODE (0)
-+#define AW87XXX_PID_60_SS_CONTROL_SS_MODE_VALUE \
-+ (AW87XXX_PID_60_SS_CONTROL_SS_MODE << AW87XXX_PID_60_SS_CONTROL_START_BIT)
-+
-+#define AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE111 (1)
-+#define AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE111_VALUE \
-+ (AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE111 << AW87XXX_PID_60_SS_CONTROL_START_BIT)
-+
-+#define AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE000 (2)
-+#define AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE000_VALUE \
-+ (AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE000 << AW87XXX_PID_60_SS_CONTROL_START_BIT)
-+
-+#define AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE011 (3)
-+#define AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE011_VALUE \
-+ (AW87XXX_PID_60_SS_CONTROL_SWBELOW20ABOVE011 << AW87XXX_PID_60_SS_CONTROL_START_BIT)
-+
-+#define AW87XXX_PID_60_SS_CONTROL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_SS_CONTROL_DEFAULT \
-+ (AW87XXX_PID_60_SS_CONTROL_DEFAULT_VALUE << AW87XXX_PID_60_SS_CONTROL_START_BIT)
-+
-+/* default value of RAMPGEN (0x6F) */
-+/* #define AW87XXX_PID_60_RAMPGEN_DEFAULT (0x0C) */
-+
-+/* CLASSD_SYSCTRL (0x70) detail */
-+/* SEL_VCOM1 bit 0 (CLASSD_SYSCTRL 0x70) */
-+#define AW87XXX_PID_60_SEL_VCOM1_START_BIT (0)
-+#define AW87XXX_PID_60_SEL_VCOM1_BITS_LEN (1)
-+#define AW87XXX_PID_60_SEL_VCOM1_MASK \
-+ (~(((1<<AW87XXX_PID_60_SEL_VCOM1_BITS_LEN)-1) << AW87XXX_PID_60_SEL_VCOM1_START_BIT))
-+
-+#define AW87XXX_PID_60_SEL_VCOM1_VCOM11P4V (0)
-+#define AW87XXX_PID_60_SEL_VCOM1_VCOM11P4V_VALUE \
-+ (AW87XXX_PID_60_SEL_VCOM1_VCOM11P4V << AW87XXX_PID_60_SEL_VCOM1_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_SEL_VCOM1_VCOM11P4V (1)
-+#define AW87XXX_PID_60_SEL_VCOM1_VCOM11P4V_VALUE \
-+ (AW87XXX_PID_60_SEL_VCOM1_VCOM11P4V << AW87XXX_PID_60_SEL_VCOM1_START_BIT)
-+*/
-+/*
-+Fix me here:
-+reg_addr:0x70, reg_name:CLASSD_SYSCTRL, field_name:SEL_VCOM1, content:When ENOTA=0:
-+maybe need to fix manually
-+*/
-+#define AW87XXX_PID_60_SEL_VCOM1_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_SEL_VCOM1_DEFAULT \
-+ (AW87XXX_PID_60_SEL_VCOM1_DEFAULT_VALUE << AW87XXX_PID_60_SEL_VCOM1_START_BIT)
-+
-+/* PA_OPD bit 1 (CLASSD_SYSCTRL 0x70) */
-+#define AW87XXX_PID_60_PA_OPD_START_BIT (1)
-+#define AW87XXX_PID_60_PA_OPD_BITS_LEN (1)
-+#define AW87XXX_PID_60_PA_OPD_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_OPD_BITS_LEN)-1) << AW87XXX_PID_60_PA_OPD_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_OPD_FLOATING (0)
-+#define AW87XXX_PID_60_PA_OPD_FLOATING_VALUE \
-+ (AW87XXX_PID_60_PA_OPD_FLOATING << AW87XXX_PID_60_PA_OPD_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OPD_TIED_TO_GND (1)
-+#define AW87XXX_PID_60_PA_OPD_TIED_TO_GND_VALUE \
-+ (AW87XXX_PID_60_PA_OPD_TIED_TO_GND << AW87XXX_PID_60_PA_OPD_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OPD_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_PA_OPD_DEFAULT \
-+ (AW87XXX_PID_60_PA_OPD_DEFAULT_VALUE << AW87XXX_PID_60_PA_OPD_START_BIT)
-+
-+/* CLK_OCP_SEL bit 4 (CLASSD_SYSCTRL 0x70) */
-+#define AW87XXX_PID_60_CLK_OCP_SEL_START_BIT (4)
-+#define AW87XXX_PID_60_CLK_OCP_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_60_CLK_OCP_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_CLK_OCP_SEL_BITS_LEN)-1) << AW87XXX_PID_60_CLK_OCP_SEL_START_BIT))
-+
-+#define AW87XXX_PID_60_CLK_OCP_SEL_160MS (0)
-+#define AW87XXX_PID_60_CLK_OCP_SEL_160MS_VALUE \
-+ (AW87XXX_PID_60_CLK_OCP_SEL_160MS << AW87XXX_PID_60_CLK_OCP_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_CLK_OCP_SEL_SHUTDOWN (1)
-+#define AW87XXX_PID_60_CLK_OCP_SEL_SHUTDOWN_VALUE \
-+ (AW87XXX_PID_60_CLK_OCP_SEL_SHUTDOWN << AW87XXX_PID_60_CLK_OCP_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_CLK_OCP_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_CLK_OCP_SEL_DEFAULT \
-+ (AW87XXX_PID_60_CLK_OCP_SEL_DEFAULT_VALUE << AW87XXX_PID_60_CLK_OCP_SEL_START_BIT)
-+
-+/* PD_OT bit 5 (CLASSD_SYSCTRL 0x70) */
-+#define AW87XXX_PID_60_PD_OT_START_BIT (5)
-+#define AW87XXX_PID_60_PD_OT_BITS_LEN (1)
-+#define AW87XXX_PID_60_PD_OT_MASK \
-+ (~(((1<<AW87XXX_PID_60_PD_OT_BITS_LEN)-1) << AW87XXX_PID_60_PD_OT_START_BIT))
-+
-+#define AW87XXX_PID_60_PD_OT_ENABLE (0)
-+#define AW87XXX_PID_60_PD_OT_ENABLE_VALUE \
-+ (AW87XXX_PID_60_PD_OT_ENABLE << AW87XXX_PID_60_PD_OT_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_OT_SHUTDOWN (1)
-+#define AW87XXX_PID_60_PD_OT_SHUTDOWN_VALUE \
-+ (AW87XXX_PID_60_PD_OT_SHUTDOWN << AW87XXX_PID_60_PD_OT_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_OT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PD_OT_DEFAULT \
-+ (AW87XXX_PID_60_PD_OT_DEFAULT_VALUE << AW87XXX_PID_60_PD_OT_START_BIT)
-+
-+/* PA_FLT_SR bit 6 (CLASSD_SYSCTRL 0x70) */
-+#define AW87XXX_PID_60_PA_FLT_SR_START_BIT (6)
-+#define AW87XXX_PID_60_PA_FLT_SR_BITS_LEN (1)
-+#define AW87XXX_PID_60_PA_FLT_SR_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_FLT_SR_BITS_LEN)-1) << AW87XXX_PID_60_PA_FLT_SR_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_FLT_SR_ADD_RC (0)
-+#define AW87XXX_PID_60_PA_FLT_SR_ADD_RC_VALUE \
-+ (AW87XXX_PID_60_PA_FLT_SR_ADD_RC << AW87XXX_PID_60_PA_FLT_SR_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_FLT_SR_NO_RC (1)
-+#define AW87XXX_PID_60_PA_FLT_SR_NO_RC_VALUE \
-+ (AW87XXX_PID_60_PA_FLT_SR_NO_RC << AW87XXX_PID_60_PA_FLT_SR_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_FLT_SR_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PA_FLT_SR_DEFAULT \
-+ (AW87XXX_PID_60_PA_FLT_SR_DEFAULT_VALUE << AW87XXX_PID_60_PA_FLT_SR_START_BIT)
-+
-+/* PA_PORT bit 3:2 (CLASSD_SYSCTRL 0x70) */
-+#define AW87XXX_PID_60_PA_PORT_START_BIT (2)
-+#define AW87XXX_PID_60_PA_PORT_BITS_LEN (2)
-+#define AW87XXX_PID_60_PA_PORT_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_PORT_BITS_LEN)-1) << AW87XXX_PID_60_PA_PORT_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_PORT_80MS (0)
-+#define AW87XXX_PID_60_PA_PORT_80MS_VALUE \
-+ (AW87XXX_PID_60_PA_PORT_80MS << AW87XXX_PID_60_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_PORT_40MS (1)
-+#define AW87XXX_PID_60_PA_PORT_40MS_VALUE \
-+ (AW87XXX_PID_60_PA_PORT_40MS << AW87XXX_PID_60_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_PORT_20MS (2)
-+#define AW87XXX_PID_60_PA_PORT_20MS_VALUE \
-+ (AW87XXX_PID_60_PA_PORT_20MS << AW87XXX_PID_60_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_PORT_10MS (3)
-+#define AW87XXX_PID_60_PA_PORT_10MS_VALUE \
-+ (AW87XXX_PID_60_PA_PORT_10MS << AW87XXX_PID_60_PA_PORT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_PORT_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_PA_PORT_DEFAULT \
-+ (AW87XXX_PID_60_PA_PORT_DEFAULT_VALUE << AW87XXX_PID_60_PA_PORT_START_BIT)
-+
-+/* default value of CLASSD_SYSCTRL (0x70) */
-+/* #define AW87XXX_PID_60_CLASSD_SYSCTRL_DEFAULT (0x07) */
-+
-+/* GTDR (0x71) detail */
-+/* REG_DUTY_T bit 0 (GTDR 0x71) */
-+#define AW87XXX_PID_60_REG_DUTY_T_START_BIT (0)
-+#define AW87XXX_PID_60_REG_DUTY_T_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_DUTY_T_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_DUTY_T_BITS_LEN)-1) << AW87XXX_PID_60_REG_DUTY_T_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_DUTY_T_DISABLE (0)
-+#define AW87XXX_PID_60_REG_DUTY_T_DISABLE_VALUE \
-+ (AW87XXX_PID_60_REG_DUTY_T_DISABLE << AW87XXX_PID_60_REG_DUTY_T_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_DUTY_T_ENALBE (1)
-+#define AW87XXX_PID_60_REG_DUTY_T_ENALBE_VALUE \
-+ (AW87XXX_PID_60_REG_DUTY_T_ENALBE << AW87XXX_PID_60_REG_DUTY_T_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_DUTY_T_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_REG_DUTY_T_DEFAULT \
-+ (AW87XXX_PID_60_REG_DUTY_T_DEFAULT_VALUE << AW87XXX_PID_60_REG_DUTY_T_START_BIT)
-+
-+/* LN_DELAY bit 1 (GTDR 0x71) */
-+#define AW87XXX_PID_60_LN_DELAY_START_BIT (1)
-+#define AW87XXX_PID_60_LN_DELAY_BITS_LEN (1)
-+#define AW87XXX_PID_60_LN_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_LN_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_LN_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_LN_DELAY_DISABLE (0)
-+#define AW87XXX_PID_60_LN_DELAY_DISABLE_VALUE \
-+ (AW87XXX_PID_60_LN_DELAY_DISABLE << AW87XXX_PID_60_LN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_LN_DELAY_ENABLE (1)
-+#define AW87XXX_PID_60_LN_DELAY_ENABLE_VALUE \
-+ (AW87XXX_PID_60_LN_DELAY_ENABLE << AW87XXX_PID_60_LN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_LN_DELAY_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_LN_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_LN_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_LN_DELAY_START_BIT)
-+
-+/* HN_DELAY bit 2 (GTDR 0x71) */
-+#define AW87XXX_PID_60_HN_DELAY_START_BIT (2)
-+#define AW87XXX_PID_60_HN_DELAY_BITS_LEN (1)
-+#define AW87XXX_PID_60_HN_DELAY_MASK \
-+ (~(((1<<AW87XXX_PID_60_HN_DELAY_BITS_LEN)-1) << AW87XXX_PID_60_HN_DELAY_START_BIT))
-+
-+#define AW87XXX_PID_60_HN_DELAY_DISABLE (0)
-+#define AW87XXX_PID_60_HN_DELAY_DISABLE_VALUE \
-+ (AW87XXX_PID_60_HN_DELAY_DISABLE << AW87XXX_PID_60_HN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_HN_DELAY_ENABLE (1)
-+#define AW87XXX_PID_60_HN_DELAY_ENABLE_VALUE \
-+ (AW87XXX_PID_60_HN_DELAY_ENABLE << AW87XXX_PID_60_HN_DELAY_START_BIT)
-+
-+#define AW87XXX_PID_60_HN_DELAY_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_HN_DELAY_DEFAULT \
-+ (AW87XXX_PID_60_HN_DELAY_DEFAULT_VALUE << AW87XXX_PID_60_HN_DELAY_START_BIT)
-+
-+/* REG_T_EDGE bit 3 (GTDR 0x71) */
-+#define AW87XXX_PID_60_REG_T_EDGE_START_BIT (3)
-+#define AW87XXX_PID_60_REG_T_EDGE_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_T_EDGE_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_T_EDGE_BITS_LEN)-1) << AW87XXX_PID_60_REG_T_EDGE_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_T_EDGE_5NS (0)
-+#define AW87XXX_PID_60_REG_T_EDGE_5NS_VALUE \
-+ (AW87XXX_PID_60_REG_T_EDGE_5NS << AW87XXX_PID_60_REG_T_EDGE_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_T_EDGE_15NS (1)
-+#define AW87XXX_PID_60_REG_T_EDGE_15NS_VALUE \
-+ (AW87XXX_PID_60_REG_T_EDGE_15NS << AW87XXX_PID_60_REG_T_EDGE_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_T_EDGE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_REG_T_EDGE_DEFAULT \
-+ (AW87XXX_PID_60_REG_T_EDGE_DEFAULT_VALUE << AW87XXX_PID_60_REG_T_EDGE_START_BIT)
-+
-+/* REG_L_PULL bit 4 (GTDR 0x71) */
-+#define AW87XXX_PID_60_REG_L_PULL_START_BIT (4)
-+#define AW87XXX_PID_60_REG_L_PULL_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_L_PULL_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_L_PULL_BITS_LEN)-1) << AW87XXX_PID_60_REG_L_PULL_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_L_PULL_7NS (0)
-+#define AW87XXX_PID_60_REG_L_PULL_7NS_VALUE \
-+ (AW87XXX_PID_60_REG_L_PULL_7NS << AW87XXX_PID_60_REG_L_PULL_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_L_PULL_14NS (1)
-+#define AW87XXX_PID_60_REG_L_PULL_14NS_VALUE \
-+ (AW87XXX_PID_60_REG_L_PULL_14NS << AW87XXX_PID_60_REG_L_PULL_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_L_PULL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_REG_L_PULL_DEFAULT \
-+ (AW87XXX_PID_60_REG_L_PULL_DEFAULT_VALUE << AW87XXX_PID_60_REG_L_PULL_START_BIT)
-+
-+/* REG_L_PUD bit 5 (GTDR 0x71) */
-+#define AW87XXX_PID_60_REG_L_PUD_START_BIT (5)
-+#define AW87XXX_PID_60_REG_L_PUD_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_L_PUD_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_L_PUD_BITS_LEN)-1) << AW87XXX_PID_60_REG_L_PUD_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_L_PUD_0NS (0)
-+#define AW87XXX_PID_60_REG_L_PUD_0NS_VALUE \
-+ (AW87XXX_PID_60_REG_L_PUD_0NS << AW87XXX_PID_60_REG_L_PUD_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_L_PUD_3NS (1)
-+#define AW87XXX_PID_60_REG_L_PUD_3NS_VALUE \
-+ (AW87XXX_PID_60_REG_L_PUD_3NS << AW87XXX_PID_60_REG_L_PUD_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_L_PUD_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_REG_L_PUD_DEFAULT \
-+ (AW87XXX_PID_60_REG_L_PUD_DEFAULT_VALUE << AW87XXX_PID_60_REG_L_PUD_START_BIT)
-+
-+/* REG_HNG_PULL bit 6 (GTDR 0x71) */
-+#define AW87XXX_PID_60_REG_HNG_PULL_START_BIT (6)
-+#define AW87XXX_PID_60_REG_HNG_PULL_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_HNG_PULL_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_HNG_PULL_BITS_LEN)-1) << AW87XXX_PID_60_REG_HNG_PULL_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_HNG_PULL_DISABLE (0)
-+#define AW87XXX_PID_60_REG_HNG_PULL_DISABLE_VALUE \
-+ (AW87XXX_PID_60_REG_HNG_PULL_DISABLE << AW87XXX_PID_60_REG_HNG_PULL_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_HNG_PULL_ENABLE (1)
-+#define AW87XXX_PID_60_REG_HNG_PULL_ENABLE_VALUE \
-+ (AW87XXX_PID_60_REG_HNG_PULL_ENABLE << AW87XXX_PID_60_REG_HNG_PULL_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_HNG_PULL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_REG_HNG_PULL_DEFAULT \
-+ (AW87XXX_PID_60_REG_HNG_PULL_DEFAULT_VALUE << AW87XXX_PID_60_REG_HNG_PULL_START_BIT)
-+
-+/* REG_DUTY_VTH bit 7 (GTDR 0x71) */
-+#define AW87XXX_PID_60_REG_DUTY_VTH_START_BIT (7)
-+#define AW87XXX_PID_60_REG_DUTY_VTH_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_DUTY_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_DUTY_VTH_BITS_LEN)-1) << AW87XXX_PID_60_REG_DUTY_VTH_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_DUTY_VTH_POVTH0 (0)
-+#define AW87XXX_PID_60_REG_DUTY_VTH_POVTH0_VALUE \
-+ (AW87XXX_PID_60_REG_DUTY_VTH_POVTH0 << AW87XXX_PID_60_REG_DUTY_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_DUTY_VTH_POVTH4 (1)
-+#define AW87XXX_PID_60_REG_DUTY_VTH_POVTH4_VALUE \
-+ (AW87XXX_PID_60_REG_DUTY_VTH_POVTH4 << AW87XXX_PID_60_REG_DUTY_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_DUTY_VTH_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_REG_DUTY_VTH_DEFAULT \
-+ (AW87XXX_PID_60_REG_DUTY_VTH_DEFAULT_VALUE << AW87XXX_PID_60_REG_DUTY_VTH_START_BIT)
-+
-+/* default value of GTDR (0x71) */
-+/* #define AW87XXX_PID_60_GTDR_DEFAULT (0x27) */
-+
-+/* OC (0x72) detail */
-+/* REG_SHORT_GUARD bit 7 (OC 0x72) */
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_START_BIT (7)
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_SHORT_GUARD_BITS_LEN)-1) << AW87XXX_PID_60_REG_SHORT_GUARD_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_DISABLE (0)
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_DISABLE_VALUE \
-+ (AW87XXX_PID_60_REG_SHORT_GUARD_DISABLE << AW87XXX_PID_60_REG_SHORT_GUARD_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_ENALBE (1)
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_ENALBE_VALUE \
-+ (AW87XXX_PID_60_REG_SHORT_GUARD_ENALBE << AW87XXX_PID_60_REG_SHORT_GUARD_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_REG_SHORT_GUARD_DEFAULT \
-+ (AW87XXX_PID_60_REG_SHORT_GUARD_DEFAULT_VALUE << AW87XXX_PID_60_REG_SHORT_GUARD_START_BIT)
-+
-+/* PA_GTDR_DDT bit 6:5 (OC 0x72) */
-+#define AW87XXX_PID_60_PA_GTDR_DDT_START_BIT (5)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_BITS_LEN (2)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_GTDR_DDT_BITS_LEN)-1) << AW87XXX_PID_60_PA_GTDR_DDT_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_GTDR_DDT_12NS (0)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_12NS_VALUE \
-+ (AW87XXX_PID_60_PA_GTDR_DDT_12NS << AW87XXX_PID_60_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GTDR_DDT_13NS (1)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_13NS_VALUE \
-+ (AW87XXX_PID_60_PA_GTDR_DDT_13NS << AW87XXX_PID_60_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GTDR_DDT_14NS (2)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_14NS_VALUE \
-+ (AW87XXX_PID_60_PA_GTDR_DDT_14NS << AW87XXX_PID_60_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GTDR_DDT_15NS (3)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_15NS_VALUE \
-+ (AW87XXX_PID_60_PA_GTDR_DDT_15NS << AW87XXX_PID_60_PA_GTDR_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_GTDR_DDT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PA_GTDR_DDT_DEFAULT \
-+ (AW87XXX_PID_60_PA_GTDR_DDT_DEFAULT_VALUE << AW87XXX_PID_60_PA_GTDR_DDT_START_BIT)
-+
-+/* PA_OC_ITH bit 4:2 (OC 0x72) */
-+#define AW87XXX_PID_60_PA_OC_ITH_START_BIT (2)
-+#define AW87XXX_PID_60_PA_OC_ITH_BITS_LEN (3)
-+#define AW87XXX_PID_60_PA_OC_ITH_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_OC_ITH_BITS_LEN)-1) << AW87XXX_PID_60_PA_OC_ITH_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_3P4A (0)
-+#define AW87XXX_PID_60_PA_OC_ITH_3P4A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_3P4A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_3P8A (1)
-+#define AW87XXX_PID_60_PA_OC_ITH_3P8A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_3P8A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_4P2A (2)
-+#define AW87XXX_PID_60_PA_OC_ITH_4P2A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_4P2A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_4P6A (3)
-+#define AW87XXX_PID_60_PA_OC_ITH_4P6A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_4P6A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_5P0A (4)
-+#define AW87XXX_PID_60_PA_OC_ITH_5P0A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_5P0A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_5P4A (5)
-+#define AW87XXX_PID_60_PA_OC_ITH_5P4A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_5P4A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_5P7A (6)
-+#define AW87XXX_PID_60_PA_OC_ITH_5P7A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_5P7A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_6P0A (7)
-+#define AW87XXX_PID_60_PA_OC_ITH_6P0A_VALUE \
-+ (AW87XXX_PID_60_PA_OC_ITH_6P0A << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_ITH_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_60_PA_OC_ITH_DEFAULT \
-+ (AW87XXX_PID_60_PA_OC_ITH_DEFAULT_VALUE << AW87XXX_PID_60_PA_OC_ITH_START_BIT)
-+
-+/* PA_OC_DT bit 1:0 (OC 0x72) */
-+#define AW87XXX_PID_60_PA_OC_DT_START_BIT (0)
-+#define AW87XXX_PID_60_PA_OC_DT_BITS_LEN (2)
-+#define AW87XXX_PID_60_PA_OC_DT_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_OC_DT_BITS_LEN)-1) << AW87XXX_PID_60_PA_OC_DT_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_OC_DT_20NS (0)
-+#define AW87XXX_PID_60_PA_OC_DT_20NS_VALUE \
-+ (AW87XXX_PID_60_PA_OC_DT_20NS << AW87XXX_PID_60_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_DT_40NS (1)
-+#define AW87XXX_PID_60_PA_OC_DT_40NS_VALUE \
-+ (AW87XXX_PID_60_PA_OC_DT_40NS << AW87XXX_PID_60_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_DT_60NS (2)
-+#define AW87XXX_PID_60_PA_OC_DT_60NS_VALUE \
-+ (AW87XXX_PID_60_PA_OC_DT_60NS << AW87XXX_PID_60_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_DT_80NS (3)
-+#define AW87XXX_PID_60_PA_OC_DT_80NS_VALUE \
-+ (AW87XXX_PID_60_PA_OC_DT_80NS << AW87XXX_PID_60_PA_OC_DT_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OC_DT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PA_OC_DT_DEFAULT \
-+ (AW87XXX_PID_60_PA_OC_DT_DEFAULT_VALUE << AW87XXX_PID_60_PA_OC_DT_START_BIT)
-+
-+/* default value of OC (0x72) */
-+/* #define AW87XXX_PID_60_OC_DEFAULT (0x8C) */
-+
-+/* AGC_CON (0x73) detail */
-+/* PA_OCSWD bit 6 (AGC_CON 0x73) */
-+#define AW87XXX_PID_60_PA_OCSWD_START_BIT (6)
-+#define AW87XXX_PID_60_PA_OCSWD_BITS_LEN (1)
-+#define AW87XXX_PID_60_PA_OCSWD_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_OCSWD_BITS_LEN)-1) << AW87XXX_PID_60_PA_OCSWD_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_OCSWD_FAST (0)
-+#define AW87XXX_PID_60_PA_OCSWD_FAST_VALUE \
-+ (AW87XXX_PID_60_PA_OCSWD_FAST << AW87XXX_PID_60_PA_OCSWD_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OCSWD_SLOW (1)
-+#define AW87XXX_PID_60_PA_OCSWD_SLOW_VALUE \
-+ (AW87XXX_PID_60_PA_OCSWD_SLOW << AW87XXX_PID_60_PA_OCSWD_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_OCSWD_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_PA_OCSWD_DEFAULT \
-+ (AW87XXX_PID_60_PA_OCSWD_DEFAULT_VALUE << AW87XXX_PID_60_PA_OCSWD_START_BIT)
-+
-+/* PD_CROSSZERO bit 5:4 (AGC_CON 0x73) */
-+#define AW87XXX_PID_60_PD_CROSSZERO_START_BIT (4)
-+#define AW87XXX_PID_60_PD_CROSSZERO_BITS_LEN (2)
-+#define AW87XXX_PID_60_PD_CROSSZERO_MASK \
-+ (~(((1<<AW87XXX_PID_60_PD_CROSSZERO_BITS_LEN)-1) << AW87XXX_PID_60_PD_CROSSZERO_START_BIT))
-+
-+#define AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC2_3_CROSSZERO (0)
-+#define AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC2_3_CROSSZERO_VALUE \
-+ (AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC2_3_CROSSZERO << AW87XXX_PID_60_PD_CROSSZERO_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC23_CROSSZERO (1)
-+#define AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC23_CROSSZERO_VALUE \
-+ (AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC23_CROSSZERO << AW87XXX_PID_60_PD_CROSSZERO_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC23_CROSSZERO (2)
-+#define AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC23_CROSSZERO_VALUE \
-+ (AW87XXX_PID_60_PD_CROSSZERO_ENABLE_AGC1_WHEN_PVDD_IS_RISINGAGC23_CROSSZERO << AW87XXX_PID_60_PD_CROSSZERO_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_PD_CROSSZERO_AGC123_CROSSZERO (3)
-+#define AW87XXX_PID_60_PD_CROSSZERO_AGC123_CROSSZERO_VALUE \
-+ (AW87XXX_PID_60_PD_CROSSZERO_AGC123_CROSSZERO << AW87XXX_PID_60_PD_CROSSZERO_START_BIT)
-+/*
-+Fix me here:
-+reg_addr:0x73, reg_name:AGC_CON, field_name:PD_CROSSZERO, content:AGC cross_zero adaptively When EN_AGC1_ADP=1
-+maybe need to fix manually
-+*/
-+#define AW87XXX_PID_60_PD_CROSSZERO_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PD_CROSSZERO_DEFAULT \
-+ (AW87XXX_PID_60_PD_CROSSZERO_DEFAULT_VALUE << AW87XXX_PID_60_PD_CROSSZERO_START_BIT)
-+
-+/* AGC1_VTH_SEL bit 3:2 (AGC_CON 0x73) */
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT (2)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_BITS_LEN (2)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC1_VTH_SEL_BITS_LEN)-1) << AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_RAMPGEN (0)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_RAMPGEN_VALUE \
-+ (AW87XXX_PID_60_AGC1_VTH_SEL_RAMPGEN << AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_THGEN (1)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_THGEN_VALUE \
-+ (AW87XXX_PID_60_AGC1_VTH_SEL_THGEN << AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_BOTH_MIN (2)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_BOTH_MIN_VALUE \
-+ (AW87XXX_PID_60_AGC1_VTH_SEL_BOTH_MIN << AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_BOTH_MIN (3)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_BOTH_MIN_VALUE \
-+ (AW87XXX_PID_60_AGC1_VTH_SEL_BOTH_MIN << AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_AGC1_VTH_SEL_DEFAULT \
-+ (AW87XXX_PID_60_AGC1_VTH_SEL_DEFAULT_VALUE << AW87XXX_PID_60_AGC1_VTH_SEL_START_BIT)
-+
-+/* AGC2_FIRST_ATT_TIME bit 1:0 (AGC_CON 0x73) */
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT (0)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_BITS_LEN (2)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_MASK \
-+ (~(((1<<AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_BITS_LEN)-1) << AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT))
-+
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_0P08MS (0)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_0P08MS_VALUE \
-+ (AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_0P08MS << AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_0P32MS (1)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_0P32MS_VALUE \
-+ (AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_0P32MS << AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_1P28MS (2)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_1P28MS_VALUE \
-+ (AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_1P28MS << AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_5P12MS (3)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_5P12MS_VALUE \
-+ (AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_5P12MS << AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_DEFAULT \
-+ (AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_DEFAULT_VALUE << AW87XXX_PID_60_AGC2_FIRST_ATT_TIME_START_BIT)
-+
-+/* default value of AGC_CON (0x73) */
-+/* #define AW87XXX_PID_60_AGC_CON_DEFAULT (0x48) */
-+
-+/* NG (0x74) detail */
-+/* NG_MODE bit 2 (NG 0x74) */
-+#define AW87XXX_PID_60_NG_MODE_START_BIT (2)
-+#define AW87XXX_PID_60_NG_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_60_NG_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_MODE_BITS_LEN)-1) << AW87XXX_PID_60_NG_MODE_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_MODE_MODE1 (0)
-+#define AW87XXX_PID_60_NG_MODE_MODE1_VALUE \
-+ (AW87XXX_PID_60_NG_MODE_MODE1 << AW87XXX_PID_60_NG_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_MODE_MODE2 (1)
-+#define AW87XXX_PID_60_NG_MODE_MODE2_VALUE \
-+ (AW87XXX_PID_60_NG_MODE_MODE2 << AW87XXX_PID_60_NG_MODE_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_MODE_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_NG_MODE_DEFAULT \
-+ (AW87XXX_PID_60_NG_MODE_DEFAULT_VALUE << AW87XXX_PID_60_NG_MODE_START_BIT)
-+
-+/* EN_NG bit 3 (NG 0x74) */
-+#define AW87XXX_PID_60_EN_NG_START_BIT (3)
-+#define AW87XXX_PID_60_EN_NG_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_NG_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_NG_BITS_LEN)-1) << AW87XXX_PID_60_EN_NG_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_NG_DISABLE (0)
-+#define AW87XXX_PID_60_EN_NG_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_NG_DISABLE << AW87XXX_PID_60_EN_NG_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_NG_ENABLE (1)
-+#define AW87XXX_PID_60_EN_NG_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_NG_ENABLE << AW87XXX_PID_60_EN_NG_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_NG_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_NG_DEFAULT \
-+ (AW87XXX_PID_60_EN_NG_DEFAULT_VALUE << AW87XXX_PID_60_EN_NG_START_BIT)
-+
-+/* EN_AGC1_ADP bit 7 (NG 0x74) */
-+#define AW87XXX_PID_60_EN_AGC1_ADP_START_BIT (7)
-+#define AW87XXX_PID_60_EN_AGC1_ADP_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_AGC1_ADP_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_AGC1_ADP_BITS_LEN)-1) << AW87XXX_PID_60_EN_AGC1_ADP_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_AGC1_ADP_AGC_CROSSZERO_AS_BEFORE (0)
-+#define AW87XXX_PID_60_EN_AGC1_ADP_AGC_CROSSZERO_AS_BEFORE_VALUE \
-+ (AW87XXX_PID_60_EN_AGC1_ADP_AGC_CROSSZERO_AS_BEFORE << AW87XXX_PID_60_EN_AGC1_ADP_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_AGC1_ADP_AGC_CROSSZERO_ADAPTIVELY (1)
-+#define AW87XXX_PID_60_EN_AGC1_ADP_AGC_CROSSZERO_ADAPTIVELY_VALUE \
-+ (AW87XXX_PID_60_EN_AGC1_ADP_AGC_CROSSZERO_ADAPTIVELY << AW87XXX_PID_60_EN_AGC1_ADP_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_AGC1_ADP_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_AGC1_ADP_DEFAULT \
-+ (AW87XXX_PID_60_EN_AGC1_ADP_DEFAULT_VALUE << AW87XXX_PID_60_EN_AGC1_ADP_START_BIT)
-+
-+/* PAVG_ADJ bit 6:4 (NG 0x74) */
-+#define AW87XXX_PID_60_PAVG_ADJ_START_BIT (4)
-+#define AW87XXX_PID_60_PAVG_ADJ_BITS_LEN (3)
-+#define AW87XXX_PID_60_PAVG_ADJ_MASK \
-+ (~(((1<<AW87XXX_PID_60_PAVG_ADJ_BITS_LEN)-1) << AW87XXX_PID_60_PAVG_ADJ_START_BIT))
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_0P94 (0)
-+#define AW87XXX_PID_60_PAVG_ADJ_0P94_VALUE \
-+ (AW87XXX_PID_60_PAVG_ADJ_0P94 << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_0P97 (1)
-+#define AW87XXX_PID_60_PAVG_ADJ_0P97_VALUE \
-+ (AW87XXX_PID_60_PAVG_ADJ_0P97 << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_1P0 (2)
-+#define AW87XXX_PID_60_PAVG_ADJ_1P0_VALUE \
-+ (AW87XXX_PID_60_PAVG_ADJ_1P0 << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_1P03 (3)
-+#define AW87XXX_PID_60_PAVG_ADJ_1P03_VALUE \
-+ (AW87XXX_PID_60_PAVG_ADJ_1P03 << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_1P06 (4)
-+#define AW87XXX_PID_60_PAVG_ADJ_1P06_VALUE \
-+ (AW87XXX_PID_60_PAVG_ADJ_1P06 << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_1P09 (5)
-+#define AW87XXX_PID_60_PAVG_ADJ_1P09_VALUE \
-+ (AW87XXX_PID_60_PAVG_ADJ_1P09 << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+#define AW87XXX_PID_60_PAVG_ADJ_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_PAVG_ADJ_DEFAULT \
-+ (AW87XXX_PID_60_PAVG_ADJ_DEFAULT_VALUE << AW87XXX_PID_60_PAVG_ADJ_START_BIT)
-+
-+/* NG_GAIN bit 1:0 (NG 0x74) */
-+#define AW87XXX_PID_60_NG_GAIN_START_BIT (0)
-+#define AW87XXX_PID_60_NG_GAIN_BITS_LEN (2)
-+#define AW87XXX_PID_60_NG_GAIN_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_GAIN_BITS_LEN)-1) << AW87XXX_PID_60_NG_GAIN_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_GAIN_MINUS6DB (0)
-+#define AW87XXX_PID_60_NG_GAIN_MINUS6DB_VALUE \
-+ (AW87XXX_PID_60_NG_GAIN_MINUS6DB << AW87XXX_PID_60_NG_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_GAIN_MINUS7P5DB (1)
-+#define AW87XXX_PID_60_NG_GAIN_MINUS7P5DB_VALUE \
-+ (AW87XXX_PID_60_NG_GAIN_MINUS7P5DB << AW87XXX_PID_60_NG_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_GAIN_MINUS9DB (2)
-+#define AW87XXX_PID_60_NG_GAIN_MINUS9DB_VALUE \
-+ (AW87XXX_PID_60_NG_GAIN_MINUS9DB << AW87XXX_PID_60_NG_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_GAIN_MINUS12DB (3)
-+#define AW87XXX_PID_60_NG_GAIN_MINUS12DB_VALUE \
-+ (AW87XXX_PID_60_NG_GAIN_MINUS12DB << AW87XXX_PID_60_NG_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_GAIN_DEFAULT_VALUE (0x3)
-+#define AW87XXX_PID_60_NG_GAIN_DEFAULT \
-+ (AW87XXX_PID_60_NG_GAIN_DEFAULT_VALUE << AW87XXX_PID_60_NG_GAIN_START_BIT)
-+
-+/* default value of NG (0x74) */
-+/* #define AW87XXX_PID_60_NG_DEFAULT (0x27) */
-+
-+/* NG2 (0x75) detail */
-+/* NG_CLK0_SEL bit 0 (NG2 0x75) */
-+#define AW87XXX_PID_60_NG_CLK0_SEL_START_BIT (0)
-+#define AW87XXX_PID_60_NG_CLK0_SEL_BITS_LEN (1)
-+#define AW87XXX_PID_60_NG_CLK0_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_CLK0_SEL_BITS_LEN)-1) << AW87XXX_PID_60_NG_CLK0_SEL_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_CLK0_SEL_5US (0)
-+#define AW87XXX_PID_60_NG_CLK0_SEL_5US_VALUE \
-+ (AW87XXX_PID_60_NG_CLK0_SEL_5US << AW87XXX_PID_60_NG_CLK0_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_CLK0_SEL_10US (1)
-+#define AW87XXX_PID_60_NG_CLK0_SEL_10US_VALUE \
-+ (AW87XXX_PID_60_NG_CLK0_SEL_10US << AW87XXX_PID_60_NG_CLK0_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_CLK0_SEL_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_NG_CLK0_SEL_DEFAULT \
-+ (AW87XXX_PID_60_NG_CLK0_SEL_DEFAULT_VALUE << AW87XXX_PID_60_NG_CLK0_SEL_START_BIT)
-+
-+/* NG_DEGLITCH_CTRL bit 7 (NG2 0x75) */
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_START_BIT (7)
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_BITS_LEN (1)
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_DEGLITCH_CTRL_BITS_LEN)-1) << AW87XXX_PID_60_NG_DEGLITCH_CTRL_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_8P6N (0)
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_8P6N_VALUE \
-+ (AW87XXX_PID_60_NG_DEGLITCH_CTRL_8P6N << AW87XXX_PID_60_NG_DEGLITCH_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_14P2N (1)
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_14P2N_VALUE \
-+ (AW87XXX_PID_60_NG_DEGLITCH_CTRL_14P2N << AW87XXX_PID_60_NG_DEGLITCH_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_NG_DEGLITCH_CTRL_DEFAULT \
-+ (AW87XXX_PID_60_NG_DEGLITCH_CTRL_DEFAULT_VALUE << AW87XXX_PID_60_NG_DEGLITCH_CTRL_START_BIT)
-+
-+/* NGVTH bit 6:4 (NG2 0x75) */
-+#define AW87XXX_PID_60_NGVTH_START_BIT (4)
-+#define AW87XXX_PID_60_NGVTH_BITS_LEN (3)
-+#define AW87XXX_PID_60_NGVTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_NGVTH_BITS_LEN)-1) << AW87XXX_PID_60_NGVTH_START_BIT))
-+
-+#define AW87XXX_PID_60_NGVTH_5MV (0)
-+#define AW87XXX_PID_60_NGVTH_5MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_5MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+#define AW87XXX_PID_60_NGVTH_8MV (1)
-+#define AW87XXX_PID_60_NGVTH_8MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_8MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+#define AW87XXX_PID_60_NGVTH_10MV (2)
-+#define AW87XXX_PID_60_NGVTH_10MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_10MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+#define AW87XXX_PID_60_NGVTH_12MV (3)
-+#define AW87XXX_PID_60_NGVTH_12MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_12MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+#define AW87XXX_PID_60_NGVTH_14MV (4)
-+#define AW87XXX_PID_60_NGVTH_14MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_14MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+#define AW87XXX_PID_60_NGVTH_16MV (5)
-+#define AW87XXX_PID_60_NGVTH_16MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_16MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+/*
-+#define AW87XXX_PID_60_NGVTH_16MV (6)
-+#define AW87XXX_PID_60_NGVTH_16MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_16MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+*/
-+
-+#define AW87XXX_PID_60_NGVTH_25MV (7)
-+#define AW87XXX_PID_60_NGVTH_25MV_VALUE \
-+ (AW87XXX_PID_60_NGVTH_25MV << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+#define AW87XXX_PID_60_NGVTH_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_NGVTH_DEFAULT \
-+ (AW87XXX_PID_60_NGVTH_DEFAULT_VALUE << AW87XXX_PID_60_NGVTH_START_BIT)
-+
-+/* NG_ACK bit 3:1 (NG2 0x75) */
-+#define AW87XXX_PID_60_NG_ACK_START_BIT (1)
-+#define AW87XXX_PID_60_NG_ACK_BITS_LEN (3)
-+#define AW87XXX_PID_60_NG_ACK_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_ACK_BITS_LEN)-1) << AW87XXX_PID_60_NG_ACK_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_ACK_10MS (0)
-+#define AW87XXX_PID_60_NG_ACK_10MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_10MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_20MS (1)
-+#define AW87XXX_PID_60_NG_ACK_20MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_20MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_40MS (2)
-+#define AW87XXX_PID_60_NG_ACK_40MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_40MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_80MS (3)
-+#define AW87XXX_PID_60_NG_ACK_80MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_80MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_160MS (4)
-+#define AW87XXX_PID_60_NG_ACK_160MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_160MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_320MS (5)
-+#define AW87XXX_PID_60_NG_ACK_320MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_320MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_640MS (6)
-+#define AW87XXX_PID_60_NG_ACK_640MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_640MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_1280MS (7)
-+#define AW87XXX_PID_60_NG_ACK_1280MS_VALUE \
-+ (AW87XXX_PID_60_NG_ACK_1280MS << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_ACK_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_60_NG_ACK_DEFAULT \
-+ (AW87XXX_PID_60_NG_ACK_DEFAULT_VALUE << AW87XXX_PID_60_NG_ACK_START_BIT)
-+
-+/* default value of NG2 (0x75) */
-+/* #define AW87XXX_PID_60_NG2_DEFAULT (0xA9) */
-+
-+/* NG3 (0x76) detail */
-+/* NG_RCK bit 7:5 (NG3 0x76) */
-+#define AW87XXX_PID_60_NG_RCK_START_BIT (5)
-+#define AW87XXX_PID_60_NG_RCK_BITS_LEN (3)
-+#define AW87XXX_PID_60_NG_RCK_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_RCK_BITS_LEN)-1) << AW87XXX_PID_60_NG_RCK_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_RCK_90US (0)
-+#define AW87XXX_PID_60_NG_RCK_90US_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_90US << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_180US (1)
-+#define AW87XXX_PID_60_NG_RCK_180US_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_180US << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_360US (2)
-+#define AW87XXX_PID_60_NG_RCK_360US_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_360US << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_720US (3)
-+#define AW87XXX_PID_60_NG_RCK_720US_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_720US << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_1P44M (4)
-+#define AW87XXX_PID_60_NG_RCK_1P44M_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_1P44M << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_2P88MS (5)
-+#define AW87XXX_PID_60_NG_RCK_2P88MS_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_2P88MS << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_5P76MS (6)
-+#define AW87XXX_PID_60_NG_RCK_5P76MS_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_5P76MS << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_11P52MS (7)
-+#define AW87XXX_PID_60_NG_RCK_11P52MS_VALUE \
-+ (AW87XXX_PID_60_NG_RCK_11P52MS << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_RCK_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_60_NG_RCK_DEFAULT \
-+ (AW87XXX_PID_60_NG_RCK_DEFAULT_VALUE << AW87XXX_PID_60_NG_RCK_START_BIT)
-+
-+/* NG_WCK bit 4:2 (NG3 0x76) */
-+#define AW87XXX_PID_60_NG_WCK_START_BIT (2)
-+#define AW87XXX_PID_60_NG_WCK_BITS_LEN (3)
-+#define AW87XXX_PID_60_NG_WCK_MASK \
-+ (~(((1<<AW87XXX_PID_60_NG_WCK_BITS_LEN)-1) << AW87XXX_PID_60_NG_WCK_START_BIT))
-+
-+#define AW87XXX_PID_60_NG_WCK_20MS (0)
-+#define AW87XXX_PID_60_NG_WCK_20MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_20MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_40MS (1)
-+#define AW87XXX_PID_60_NG_WCK_40MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_40MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_80MS (2)
-+#define AW87XXX_PID_60_NG_WCK_80MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_80MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_160MS (3)
-+#define AW87XXX_PID_60_NG_WCK_160MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_160MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_320MS (4)
-+#define AW87XXX_PID_60_NG_WCK_320MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_320MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_640MS (5)
-+#define AW87XXX_PID_60_NG_WCK_640MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_640MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_1280MS (6)
-+#define AW87XXX_PID_60_NG_WCK_1280MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_1280MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_2556MS (7)
-+#define AW87XXX_PID_60_NG_WCK_2556MS_VALUE \
-+ (AW87XXX_PID_60_NG_WCK_2556MS << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+#define AW87XXX_PID_60_NG_WCK_DEFAULT_VALUE (0x4)
-+#define AW87XXX_PID_60_NG_WCK_DEFAULT \
-+ (AW87XXX_PID_60_NG_WCK_DEFAULT_VALUE << AW87XXX_PID_60_NG_WCK_START_BIT)
-+
-+/* CP_VOS bit 1:0 (NG3 0x76) */
-+#define AW87XXX_PID_60_CP_VOS_START_BIT (0)
-+#define AW87XXX_PID_60_CP_VOS_BITS_LEN (2)
-+#define AW87XXX_PID_60_CP_VOS_MASK \
-+ (~(((1<<AW87XXX_PID_60_CP_VOS_BITS_LEN)-1) << AW87XXX_PID_60_CP_VOS_START_BIT))
-+
-+#define AW87XXX_PID_60_CP_VOS_0MV (0)
-+#define AW87XXX_PID_60_CP_VOS_0MV_VALUE \
-+ (AW87XXX_PID_60_CP_VOS_0MV << AW87XXX_PID_60_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_VOS_50MV (1)
-+#define AW87XXX_PID_60_CP_VOS_50MV_VALUE \
-+ (AW87XXX_PID_60_CP_VOS_50MV << AW87XXX_PID_60_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_VOS_100MV (2)
-+#define AW87XXX_PID_60_CP_VOS_100MV_VALUE \
-+ (AW87XXX_PID_60_CP_VOS_100MV << AW87XXX_PID_60_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_VOS_150MV (3)
-+#define AW87XXX_PID_60_CP_VOS_150MV_VALUE \
-+ (AW87XXX_PID_60_CP_VOS_150MV << AW87XXX_PID_60_CP_VOS_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_VOS_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_CP_VOS_DEFAULT \
-+ (AW87XXX_PID_60_CP_VOS_DEFAULT_VALUE << AW87XXX_PID_60_CP_VOS_START_BIT)
-+
-+/* default value of NG3 (0x76) */
-+/* #define AW87XXX_PID_60_NG3_DEFAULT (0x91) */
-+
-+/* CP (0x77) detail */
-+/* CP_DDT bit 0 (CP 0x77) */
-+#define AW87XXX_PID_60_CP_DDT_START_BIT (0)
-+#define AW87XXX_PID_60_CP_DDT_BITS_LEN (1)
-+#define AW87XXX_PID_60_CP_DDT_MASK \
-+ (~(((1<<AW87XXX_PID_60_CP_DDT_BITS_LEN)-1) << AW87XXX_PID_60_CP_DDT_START_BIT))
-+
-+#define AW87XXX_PID_60_CP_DDT_0NS (0)
-+#define AW87XXX_PID_60_CP_DDT_0NS_VALUE \
-+ (AW87XXX_PID_60_CP_DDT_0NS << AW87XXX_PID_60_CP_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_DDT_10NS (1)
-+#define AW87XXX_PID_60_CP_DDT_10NS_VALUE \
-+ (AW87XXX_PID_60_CP_DDT_10NS << AW87XXX_PID_60_CP_DDT_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_DDT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_CP_DDT_DEFAULT \
-+ (AW87XXX_PID_60_CP_DDT_DEFAULT_VALUE << AW87XXX_PID_60_CP_DDT_START_BIT)
-+
-+/* CPOK_TM bit 1 (CP 0x77) */
-+#define AW87XXX_PID_60_CPOK_TM_START_BIT (1)
-+#define AW87XXX_PID_60_CPOK_TM_BITS_LEN (1)
-+#define AW87XXX_PID_60_CPOK_TM_MASK \
-+ (~(((1<<AW87XXX_PID_60_CPOK_TM_BITS_LEN)-1) << AW87XXX_PID_60_CPOK_TM_START_BIT))
-+
-+#define AW87XXX_PID_60_CPOK_TM_0P6MS (0)
-+#define AW87XXX_PID_60_CPOK_TM_0P6MS_VALUE \
-+ (AW87XXX_PID_60_CPOK_TM_0P6MS << AW87XXX_PID_60_CPOK_TM_START_BIT)
-+
-+#define AW87XXX_PID_60_CPOK_TM_1MS (1)
-+#define AW87XXX_PID_60_CPOK_TM_1MS_VALUE \
-+ (AW87XXX_PID_60_CPOK_TM_1MS << AW87XXX_PID_60_CPOK_TM_START_BIT)
-+
-+#define AW87XXX_PID_60_CPOK_TM_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_CPOK_TM_DEFAULT \
-+ (AW87XXX_PID_60_CPOK_TM_DEFAULT_VALUE << AW87XXX_PID_60_CPOK_TM_START_BIT)
-+
-+/* UVLO_DT bit 4 (CP 0x77) */
-+#define AW87XXX_PID_60_UVLO_DT_START_BIT (4)
-+#define AW87XXX_PID_60_UVLO_DT_BITS_LEN (1)
-+#define AW87XXX_PID_60_UVLO_DT_MASK \
-+ (~(((1<<AW87XXX_PID_60_UVLO_DT_BITS_LEN)-1) << AW87XXX_PID_60_UVLO_DT_START_BIT))
-+
-+#define AW87XXX_PID_60_UVLO_DT_3US (0)
-+#define AW87XXX_PID_60_UVLO_DT_3US_VALUE \
-+ (AW87XXX_PID_60_UVLO_DT_3US << AW87XXX_PID_60_UVLO_DT_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_DT_10US (1)
-+#define AW87XXX_PID_60_UVLO_DT_10US_VALUE \
-+ (AW87XXX_PID_60_UVLO_DT_10US << AW87XXX_PID_60_UVLO_DT_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_DT_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_UVLO_DT_DEFAULT \
-+ (AW87XXX_PID_60_UVLO_DT_DEFAULT_VALUE << AW87XXX_PID_60_UVLO_DT_START_BIT)
-+
-+/* PD_UVLO bit 7 (CP 0x77) */
-+#define AW87XXX_PID_60_PD_UVLO_START_BIT (7)
-+#define AW87XXX_PID_60_PD_UVLO_BITS_LEN (1)
-+#define AW87XXX_PID_60_PD_UVLO_MASK \
-+ (~(((1<<AW87XXX_PID_60_PD_UVLO_BITS_LEN)-1) << AW87XXX_PID_60_PD_UVLO_START_BIT))
-+
-+#define AW87XXX_PID_60_PD_UVLO_ENABLE (0)
-+#define AW87XXX_PID_60_PD_UVLO_ENABLE_VALUE \
-+ (AW87XXX_PID_60_PD_UVLO_ENABLE << AW87XXX_PID_60_PD_UVLO_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_UVLO_DISABLE (1)
-+#define AW87XXX_PID_60_PD_UVLO_DISABLE_VALUE \
-+ (AW87XXX_PID_60_PD_UVLO_DISABLE << AW87XXX_PID_60_PD_UVLO_START_BIT)
-+
-+#define AW87XXX_PID_60_PD_UVLO_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PD_UVLO_DEFAULT \
-+ (AW87XXX_PID_60_PD_UVLO_DEFAULT_VALUE << AW87XXX_PID_60_PD_UVLO_START_BIT)
-+
-+/* UVLO_VTH bit 6:5 (CP 0x77) */
-+#define AW87XXX_PID_60_UVLO_VTH_START_BIT (5)
-+#define AW87XXX_PID_60_UVLO_VTH_BITS_LEN (2)
-+#define AW87XXX_PID_60_UVLO_VTH_MASK \
-+ (~(((1<<AW87XXX_PID_60_UVLO_VTH_BITS_LEN)-1) << AW87XXX_PID_60_UVLO_VTH_START_BIT))
-+
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P6V_VL2P5V (0)
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P6V_VL2P5V_VALUE \
-+ (AW87XXX_PID_60_UVLO_VTH_VH2P6V_VL2P5V << AW87XXX_PID_60_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P7V_VL2P6V (1)
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P7V_VL2P6V_VALUE \
-+ (AW87XXX_PID_60_UVLO_VTH_VH2P7V_VL2P6V << AW87XXX_PID_60_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P8V_VL2P7V (2)
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P8V_VL2P7V_VALUE \
-+ (AW87XXX_PID_60_UVLO_VTH_VH2P8V_VL2P7V << AW87XXX_PID_60_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P9V_VL2P8V (3)
-+#define AW87XXX_PID_60_UVLO_VTH_VH2P9V_VL2P8V_VALUE \
-+ (AW87XXX_PID_60_UVLO_VTH_VH2P9V_VL2P8V << AW87XXX_PID_60_UVLO_VTH_START_BIT)
-+
-+#define AW87XXX_PID_60_UVLO_VTH_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_UVLO_VTH_DEFAULT \
-+ (AW87XXX_PID_60_UVLO_VTH_DEFAULT_VALUE << AW87XXX_PID_60_UVLO_VTH_START_BIT)
-+
-+/* CP_LDO bit 3:2 (CP 0x77) */
-+#define AW87XXX_PID_60_CP_LDO_START_BIT (2)
-+#define AW87XXX_PID_60_CP_LDO_BITS_LEN (2)
-+#define AW87XXX_PID_60_CP_LDO_MASK \
-+ (~(((1<<AW87XXX_PID_60_CP_LDO_BITS_LEN)-1) << AW87XXX_PID_60_CP_LDO_START_BIT))
-+
-+#define AW87XXX_PID_60_CP_LDO_4P75V (0)
-+#define AW87XXX_PID_60_CP_LDO_4P75V_VALUE \
-+ (AW87XXX_PID_60_CP_LDO_4P75V << AW87XXX_PID_60_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_LDO_5V (1)
-+#define AW87XXX_PID_60_CP_LDO_5V_VALUE \
-+ (AW87XXX_PID_60_CP_LDO_5V << AW87XXX_PID_60_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_LDO_5P25V (2)
-+#define AW87XXX_PID_60_CP_LDO_5P25V_VALUE \
-+ (AW87XXX_PID_60_CP_LDO_5P25V << AW87XXX_PID_60_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_LDO_5P5V (3)
-+#define AW87XXX_PID_60_CP_LDO_5P5V_VALUE \
-+ (AW87XXX_PID_60_CP_LDO_5P5V << AW87XXX_PID_60_CP_LDO_START_BIT)
-+
-+#define AW87XXX_PID_60_CP_LDO_DEFAULT_VALUE (0x2)
-+#define AW87XXX_PID_60_CP_LDO_DEFAULT \
-+ (AW87XXX_PID_60_CP_LDO_DEFAULT_VALUE << AW87XXX_PID_60_CP_LDO_START_BIT)
-+
-+/* default value of CP (0x77) */
-+/* #define AW87XXX_PID_60_CP_DEFAULT (0x5A) */
-+
-+/* TEST_GTDR (0x78) detail */
-+/* TEST_OC bit 0 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_TEST_OC_START_BIT (0)
-+#define AW87XXX_PID_60_TEST_OC_BITS_LEN (1)
-+#define AW87XXX_PID_60_TEST_OC_MASK \
-+ (~(((1<<AW87XXX_PID_60_TEST_OC_BITS_LEN)-1) << AW87XXX_PID_60_TEST_OC_START_BIT))
-+
-+#define AW87XXX_PID_60_TEST_OC_DISABLE (0)
-+#define AW87XXX_PID_60_TEST_OC_DISABLE_VALUE \
-+ (AW87XXX_PID_60_TEST_OC_DISABLE << AW87XXX_PID_60_TEST_OC_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_OC_ENABLE (1)
-+#define AW87XXX_PID_60_TEST_OC_ENABLE_VALUE \
-+ (AW87XXX_PID_60_TEST_OC_ENABLE << AW87XXX_PID_60_TEST_OC_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_OC_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_TEST_OC_DEFAULT \
-+ (AW87XXX_PID_60_TEST_OC_DEFAULT_VALUE << AW87XXX_PID_60_TEST_OC_START_BIT)
-+
-+/* OC_DEBUG_EN bit 1 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_OC_DEBUG_EN_START_BIT (1)
-+#define AW87XXX_PID_60_OC_DEBUG_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_OC_DEBUG_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_OC_DEBUG_EN_BITS_LEN)-1) << AW87XXX_PID_60_OC_DEBUG_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_OC_DEBUG_EN_DISABLE (0)
-+#define AW87XXX_PID_60_OC_DEBUG_EN_DISABLE_VALUE \
-+ (AW87XXX_PID_60_OC_DEBUG_EN_DISABLE << AW87XXX_PID_60_OC_DEBUG_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DEBUG_EN_ENABLE (1)
-+#define AW87XXX_PID_60_OC_DEBUG_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_OC_DEBUG_EN_ENABLE << AW87XXX_PID_60_OC_DEBUG_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DEBUG_EN_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_OC_DEBUG_EN_DEFAULT \
-+ (AW87XXX_PID_60_OC_DEBUG_EN_DEFAULT_VALUE << AW87XXX_PID_60_OC_DEBUG_EN_START_BIT)
-+
-+/* LN_RON_T_N bit 4 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_LN_RON_T_N_START_BIT (4)
-+#define AW87XXX_PID_60_LN_RON_T_N_BITS_LEN (1)
-+#define AW87XXX_PID_60_LN_RON_T_N_MASK \
-+ (~(((1<<AW87XXX_PID_60_LN_RON_T_N_BITS_LEN)-1) << AW87XXX_PID_60_LN_RON_T_N_START_BIT))
-+
-+#define AW87XXX_PID_60_LN_RON_T_N_DISABLE (0)
-+#define AW87XXX_PID_60_LN_RON_T_N_DISABLE_VALUE \
-+ (AW87XXX_PID_60_LN_RON_T_N_DISABLE << AW87XXX_PID_60_LN_RON_T_N_START_BIT)
-+
-+#define AW87XXX_PID_60_LN_RON_T_N_ENALBE (1)
-+#define AW87XXX_PID_60_LN_RON_T_N_ENALBE_VALUE \
-+ (AW87XXX_PID_60_LN_RON_T_N_ENALBE << AW87XXX_PID_60_LN_RON_T_N_START_BIT)
-+
-+#define AW87XXX_PID_60_LN_RON_T_N_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_LN_RON_T_N_DEFAULT \
-+ (AW87XXX_PID_60_LN_RON_T_N_DEFAULT_VALUE << AW87XXX_PID_60_LN_RON_T_N_START_BIT)
-+
-+/* LN_RON_T_P bit 5 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_LN_RON_T_P_START_BIT (5)
-+#define AW87XXX_PID_60_LN_RON_T_P_BITS_LEN (1)
-+#define AW87XXX_PID_60_LN_RON_T_P_MASK \
-+ (~(((1<<AW87XXX_PID_60_LN_RON_T_P_BITS_LEN)-1) << AW87XXX_PID_60_LN_RON_T_P_START_BIT))
-+
-+#define AW87XXX_PID_60_LN_RON_T_P_DISABLE (0)
-+#define AW87XXX_PID_60_LN_RON_T_P_DISABLE_VALUE \
-+ (AW87XXX_PID_60_LN_RON_T_P_DISABLE << AW87XXX_PID_60_LN_RON_T_P_START_BIT)
-+
-+#define AW87XXX_PID_60_LN_RON_T_P_ENALBE (1)
-+#define AW87XXX_PID_60_LN_RON_T_P_ENALBE_VALUE \
-+ (AW87XXX_PID_60_LN_RON_T_P_ENALBE << AW87XXX_PID_60_LN_RON_T_P_START_BIT)
-+
-+#define AW87XXX_PID_60_LN_RON_T_P_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_LN_RON_T_P_DEFAULT \
-+ (AW87XXX_PID_60_LN_RON_T_P_DEFAULT_VALUE << AW87XXX_PID_60_LN_RON_T_P_START_BIT)
-+
-+/* HN_RON_T_N bit 6 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_HN_RON_T_N_START_BIT (6)
-+#define AW87XXX_PID_60_HN_RON_T_N_BITS_LEN (1)
-+#define AW87XXX_PID_60_HN_RON_T_N_MASK \
-+ (~(((1<<AW87XXX_PID_60_HN_RON_T_N_BITS_LEN)-1) << AW87XXX_PID_60_HN_RON_T_N_START_BIT))
-+
-+#define AW87XXX_PID_60_HN_RON_T_N_DISABLE (0)
-+#define AW87XXX_PID_60_HN_RON_T_N_DISABLE_VALUE \
-+ (AW87XXX_PID_60_HN_RON_T_N_DISABLE << AW87XXX_PID_60_HN_RON_T_N_START_BIT)
-+
-+#define AW87XXX_PID_60_HN_RON_T_N_ENALBE (1)
-+#define AW87XXX_PID_60_HN_RON_T_N_ENALBE_VALUE \
-+ (AW87XXX_PID_60_HN_RON_T_N_ENALBE << AW87XXX_PID_60_HN_RON_T_N_START_BIT)
-+
-+#define AW87XXX_PID_60_HN_RON_T_N_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_HN_RON_T_N_DEFAULT \
-+ (AW87XXX_PID_60_HN_RON_T_N_DEFAULT_VALUE << AW87XXX_PID_60_HN_RON_T_N_START_BIT)
-+
-+/* HN_RON_T_P bit 7 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_HN_RON_T_P_START_BIT (7)
-+#define AW87XXX_PID_60_HN_RON_T_P_BITS_LEN (1)
-+#define AW87XXX_PID_60_HN_RON_T_P_MASK \
-+ (~(((1<<AW87XXX_PID_60_HN_RON_T_P_BITS_LEN)-1) << AW87XXX_PID_60_HN_RON_T_P_START_BIT))
-+
-+#define AW87XXX_PID_60_HN_RON_T_P_DISABLE (0)
-+#define AW87XXX_PID_60_HN_RON_T_P_DISABLE_VALUE \
-+ (AW87XXX_PID_60_HN_RON_T_P_DISABLE << AW87XXX_PID_60_HN_RON_T_P_START_BIT)
-+
-+#define AW87XXX_PID_60_HN_RON_T_P_ENALBE (1)
-+#define AW87XXX_PID_60_HN_RON_T_P_ENALBE_VALUE \
-+ (AW87XXX_PID_60_HN_RON_T_P_ENALBE << AW87XXX_PID_60_HN_RON_T_P_START_BIT)
-+
-+#define AW87XXX_PID_60_HN_RON_T_P_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_HN_RON_T_P_DEFAULT \
-+ (AW87XXX_PID_60_HN_RON_T_P_DEFAULT_VALUE << AW87XXX_PID_60_HN_RON_T_P_START_BIT)
-+
-+/* OC_DEBUG_SEL bit 3:2 (TEST_GTDR 0x78) */
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT (2)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_BITS_LEN (2)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_MASK \
-+ (~(((1<<AW87XXX_PID_60_OC_DEBUG_SEL_BITS_LEN)-1) << AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT))
-+
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VOPP (0)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VOPP_VALUE \
-+ (AW87XXX_PID_60_OC_DEBUG_SEL_VOPP << AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VOPN (1)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VOPN_VALUE \
-+ (AW87XXX_PID_60_OC_DEBUG_SEL_VOPN << AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VONP (2)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VONP_VALUE \
-+ (AW87XXX_PID_60_OC_DEBUG_SEL_VONP << AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VONN (3)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_VONN_VALUE \
-+ (AW87XXX_PID_60_OC_DEBUG_SEL_VONN << AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_OC_DEBUG_SEL_DEFAULT \
-+ (AW87XXX_PID_60_OC_DEBUG_SEL_DEFAULT_VALUE << AW87XXX_PID_60_OC_DEBUG_SEL_START_BIT)
-+
-+/* default value of TEST_GTDR (0x78) */
-+/* #define AW87XXX_PID_60_TEST_GTDR_DEFAULT (0x00) */
-+
-+/* TEST_BST (0x79) detail */
-+/* BST_LNMOS_TEST bit 0 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_START_BIT (0)
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_LNMOS_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_LNMOS_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_LNMOS_TEST_DIABLE << AW87XXX_PID_60_BST_LNMOS_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_LNMOS_TEST_ENABLE << AW87XXX_PID_60_BST_LNMOS_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_LNMOS_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_LNMOS_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_LNMOS_TEST_START_BIT)
-+
-+/* BST_HNMOS_TEST bit 1 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_START_BIT (1)
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_HNMOS_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_HNMOS_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_HNMOS_TEST_DIABLE << AW87XXX_PID_60_BST_HNMOS_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_HNMOS_TEST_ENABLE << AW87XXX_PID_60_BST_HNMOS_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_HNMOS_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_HNMOS_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_HNMOS_TEST_START_BIT)
-+
-+/* BST_SCP_TEST bit 2 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_BST_SCP_TEST_START_BIT (2)
-+#define AW87XXX_PID_60_BST_SCP_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_SCP_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_SCP_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_SCP_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_SCP_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_BST_SCP_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_TEST_DIABLE << AW87XXX_PID_60_BST_SCP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_SCP_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_SCP_TEST_ENABLE << AW87XXX_PID_60_BST_SCP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_SCP_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_SCP_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_SCP_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_SCP_TEST_START_BIT)
-+
-+/* ANTIR_TEST bit 3 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_ANTIR_TEST_START_BIT (3)
-+#define AW87XXX_PID_60_ANTIR_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_ANTIR_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_ANTIR_TEST_BITS_LEN)-1) << AW87XXX_PID_60_ANTIR_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_ANTIR_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_ANTIR_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_ANTIR_TEST_DIABLE << AW87XXX_PID_60_ANTIR_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_ANTIR_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_ANTIR_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_ANTIR_TEST_ENABLE << AW87XXX_PID_60_ANTIR_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_ANTIR_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_ANTIR_TEST_DEFAULT \
-+ (AW87XXX_PID_60_ANTIR_TEST_DEFAULT_VALUE << AW87XXX_PID_60_ANTIR_TEST_START_BIT)
-+
-+/* BST_PEAK_TEST bit 4 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_BST_PEAK_TEST_START_BIT (4)
-+#define AW87XXX_PID_60_BST_PEAK_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_PEAK_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_PEAK_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_PEAK_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_PEAK_TEST_DISABLE (0)
-+#define AW87XXX_PID_60_BST_PEAK_TEST_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_PEAK_TEST_DISABLE << AW87XXX_PID_60_BST_PEAK_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_PEAK_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_PEAK_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_PEAK_TEST_ENABLE << AW87XXX_PID_60_BST_PEAK_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_PEAK_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_PEAK_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_PEAK_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_PEAK_TEST_START_BIT)
-+
-+/* BST_OVP_TEST bit 5 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_BST_OVP_TEST_START_BIT (5)
-+#define AW87XXX_PID_60_BST_OVP_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_OVP_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_OVP_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_OVP_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_OVP_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_BST_OVP_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_TEST_DIABLE << AW87XXX_PID_60_BST_OVP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_OVP_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_OVP_TEST_ENABLE << AW87XXX_PID_60_BST_OVP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_OVP_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_OVP_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_OVP_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_OVP_TEST_START_BIT)
-+
-+/* BST_TEST_EN bit 6 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_BST_TEST_EN_START_BIT (6)
-+#define AW87XXX_PID_60_BST_TEST_EN_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_TEST_EN_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_TEST_EN_BITS_LEN)-1) << AW87XXX_PID_60_BST_TEST_EN_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_TEST_EN_DIABLE (0)
-+#define AW87XXX_PID_60_BST_TEST_EN_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_TEST_EN_DIABLE << AW87XXX_PID_60_BST_TEST_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_TEST_EN_ENABLE (1)
-+#define AW87XXX_PID_60_BST_TEST_EN_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_TEST_EN_ENABLE << AW87XXX_PID_60_BST_TEST_EN_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_TEST_EN_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_TEST_EN_DEFAULT \
-+ (AW87XXX_PID_60_BST_TEST_EN_DEFAULT_VALUE << AW87XXX_PID_60_BST_TEST_EN_START_BIT)
-+
-+/* OC_DISABLE bit 7 (TEST_BST 0x79) */
-+#define AW87XXX_PID_60_OC_DISABLE_START_BIT (7)
-+#define AW87XXX_PID_60_OC_DISABLE_BITS_LEN (1)
-+#define AW87XXX_PID_60_OC_DISABLE_MASK \
-+ (~(((1<<AW87XXX_PID_60_OC_DISABLE_BITS_LEN)-1) << AW87XXX_PID_60_OC_DISABLE_START_BIT))
-+
-+#define AW87XXX_PID_60_OC_DISABLE_ENABLE (0)
-+#define AW87XXX_PID_60_OC_DISABLE_ENABLE_VALUE \
-+ (AW87XXX_PID_60_OC_DISABLE_ENABLE << AW87XXX_PID_60_OC_DISABLE_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DISABLE_SHUTDOWN (1)
-+#define AW87XXX_PID_60_OC_DISABLE_SHUTDOWN_VALUE \
-+ (AW87XXX_PID_60_OC_DISABLE_SHUTDOWN << AW87XXX_PID_60_OC_DISABLE_START_BIT)
-+
-+#define AW87XXX_PID_60_OC_DISABLE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_OC_DISABLE_DEFAULT \
-+ (AW87XXX_PID_60_OC_DISABLE_DEFAULT_VALUE << AW87XXX_PID_60_OC_DISABLE_START_BIT)
-+
-+/* default value of TEST_BST (0x79) */
-+/* #define AW87XXX_PID_60_TEST_BST_DEFAULT (0x00) */
-+
-+/* TEST_MODE (0x7A) detail */
-+/* PA_TEST_FORCE bit 3 (TEST_MODE 0x7A) */
-+#define AW87XXX_PID_60_PA_TEST_FORCE_START_BIT (3)
-+#define AW87XXX_PID_60_PA_TEST_FORCE_BITS_LEN (1)
-+#define AW87XXX_PID_60_PA_TEST_FORCE_MASK \
-+ (~(((1<<AW87XXX_PID_60_PA_TEST_FORCE_BITS_LEN)-1) << AW87XXX_PID_60_PA_TEST_FORCE_START_BIT))
-+
-+#define AW87XXX_PID_60_PA_TEST_FORCE_DISABLE (0)
-+#define AW87XXX_PID_60_PA_TEST_FORCE_DISABLE_VALUE \
-+ (AW87XXX_PID_60_PA_TEST_FORCE_DISABLE << AW87XXX_PID_60_PA_TEST_FORCE_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_TEST_FORCE_ENABLE (1)
-+#define AW87XXX_PID_60_PA_TEST_FORCE_ENABLE_VALUE \
-+ (AW87XXX_PID_60_PA_TEST_FORCE_ENABLE << AW87XXX_PID_60_PA_TEST_FORCE_START_BIT)
-+
-+#define AW87XXX_PID_60_PA_TEST_FORCE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_PA_TEST_FORCE_DEFAULT \
-+ (AW87XXX_PID_60_PA_TEST_FORCE_DEFAULT_VALUE << AW87XXX_PID_60_PA_TEST_FORCE_START_BIT)
-+
-+/* BST_TEST_FORCE bit 4 (TEST_MODE 0x7A) */
-+#define AW87XXX_PID_60_BST_TEST_FORCE_START_BIT (4)
-+#define AW87XXX_PID_60_BST_TEST_FORCE_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_TEST_FORCE_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_TEST_FORCE_BITS_LEN)-1) << AW87XXX_PID_60_BST_TEST_FORCE_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_TEST_FORCE_DISABLE (0)
-+#define AW87XXX_PID_60_BST_TEST_FORCE_DISABLE_VALUE \
-+ (AW87XXX_PID_60_BST_TEST_FORCE_DISABLE << AW87XXX_PID_60_BST_TEST_FORCE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_TEST_FORCE_ENABLE (1)
-+#define AW87XXX_PID_60_BST_TEST_FORCE_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_TEST_FORCE_ENABLE << AW87XXX_PID_60_BST_TEST_FORCE_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_TEST_FORCE_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_BST_TEST_FORCE_DEFAULT \
-+ (AW87XXX_PID_60_BST_TEST_FORCE_DEFAULT_VALUE << AW87XXX_PID_60_BST_TEST_FORCE_START_BIT)
-+
-+/* EN_OT_TEST bit 5 (TEST_MODE 0x7A) */
-+#define AW87XXX_PID_60_EN_OT_TEST_START_BIT (5)
-+#define AW87XXX_PID_60_EN_OT_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_OT_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_OT_TEST_BITS_LEN)-1) << AW87XXX_PID_60_EN_OT_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_OT_TEST_DISABLE (0)
-+#define AW87XXX_PID_60_EN_OT_TEST_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_OT_TEST_DISABLE << AW87XXX_PID_60_EN_OT_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_OT_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_EN_OT_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_OT_TEST_ENABLE << AW87XXX_PID_60_EN_OT_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_OT_TEST_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_OT_TEST_DEFAULT \
-+ (AW87XXX_PID_60_EN_OT_TEST_DEFAULT_VALUE << AW87XXX_PID_60_EN_OT_TEST_START_BIT)
-+
-+/* EN_TEST bit 6 (TEST_MODE 0x7A) */
-+#define AW87XXX_PID_60_EN_TEST_START_BIT (6)
-+#define AW87XXX_PID_60_EN_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_TEST_BITS_LEN)-1) << AW87XXX_PID_60_EN_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_TEST_DISABLE (0)
-+#define AW87XXX_PID_60_EN_TEST_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_TEST_DISABLE << AW87XXX_PID_60_EN_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_EN_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_TEST_ENABLE << AW87XXX_PID_60_EN_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_EN_TEST_DEFAULT \
-+ (AW87XXX_PID_60_EN_TEST_DEFAULT_VALUE << AW87XXX_PID_60_EN_TEST_START_BIT)
-+
-+/* BST_BURST_TEST bit 7 (TEST_MODE 0x7A) */
-+#define AW87XXX_PID_60_BST_BURST_TEST_START_BIT (7)
-+#define AW87XXX_PID_60_BST_BURST_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_BST_BURST_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_BST_BURST_TEST_BITS_LEN)-1) << AW87XXX_PID_60_BST_BURST_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_BST_BURST_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_BST_BURST_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_TEST_DIABLE << AW87XXX_PID_60_BST_BURST_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_BST_BURST_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_BST_BURST_TEST_ENABLE << AW87XXX_PID_60_BST_BURST_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_BST_BURST_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_BST_BURST_TEST_DEFAULT \
-+ (AW87XXX_PID_60_BST_BURST_TEST_DEFAULT_VALUE << AW87XXX_PID_60_BST_BURST_TEST_START_BIT)
-+
-+/* TEST_ANALOG_CTRL bit 2:0 (TEST_MODE 0x7A) */
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT (0)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_BITS_LEN (3)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_MASK \
-+ (~(((1<<AW87XXX_PID_60_TEST_ANALOG_CTRL_BITS_LEN)-1) << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT))
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VBG (0)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VBG_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_VBG << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_COMPT (1)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_COMPT_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_COMPT << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_HALFVDD (2)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_HALFVDD_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_HALFVDD << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VCSEL (3)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VCSEL_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_VCSEL << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VLSEL (4)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VLSEL_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_VLSEL << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_MSBMVTH1T (5)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_MSBMVTH1T_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_MSBMVTH1T << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_MSBMVTH4T (6)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_MSBMVTH4T_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_MSBMVTH4T << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VCM2T (7)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_VCM2T_VALUE \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_VCM2T << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_TEST_ANALOG_CTRL_DEFAULT \
-+ (AW87XXX_PID_60_TEST_ANALOG_CTRL_DEFAULT_VALUE << AW87XXX_PID_60_TEST_ANALOG_CTRL_START_BIT)
-+
-+/* default value of TEST_MODE (0x7A) */
-+/* #define AW87XXX_PID_60_TEST_MODE_DEFAULT (0x00) */
-+
-+/* TEST_CON (0x7B) detail */
-+/* COMP_TEST bit 5 (TEST_CON 0x7B) */
-+#define AW87XXX_PID_60_COMP_TEST_START_BIT (5)
-+#define AW87XXX_PID_60_COMP_TEST_BITS_LEN (1)
-+#define AW87XXX_PID_60_COMP_TEST_MASK \
-+ (~(((1<<AW87XXX_PID_60_COMP_TEST_BITS_LEN)-1) << AW87XXX_PID_60_COMP_TEST_START_BIT))
-+
-+#define AW87XXX_PID_60_COMP_TEST_DIABLE (0)
-+#define AW87XXX_PID_60_COMP_TEST_DIABLE_VALUE \
-+ (AW87XXX_PID_60_COMP_TEST_DIABLE << AW87XXX_PID_60_COMP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_COMP_TEST_ENABLE (1)
-+#define AW87XXX_PID_60_COMP_TEST_ENABLE_VALUE \
-+ (AW87XXX_PID_60_COMP_TEST_ENABLE << AW87XXX_PID_60_COMP_TEST_START_BIT)
-+
-+#define AW87XXX_PID_60_COMP_TEST_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_COMP_TEST_DEFAULT \
-+ (AW87XXX_PID_60_COMP_TEST_DEFAULT_VALUE << AW87XXX_PID_60_COMP_TEST_START_BIT)
-+
-+/* REG_EN_ESD bit 6 (TEST_CON 0x7B) */
-+#define AW87XXX_PID_60_REG_EN_ESD_START_BIT (6)
-+#define AW87XXX_PID_60_REG_EN_ESD_BITS_LEN (1)
-+#define AW87XXX_PID_60_REG_EN_ESD_MASK \
-+ (~(((1<<AW87XXX_PID_60_REG_EN_ESD_BITS_LEN)-1) << AW87XXX_PID_60_REG_EN_ESD_START_BIT))
-+
-+#define AW87XXX_PID_60_REG_EN_ESD_DISABLE (0)
-+#define AW87XXX_PID_60_REG_EN_ESD_DISABLE_VALUE \
-+ (AW87XXX_PID_60_REG_EN_ESD_DISABLE << AW87XXX_PID_60_REG_EN_ESD_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_EN_ESD_ENABLE (1)
-+#define AW87XXX_PID_60_REG_EN_ESD_ENABLE_VALUE \
-+ (AW87XXX_PID_60_REG_EN_ESD_ENABLE << AW87XXX_PID_60_REG_EN_ESD_START_BIT)
-+
-+#define AW87XXX_PID_60_REG_EN_ESD_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_60_REG_EN_ESD_DEFAULT \
-+ (AW87XXX_PID_60_REG_EN_ESD_DEFAULT_VALUE << AW87XXX_PID_60_REG_EN_ESD_START_BIT)
-+
-+/* EN_POWER_MT bit 7 (TEST_CON 0x7B) */
-+#define AW87XXX_PID_60_EN_POWER_MT_START_BIT (7)
-+#define AW87XXX_PID_60_EN_POWER_MT_BITS_LEN (1)
-+#define AW87XXX_PID_60_EN_POWER_MT_MASK \
-+ (~(((1<<AW87XXX_PID_60_EN_POWER_MT_BITS_LEN)-1) << AW87XXX_PID_60_EN_POWER_MT_START_BIT))
-+
-+#define AW87XXX_PID_60_EN_POWER_MT_DISABLE (0)
-+#define AW87XXX_PID_60_EN_POWER_MT_DISABLE_VALUE \
-+ (AW87XXX_PID_60_EN_POWER_MT_DISABLE << AW87XXX_PID_60_EN_POWER_MT_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_POWER_MT_ENABLE (1)
-+#define AW87XXX_PID_60_EN_POWER_MT_ENABLE_VALUE \
-+ (AW87XXX_PID_60_EN_POWER_MT_ENABLE << AW87XXX_PID_60_EN_POWER_MT_START_BIT)
-+
-+#define AW87XXX_PID_60_EN_POWER_MT_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_EN_POWER_MT_DEFAULT \
-+ (AW87XXX_PID_60_EN_POWER_MT_DEFAULT_VALUE << AW87XXX_PID_60_EN_POWER_MT_START_BIT)
-+
-+/* TEST_DIGITAL_CTRL bit 4:0 (TEST_CON 0x7B) */
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT (0)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BITS_LEN (5)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_MASK \
-+ (~(((1<<AW87XXX_PID_60_TEST_DIGITAL_CTRL_BITS_LEN)-1) << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT))
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTOVPS (0)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTOVPS_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTOVPS << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTOVP2 (1)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTOVP2_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTOVP2 << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTHNMOS (2)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTHNMOS_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTHNMOS << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTLNMOS (3)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTLNMOS_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTLNMOS << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTPEAK (4)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTPEAK_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTPEAK << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTRSQ (5)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTRSQ_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTRSQ << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTBURST (6)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTBURST_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTBURST << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTSSFINISH (7)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTSSFINISH_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTSSFINISH << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTSCP (8)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTSCP_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTSCP << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTENCLAMP (9)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTENCLAMP_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTENCLAMP << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTNCD (10)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTNCD_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_BSTNCD << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_ENSYNC (11)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_ENSYNC_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_ENSYNC << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_ENOTA (12)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_ENOTA_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_ENOTA << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_NGDET (13)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_NGDET_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_NGDET << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_HNGTN (14)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_HNGTN_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_HNGTN << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_LNGTN (15)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_LNGTN_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_LNGTN << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_GATESENSEN (16)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_GATESENSEN_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_GATESENSEN << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_HNGTP (17)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_HNGTP_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_HNGTP << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_LNGTP (18)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_LNGTP_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_LNGTP << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_GATESENSEP (19)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_GATESENSEP_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_GATESENSEP << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_ADPBOOST (20)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_ADPBOOST_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_ADPBOOST << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_POVTHBELOW0ABOVE (21)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_POVTHBELOW0ABOVE_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_POVTHBELOW0ABOVE << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_POVTHBELOW3ABOVE (22)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_POVTHBELOW3ABOVE_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_POVTHBELOW3ABOVE << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_AMPOC (23)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_AMPOC_VALUE \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_AMPOC << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_TEST_DIGITAL_CTRL_DEFAULT \
-+ (AW87XXX_PID_60_TEST_DIGITAL_CTRL_DEFAULT_VALUE << AW87XXX_PID_60_TEST_DIGITAL_CTRL_START_BIT)
-+
-+/* default value of TEST_CON (0x7B) */
-+/* #define AW87XXX_PID_60_TEST_CON_DEFAULT (0x00) */
-+
-+/* ENCR (0x7C) detail */
-+/* TEST_REG_ENCRY bit 7:6 (ENCR 0x7C) */
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT (6)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_BITS_LEN (2)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_MASK \
-+ (~(((1<<AW87XXX_PID_60_TEST_REG_ENCRY_BITS_LEN)-1) << AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT))
-+
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE0 (0)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE0_VALUE \
-+ (AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE0 << AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE1 (1)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE1_VALUE \
-+ (AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE1 << AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE2 (2)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE2_VALUE \
-+ (AW87XXX_PID_60_TEST_REG_ENCRY_CANNOT_WRITE2 << AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT)
-+
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CAN_BE_WRITE (3)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_CAN_BE_WRITE_VALUE \
-+ (AW87XXX_PID_60_TEST_REG_ENCRY_CAN_BE_WRITE << AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT)
-+/*
-+Fix me here:
-+reg_addr:0x7C, reg_name:ENCR, field_name:TEST_REG_ENCRY, content:Encryption bits for test registers(78h~7Ch) , when0x7D=7a & test_Reg_Encry=11
-+maybe need to fix manually
-+*/
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_DEFAULT_VALUE (0x0)
-+#define AW87XXX_PID_60_TEST_REG_ENCRY_DEFAULT \
-+ (AW87XXX_PID_60_TEST_REG_ENCRY_DEFAULT_VALUE << AW87XXX_PID_60_TEST_REG_ENCRY_START_BIT)
-+
-+/* PRODUCT_REG_ENCRY bit 5:0 (ENCR 0x7C) */
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT (0)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_BITS_LEN (6)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_MASK \
-+ (~(((1<<AW87XXX_PID_60_PRODUCT_REG_ENCRY_BITS_LEN)-1) << AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT))
-+
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87560 (1)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87560_VALUE \
-+ (AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87560 << AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT)
-+
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87561 (2)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87561_VALUE \
-+ (AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87561 << AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT)
-+
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87562 (4)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87562_VALUE \
-+ (AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87562 << AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT)
-+
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87501 (8)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87501_VALUE \
-+ (AW87XXX_PID_60_PRODUCT_REG_ENCRY_AW87501 << AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT)
-+/*
-+Fix me here:
-+reg_addr:0x7C, reg_name:ENCR, field_name:PRODUCT_REG_ENCRY, content:Production encryption register (when0x7D=7a & test_Reg_Encry=11 ??
-+maybe need to fix manually
-+*/
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_DEFAULT_VALUE (0x1)
-+#define AW87XXX_PID_60_PRODUCT_REG_ENCRY_DEFAULT \
-+ (AW87XXX_PID_60_PRODUCT_REG_ENCRY_DEFAULT_VALUE << AW87XXX_PID_60_PRODUCT_REG_ENCRY_START_BIT)
-+
-+/* default value of ENCR (0x7C) */
-+/* #define AW87XXX_PID_60_ENCR_DEFAULT (0x01) */
-+
-+/* detail information of registers end */
-+
-+#endif /* #ifndef __AW87XXX_PID_60_REG_H__ */
-\ No newline at end of file
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_76_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_76_reg.h
-new file mode 100644
-index 000000000..00af86e5d
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_76_reg.h
-@@ -0,0 +1,1205 @@
-+#ifndef __AW87XXX_PID_76_REG_H__
-+#define __AW87XXX_PID_76_REG_H__
-+
-+/* registers list */
-+#define AW87XXX_PID_76_ID_REG (0x00)
-+#define AW87XXX_PID_76_SYSCTRL_REG (0x01)
-+#define AW87XXX_PID_76_MDCTRL_REG (0x02)
-+#define AW87XXX_PID_76_CPOVP_REG (0x03)
-+#define AW87XXX_PID_76_CPP_REG (0x04)
-+#define AW87XXX_PID_76_PAG_REG (0x05)
-+#define AW87XXX_PID_76_AGC3P_REG (0x06)
-+#define AW87XXX_PID_76_AGC3PA_REG (0x07)
-+#define AW87XXX_PID_76_AGC2P_REG (0x08)
-+#define AW87XXX_PID_76_AGC2PA_REG (0x09)
-+#define AW87XXX_PID_76_AGC1PA_REG (0x0A)
-+#define AW87XXX_PID_76_SYSST_REG (0x59)
-+#define AW87XXX_PID_76_SYSINT_REG (0x60)
-+#define AW87XXX_PID_76_DFT_SYSCTRL_REG (0x61)
-+#define AW87XXX_PID_76_DFT_MDCTRL_REG (0x62)
-+#define AW87XXX_PID_76_DFT_CPADP_REG (0x63)
-+#define AW87XXX_PID_76_DFT_AGCPA_REG (0x64)
-+#define AW87XXX_PID_76_DFT_POFR_REG (0x65)
-+#define AW87XXX_PID_76_DFT_OC_REG (0x66)
-+#define AW87XXX_PID_76_DFT_ADP1_REG (0x67)
-+#define AW87XXX_PID_76_DFT_REF_REG (0x68)
-+#define AW87XXX_PID_76_DFT_LDO_REG (0x69)
-+#define AW87XXX_PID_76_ADP1_REG (0x70)
-+#define AW87XXX_PID_76_ADP2_REG (0x71)
-+#define AW87XXX_PID_76_NG1_REG (0x72)
-+#define AW87XXX_PID_76_NG2_REG (0x73)
-+#define AW87XXX_PID_76_NG3_REG (0x74)
-+#define AW87XXX_PID_76_CP_REG (0x75)
-+#define AW87XXX_PID_76_AB_REG (0x76)
-+#define AW87XXX_PID_76_TEST_REG (0x77)
-+#define AW87XXX_PID_76_ENCR_REG (0x78)
-+#define AW87XXX_PID_76_DFT_ADP1_CHECK (0x04)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_76_softrst_access[2] = {0x00, 0xaa};
-+
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_76_REG_MAX (0x79)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_76_reg_access[AW87XXX_PID_76_REG_MAX] = {
-+ [AW87XXX_PID_76_ID_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_76_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_MDCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_CPOVP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_CPP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_PAG_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_AGC3P_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_AGC3PA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_AGC2P_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_AGC2PA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_AGC1PA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_SYSST_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_76_SYSINT_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_76_DFT_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_MDCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_CPADP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_AGCPA_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_POFR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_OC_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_ADP1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_REF_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_DFT_LDO_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_ADP1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_ADP2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_NG1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_NG2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_NG3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_CP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_AB_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_TEST_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_76_ENCR_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+};
-+
-+/* detail information of registers begin */
-+/* ID (0x00) detail */
-+/* IDCODE bit 7:0 (ID 0x00) */
-+#define AW87XXX_PID_76_IDCODE_START_BIT (0)
-+#define AW87XXX_PID_76_IDCODE_BITS_LEN (8)
-+#define AW87XXX_PID_76_IDCODE_MASK \
-+ (~(((1<<AW87XXX_PID_76_IDCODE_BITS_LEN)-1) << AW87XXX_PID_76_IDCODE_START_BIT))
-+
-+#define AW87XXX_PID_76_IDCODE_DEFAULT_VALUE (0x76)
-+#define AW87XXX_PID_76_IDCODE_DEFAULT \
-+ (AW87XXX_PID_76_IDCODE_DEFAULT_VALUE << AW87XXX_PID_76_IDCODE_START_BIT)
-+
-+/* default value of ID (0x00) */
-+/* #define AW87XXX_PID_76_ID_DEFAULT (0x76) */
-+
-+/* SYSCTRL (0x01) detail */
-+/* EN_PA bit 2 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_76_EN_PA_START_BIT (2)
-+#define AW87XXX_PID_76_EN_PA_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_PA_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_PA_BITS_LEN)-1) << AW87XXX_PID_76_EN_PA_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_PA_DISABLE (0)
-+#define AW87XXX_PID_76_EN_PA_DISABLE_VALUE \
-+ (AW87XXX_PID_76_EN_PA_DISABLE << AW87XXX_PID_76_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_PA_ENABLE_DEPENDS_ON_EN_AB (1)
-+#define AW87XXX_PID_76_EN_PA_ENABLE_DEPENDS_ON_EN_AB_VALUE \
-+ (AW87XXX_PID_76_EN_PA_ENABLE_DEPENDS_ON_EN_AB << AW87XXX_PID_76_EN_PA_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_PA_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_EN_PA_DEFAULT \
-+ (AW87XXX_PID_76_EN_PA_DEFAULT_VALUE << AW87XXX_PID_76_EN_PA_START_BIT)
-+
-+/* EN_CP bit 1 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_76_EN_CP_START_BIT (1)
-+#define AW87XXX_PID_76_EN_CP_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_CP_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_CP_BITS_LEN)-1) << AW87XXX_PID_76_EN_CP_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_CP_DISABLE_PVDD0 (0)
-+#define AW87XXX_PID_76_EN_CP_DISABLE_PVDD0_VALUE \
-+ (AW87XXX_PID_76_EN_CP_DISABLE_PVDD0 << AW87XXX_PID_76_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_CP_ENABLE_DEPENDS_ON_EN_2X (1)
-+#define AW87XXX_PID_76_EN_CP_ENABLE_DEPENDS_ON_EN_2X_VALUE \
-+ (AW87XXX_PID_76_EN_CP_ENABLE_DEPENDS_ON_EN_2X << AW87XXX_PID_76_EN_CP_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_CP_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_EN_CP_DEFAULT \
-+ (AW87XXX_PID_76_EN_CP_DEFAULT_VALUE << AW87XXX_PID_76_EN_CP_START_BIT)
-+
-+/* PU_CPPA bit 0 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_76_PU_CPPA_START_BIT (0)
-+#define AW87XXX_PID_76_PU_CPPA_BITS_LEN (1)
-+#define AW87XXX_PID_76_PU_CPPA_MASK \
-+ (~(((1<<AW87XXX_PID_76_PU_CPPA_BITS_LEN)-1) << AW87XXX_PID_76_PU_CPPA_START_BIT))
-+
-+#define AW87XXX_PID_76_PU_CPPA_POWERMINUS_DOWN (0)
-+#define AW87XXX_PID_76_PU_CPPA_POWERMINUS_DOWN_VALUE \
-+ (AW87XXX_PID_76_PU_CPPA_POWERMINUS_DOWN << AW87XXX_PID_76_PU_CPPA_START_BIT)
-+
-+#define AW87XXX_PID_76_PU_CPPA_POWERMINUS_UP (1)
-+#define AW87XXX_PID_76_PU_CPPA_POWERMINUS_UP_VALUE \
-+ (AW87XXX_PID_76_PU_CPPA_POWERMINUS_UP << AW87XXX_PID_76_PU_CPPA_START_BIT)
-+
-+#define AW87XXX_PID_76_PU_CPPA_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_PU_CPPA_DEFAULT \
-+ (AW87XXX_PID_76_PU_CPPA_DEFAULT_VALUE << AW87XXX_PID_76_PU_CPPA_START_BIT)
-+
-+/* default value of SYSCTRL (0x01) */
-+/* #define AW87XXX_PID_76_SYSCTRL_DEFAULT (0x06) */
-+
-+/* MDCTRL (0x02) detail */
-+/* EN_ADAP bit 4 (MDCTRL 0x02) */
-+#define AW87XXX_PID_76_EN_ADAP_START_BIT (4)
-+#define AW87XXX_PID_76_EN_ADAP_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_ADAP_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_ADAP_BITS_LEN)-1) << AW87XXX_PID_76_EN_ADAP_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_ADAP_DISABLEDEFAULT (0)
-+#define AW87XXX_PID_76_EN_ADAP_DISABLEDEFAULT_VALUE \
-+ (AW87XXX_PID_76_EN_ADAP_DISABLEDEFAULT << AW87XXX_PID_76_EN_ADAP_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_ADAP_ENABLE (1)
-+#define AW87XXX_PID_76_EN_ADAP_ENABLE_VALUE \
-+ (AW87XXX_PID_76_EN_ADAP_ENABLE << AW87XXX_PID_76_EN_ADAP_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_ADAP_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_EN_ADAP_DEFAULT \
-+ (AW87XXX_PID_76_EN_ADAP_DEFAULT_VALUE << AW87XXX_PID_76_EN_ADAP_START_BIT)
-+
-+/* EN_2X bit 3 (MDCTRL 0x02) */
-+#define AW87XXX_PID_76_EN_2X_START_BIT (3)
-+#define AW87XXX_PID_76_EN_2X_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_2X_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_2X_BITS_LEN)-1) << AW87XXX_PID_76_EN_2X_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_2X_DISABLE (0)
-+#define AW87XXX_PID_76_EN_2X_DISABLE_VALUE \
-+ (AW87XXX_PID_76_EN_2X_DISABLE << AW87XXX_PID_76_EN_2X_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_2X_ENABLE (1)
-+#define AW87XXX_PID_76_EN_2X_ENABLE_VALUE \
-+ (AW87XXX_PID_76_EN_2X_ENABLE << AW87XXX_PID_76_EN_2X_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_2X_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_EN_2X_DEFAULT \
-+ (AW87XXX_PID_76_EN_2X_DEFAULT_VALUE << AW87XXX_PID_76_EN_2X_START_BIT)
-+
-+/* EN_SPK bit 2 (MDCTRL 0x02) */
-+#define AW87XXX_PID_76_EN_SPK_START_BIT (2)
-+#define AW87XXX_PID_76_EN_SPK_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_SPK_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_SPK_BITS_LEN)-1) << AW87XXX_PID_76_EN_SPK_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_SPK_DISABLE (0)
-+#define AW87XXX_PID_76_EN_SPK_DISABLE_VALUE \
-+ (AW87XXX_PID_76_EN_SPK_DISABLE << AW87XXX_PID_76_EN_SPK_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_SPK_ENABLE (1)
-+#define AW87XXX_PID_76_EN_SPK_ENABLE_VALUE \
-+ (AW87XXX_PID_76_EN_SPK_ENABLE << AW87XXX_PID_76_EN_SPK_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_SPK_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_EN_SPK_DEFAULT \
-+ (AW87XXX_PID_76_EN_SPK_DEFAULT_VALUE << AW87XXX_PID_76_EN_SPK_START_BIT)
-+
-+/* EN_LG bit 1 (MDCTRL 0x02) */
-+#define AW87XXX_PID_76_EN_LG_START_BIT (1)
-+#define AW87XXX_PID_76_EN_LG_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_LG_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_LG_BITS_LEN)-1) << AW87XXX_PID_76_EN_LG_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_LG_DISABLE (0)
-+#define AW87XXX_PID_76_EN_LG_DISABLE_VALUE \
-+ (AW87XXX_PID_76_EN_LG_DISABLE << AW87XXX_PID_76_EN_LG_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_LG_ENABLE (1)
-+#define AW87XXX_PID_76_EN_LG_ENABLE_VALUE \
-+ (AW87XXX_PID_76_EN_LG_ENABLE << AW87XXX_PID_76_EN_LG_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_LG_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_EN_LG_DEFAULT \
-+ (AW87XXX_PID_76_EN_LG_DEFAULT_VALUE << AW87XXX_PID_76_EN_LG_START_BIT)
-+
-+/* EN_AB bit 0 (MDCTRL 0x02) */
-+#define AW87XXX_PID_76_EN_AB_START_BIT (0)
-+#define AW87XXX_PID_76_EN_AB_BITS_LEN (1)
-+#define AW87XXX_PID_76_EN_AB_MASK \
-+ (~(((1<<AW87XXX_PID_76_EN_AB_BITS_LEN)-1) << AW87XXX_PID_76_EN_AB_START_BIT))
-+
-+#define AW87XXX_PID_76_EN_AB_DISABLE (0)
-+#define AW87XXX_PID_76_EN_AB_DISABLE_VALUE \
-+ (AW87XXX_PID_76_EN_AB_DISABLE << AW87XXX_PID_76_EN_AB_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_AB_ENABLE (1)
-+#define AW87XXX_PID_76_EN_AB_ENABLE_VALUE \
-+ (AW87XXX_PID_76_EN_AB_ENABLE << AW87XXX_PID_76_EN_AB_START_BIT)
-+
-+#define AW87XXX_PID_76_EN_AB_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_EN_AB_DEFAULT \
-+ (AW87XXX_PID_76_EN_AB_DEFAULT_VALUE << AW87XXX_PID_76_EN_AB_START_BIT)
-+
-+/* default value of MDCTRL (0x02) */
-+/* #define AW87XXX_PID_76_MDCTRL_DEFAULT (0x0C) */
-+
-+/* CPOVP (0x03) detail */
-+/* CP_OVP1 bit 3:0 (CPOVP 0x03) */
-+#define AW87XXX_PID_76_CP_OVP1_START_BIT (0)
-+#define AW87XXX_PID_76_CP_OVP1_BITS_LEN (4)
-+#define AW87XXX_PID_76_CP_OVP1_MASK \
-+ (~(((1<<AW87XXX_PID_76_CP_OVP1_BITS_LEN)-1) << AW87XXX_PID_76_CP_OVP1_START_BIT))
-+
-+#define AW87XXX_PID_76_CP_OVP1_6P0V (0)
-+#define AW87XXX_PID_76_CP_OVP1_6P0V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_6P0V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_6P25V (1)
-+#define AW87XXX_PID_76_CP_OVP1_6P25V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_6P25V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_6P5V (2)
-+#define AW87XXX_PID_76_CP_OVP1_6P5V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_6P5V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_6P75V (3)
-+#define AW87XXX_PID_76_CP_OVP1_6P75V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_6P75V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_7V (4)
-+#define AW87XXX_PID_76_CP_OVP1_7V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_7V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_7P25V (5)
-+#define AW87XXX_PID_76_CP_OVP1_7P25V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_7P25V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_7P5V (6)
-+#define AW87XXX_PID_76_CP_OVP1_7P5V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_7P5V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_7P75V (7)
-+#define AW87XXX_PID_76_CP_OVP1_7P75V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_7P75V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_8V (8)
-+#define AW87XXX_PID_76_CP_OVP1_8V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_8V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_8P25V (9)
-+#define AW87XXX_PID_76_CP_OVP1_8P25V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_8P25V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_8P5V (10)
-+#define AW87XXX_PID_76_CP_OVP1_8P5V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_8P5V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_8P75V (11)
-+#define AW87XXX_PID_76_CP_OVP1_8P75V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_8P75V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_9V (12)
-+#define AW87XXX_PID_76_CP_OVP1_9V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_9V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_9P25V (13)
-+#define AW87XXX_PID_76_CP_OVP1_9P25V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_9P25V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_9P5V (14)
-+#define AW87XXX_PID_76_CP_OVP1_9P5V_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_9P5V << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_RESERVEDP_IF_SET_TURNS_TO_DEFAULTP (15)
-+#define AW87XXX_PID_76_CP_OVP1_RESERVEDP_IF_SET_TURNS_TO_DEFAULTP_VALUE \
-+ (AW87XXX_PID_76_CP_OVP1_RESERVEDP_IF_SET_TURNS_TO_DEFAULTP << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_OVP1_DEFAULT_VALUE (8)
-+#define AW87XXX_PID_76_CP_OVP1_DEFAULT \
-+ (AW87XXX_PID_76_CP_OVP1_DEFAULT_VALUE << AW87XXX_PID_76_CP_OVP1_START_BIT)
-+
-+/* default value of CPOVP (0x03) */
-+/* #define AW87XXX_PID_76_CPOVP_DEFAULT (0x08) */
-+
-+/* CPP (0x04) detail */
-+/* CP_PEAK_CUR bit 4:2 (CPP 0x04) */
-+#define AW87XXX_PID_76_CP_PEAK_CUR_START_BIT (2)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_BITS_LEN (3)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_MASK \
-+ (~(((1<<AW87XXX_PID_76_CP_PEAK_CUR_BITS_LEN)-1) << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT))
-+
-+#define AW87XXX_PID_76_CP_PEAK_CUR_2A (0)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_2A_VALUE \
-+ (AW87XXX_PID_76_CP_PEAK_CUR_2A << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_PEAK_CUR_2P5A (1)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_2P5A_VALUE \
-+ (AW87XXX_PID_76_CP_PEAK_CUR_2P5A << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_PEAK_CUR_3A (2)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_3A_VALUE \
-+ (AW87XXX_PID_76_CP_PEAK_CUR_3A << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_PEAK_CUR_3P5A (3)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_3P5A_VALUE \
-+ (AW87XXX_PID_76_CP_PEAK_CUR_3P5A << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_PEAK_CUR_4A (4)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_4A_VALUE \
-+ (AW87XXX_PID_76_CP_PEAK_CUR_4A << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_PEAK_CUR_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_CP_PEAK_CUR_DEFAULT \
-+ (AW87XXX_PID_76_CP_PEAK_CUR_DEFAULT_VALUE << AW87XXX_PID_76_CP_PEAK_CUR_START_BIT)
-+
-+/* CP_SOFT_CUR bit 1:0 (CPP 0x04) */
-+#define AW87XXX_PID_76_CP_SOFT_CUR_START_BIT (0)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_BITS_LEN (2)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_MASK \
-+ (~(((1<<AW87XXX_PID_76_CP_SOFT_CUR_BITS_LEN)-1) << AW87XXX_PID_76_CP_SOFT_CUR_START_BIT))
-+
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P2A (0)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P2A_VALUE \
-+ (AW87XXX_PID_76_CP_SOFT_CUR_0P2A << AW87XXX_PID_76_CP_SOFT_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P3A (1)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P3A_VALUE \
-+ (AW87XXX_PID_76_CP_SOFT_CUR_0P3A << AW87XXX_PID_76_CP_SOFT_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P4A (2)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P4A_VALUE \
-+ (AW87XXX_PID_76_CP_SOFT_CUR_0P4A << AW87XXX_PID_76_CP_SOFT_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P5A (3)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_0P5A_VALUE \
-+ (AW87XXX_PID_76_CP_SOFT_CUR_0P5A << AW87XXX_PID_76_CP_SOFT_CUR_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SOFT_CUR_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_CP_SOFT_CUR_DEFAULT \
-+ (AW87XXX_PID_76_CP_SOFT_CUR_DEFAULT_VALUE << AW87XXX_PID_76_CP_SOFT_CUR_START_BIT)
-+
-+/* default value of CPP (0x04) */
-+/* #define AW87XXX_PID_76_CPP_DEFAULT (0x05) */
-+
-+/* PAG (0x05) detail */
-+/* GAIN bit 4:0 (PAG 0x05) */
-+#define AW87XXX_PID_76_GAIN_START_BIT (0)
-+#define AW87XXX_PID_76_GAIN_BITS_LEN (5)
-+#define AW87XXX_PID_76_GAIN_MASK \
-+ (~(((1<<AW87XXX_PID_76_GAIN_BITS_LEN)-1) << AW87XXX_PID_76_GAIN_START_BIT))
-+
-+#define AW87XXX_PID_76_GAIN_0DB (0)
-+#define AW87XXX_PID_76_GAIN_0DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_0DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_1P5DB (1)
-+#define AW87XXX_PID_76_GAIN_1P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_1P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_3DB (2)
-+#define AW87XXX_PID_76_GAIN_3DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_3DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_4P5DB (3)
-+#define AW87XXX_PID_76_GAIN_4P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_4P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_6DB (4)
-+#define AW87XXX_PID_76_GAIN_6DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_6DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_7P5DB (5)
-+#define AW87XXX_PID_76_GAIN_7P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_7P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_9DB (6)
-+#define AW87XXX_PID_76_GAIN_9DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_9DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_10P5DB (7)
-+#define AW87XXX_PID_76_GAIN_10P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_10P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_12DB (8)
-+#define AW87XXX_PID_76_GAIN_12DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_12DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_13P5DB (9)
-+#define AW87XXX_PID_76_GAIN_13P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_13P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_15DB (10)
-+#define AW87XXX_PID_76_GAIN_15DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_15DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_16P5DB (11)
-+#define AW87XXX_PID_76_GAIN_16P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_16P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_18DB (12)
-+#define AW87XXX_PID_76_GAIN_18DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_18DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_19P5DB (13)
-+#define AW87XXX_PID_76_GAIN_19P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_19P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_21DB (14)
-+#define AW87XXX_PID_76_GAIN_21DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_21DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_22P5DB (15)
-+#define AW87XXX_PID_76_GAIN_22P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_22P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_24DB (16)
-+#define AW87XXX_PID_76_GAIN_24DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_24DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_25P5DB (17)
-+#define AW87XXX_PID_76_GAIN_25P5DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_25P5DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_27DB (18)
-+#define AW87XXX_PID_76_GAIN_27DB_VALUE \
-+ (AW87XXX_PID_76_GAIN_27DB << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+#define AW87XXX_PID_76_GAIN_DEFAULT_VALUE (12)
-+#define AW87XXX_PID_76_GAIN_DEFAULT \
-+ (AW87XXX_PID_76_GAIN_DEFAULT_VALUE << AW87XXX_PID_76_GAIN_START_BIT)
-+
-+/* default value of PAG (0x05) */
-+/* #define AW87XXX_PID_76_PAG_DEFAULT (0x0C) */
-+
-+/* AGC3P (0x06) detail */
-+/* AGC3PO bit 3:0 (AGC3P 0x06) */
-+#define AW87XXX_PID_76_AGC3PO_START_BIT (0)
-+#define AW87XXX_PID_76_AGC3PO_BITS_LEN (4)
-+#define AW87XXX_PID_76_AGC3PO_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC3PO_BITS_LEN)-1) << AW87XXX_PID_76_AGC3PO_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC3PO_0P2W4 (0)
-+#define AW87XXX_PID_76_AGC3PO_0P2W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_0P2W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_0P4W4 (1)
-+#define AW87XXX_PID_76_AGC3PO_0P4W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_0P4W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_0P6W4 (2)
-+#define AW87XXX_PID_76_AGC3PO_0P6W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_0P6W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_0P8W4 (3)
-+#define AW87XXX_PID_76_AGC3PO_0P8W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_0P8W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_1P0W4 (4)
-+#define AW87XXX_PID_76_AGC3PO_1P0W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_1P0W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_1P2W4 (5)
-+#define AW87XXX_PID_76_AGC3PO_1P2W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_1P2W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_1P4W4 (6)
-+#define AW87XXX_PID_76_AGC3PO_1P4W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_1P4W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_1P6W4 (7)
-+#define AW87XXX_PID_76_AGC3PO_1P6W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_1P6W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_1P8W4 (8)
-+#define AW87XXX_PID_76_AGC3PO_1P8W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_1P8W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_2P0W4 (9)
-+#define AW87XXX_PID_76_AGC3PO_2P0W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_2P0W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_2P2W4 (10)
-+#define AW87XXX_PID_76_AGC3PO_2P2W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_2P2W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_2P4W4 (11)
-+#define AW87XXX_PID_76_AGC3PO_2P4W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_2P4W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_2P6W4 (12)
-+#define AW87XXX_PID_76_AGC3PO_2P6W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_2P6W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_2P8W4 (13)
-+#define AW87XXX_PID_76_AGC3PO_2P8W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_2P8W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_3P0W4 (14)
-+#define AW87XXX_PID_76_AGC3PO_3P0W4_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_3P0W4 << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_AGC3_OFF (15)
-+#define AW87XXX_PID_76_AGC3PO_AGC3_OFF_VALUE \
-+ (AW87XXX_PID_76_AGC3PO_AGC3_OFF << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3PO_DEFAULT_VALUE (7)
-+#define AW87XXX_PID_76_AGC3PO_DEFAULT \
-+ (AW87XXX_PID_76_AGC3PO_DEFAULT_VALUE << AW87XXX_PID_76_AGC3PO_START_BIT)
-+
-+/* default value of AGC3P (0x06) */
-+/* #define AW87XXX_PID_76_AGC3P_DEFAULT (0x07) */
-+
-+/* AGC3PA (0x07) detail */
-+/* AGC3RT bit 7:5 (AGC3PA 0x07) */
-+#define AW87XXX_PID_76_AGC3RT_START_BIT (5)
-+#define AW87XXX_PID_76_AGC3RT_BITS_LEN (3)
-+#define AW87XXX_PID_76_AGC3RT_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC3RT_BITS_LEN)-1) << AW87XXX_PID_76_AGC3RT_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC3RT_5P12MSDB (0)
-+#define AW87XXX_PID_76_AGC3RT_5P12MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_5P12MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_10P24MSDB (1)
-+#define AW87XXX_PID_76_AGC3RT_10P24MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_10P24MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_20P48MSDB (2)
-+#define AW87XXX_PID_76_AGC3RT_20P48MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_20P48MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_41MSDB (3)
-+#define AW87XXX_PID_76_AGC3RT_41MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_41MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_82MSDB (4)
-+#define AW87XXX_PID_76_AGC3RT_82MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_82MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_164MSDB (5)
-+#define AW87XXX_PID_76_AGC3RT_164MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_164MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_328MSDB (6)
-+#define AW87XXX_PID_76_AGC3RT_328MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_328MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_656MSDB (7)
-+#define AW87XXX_PID_76_AGC3RT_656MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3RT_656MSDB << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3RT_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_76_AGC3RT_DEFAULT \
-+ (AW87XXX_PID_76_AGC3RT_DEFAULT_VALUE << AW87XXX_PID_76_AGC3RT_START_BIT)
-+
-+/* AGC3AT bit 4:2 (AGC3PA 0x07) */
-+#define AW87XXX_PID_76_AGC3AT_START_BIT (2)
-+#define AW87XXX_PID_76_AGC3AT_BITS_LEN (3)
-+#define AW87XXX_PID_76_AGC3AT_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC3AT_BITS_LEN)-1) << AW87XXX_PID_76_AGC3AT_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC3AT_1P28MSDB (0)
-+#define AW87XXX_PID_76_AGC3AT_1P28MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_1P28MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_2P56MSDB (1)
-+#define AW87XXX_PID_76_AGC3AT_2P56MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_2P56MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_10P24MSDB (2)
-+#define AW87XXX_PID_76_AGC3AT_10P24MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_10P24MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_41MSDB (3)
-+#define AW87XXX_PID_76_AGC3AT_41MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_41MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_82MSDB (4)
-+#define AW87XXX_PID_76_AGC3AT_82MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_82MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_164MSDB (5)
-+#define AW87XXX_PID_76_AGC3AT_164MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_164MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_328MSDB (6)
-+#define AW87XXX_PID_76_AGC3AT_328MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_328MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_656MSDB (7)
-+#define AW87XXX_PID_76_AGC3AT_656MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3AT_656MSDB << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3AT_DEFAULT_VALUE (3)
-+#define AW87XXX_PID_76_AGC3AT_DEFAULT \
-+ (AW87XXX_PID_76_AGC3AT_DEFAULT_VALUE << AW87XXX_PID_76_AGC3AT_START_BIT)
-+
-+/* AGC3FSAT bit 1:0 (AGC3PA 0x07) */
-+#define AW87XXX_PID_76_AGC3FSAT_START_BIT (0)
-+#define AW87XXX_PID_76_AGC3FSAT_BITS_LEN (2)
-+#define AW87XXX_PID_76_AGC3FSAT_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC3FSAT_BITS_LEN)-1) << AW87XXX_PID_76_AGC3FSAT_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC3FSAT_10P24MSDB (0)
-+#define AW87XXX_PID_76_AGC3FSAT_10P24MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3FSAT_10P24MSDB << AW87XXX_PID_76_AGC3FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3FSAT_20P48MSDB (1)
-+#define AW87XXX_PID_76_AGC3FSAT_20P48MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3FSAT_20P48MSDB << AW87XXX_PID_76_AGC3FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3FSAT_41MSDB (2)
-+#define AW87XXX_PID_76_AGC3FSAT_41MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3FSAT_41MSDB << AW87XXX_PID_76_AGC3FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3FSAT_82MSDB (3)
-+#define AW87XXX_PID_76_AGC3FSAT_82MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC3FSAT_82MSDB << AW87XXX_PID_76_AGC3FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC3FSAT_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_76_AGC3FSAT_DEFAULT \
-+ (AW87XXX_PID_76_AGC3FSAT_DEFAULT_VALUE << AW87XXX_PID_76_AGC3FSAT_START_BIT)
-+
-+/* default value of AGC3PA (0x07) */
-+/* #define AW87XXX_PID_76_AGC3PA_DEFAULT (0x4E) */
-+
-+/* AGC2P (0x08) detail */
-+/* AGC2PO bit 3:0 (AGC2P 0x08) */
-+#define AW87XXX_PID_76_AGC2PO_START_BIT (0)
-+#define AW87XXX_PID_76_AGC2PO_BITS_LEN (4)
-+#define AW87XXX_PID_76_AGC2PO_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC2PO_BITS_LEN)-1) << AW87XXX_PID_76_AGC2PO_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC2PO_0P8W4 (0)
-+#define AW87XXX_PID_76_AGC2PO_0P8W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_0P8W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_1P2W4 (1)
-+#define AW87XXX_PID_76_AGC2PO_1P2W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_1P2W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_1P6W4 (2)
-+#define AW87XXX_PID_76_AGC2PO_1P6W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_1P6W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_2P0W4 (3)
-+#define AW87XXX_PID_76_AGC2PO_2P0W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_2P0W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_2P4W4 (4)
-+#define AW87XXX_PID_76_AGC2PO_2P4W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_2P4W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_2P8W4 (5)
-+#define AW87XXX_PID_76_AGC2PO_2P8W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_2P8W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_3P2W4 (6)
-+#define AW87XXX_PID_76_AGC2PO_3P2W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_3P2W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_3P6W4 (7)
-+#define AW87XXX_PID_76_AGC2PO_3P6W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_3P6W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_4P0W4 (8)
-+#define AW87XXX_PID_76_AGC2PO_4P0W4_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_4P0W4 << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_AGC2_OFF (9)
-+#define AW87XXX_PID_76_AGC2PO_AGC2_OFF_VALUE \
-+ (AW87XXX_PID_76_AGC2PO_AGC2_OFF << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2PO_DEFAULT_VALUE (6)
-+#define AW87XXX_PID_76_AGC2PO_DEFAULT \
-+ (AW87XXX_PID_76_AGC2PO_DEFAULT_VALUE << AW87XXX_PID_76_AGC2PO_START_BIT)
-+
-+/* default value of AGC2P (0x08) */
-+/* #define AW87XXX_PID_76_AGC2P_DEFAULT (0x06) */
-+
-+/* AGC2PA (0x09) detail */
-+/* AGC2AT bit 4:2 (AGC2PA 0x09) */
-+#define AW87XXX_PID_76_AGC2AT_START_BIT (2)
-+#define AW87XXX_PID_76_AGC2AT_BITS_LEN (3)
-+#define AW87XXX_PID_76_AGC2AT_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC2AT_BITS_LEN)-1) << AW87XXX_PID_76_AGC2AT_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC2AT_0P16MSDB (0)
-+#define AW87XXX_PID_76_AGC2AT_0P16MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_0P16MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_0P32MSDB (1)
-+#define AW87XXX_PID_76_AGC2AT_0P32MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_0P32MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_0P64MSDB (2)
-+#define AW87XXX_PID_76_AGC2AT_0P64MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_0P64MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_2P56MSDB (3)
-+#define AW87XXX_PID_76_AGC2AT_2P56MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_2P56MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_10P24MSDB (4)
-+#define AW87XXX_PID_76_AGC2AT_10P24MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_10P24MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_41MSDB (5)
-+#define AW87XXX_PID_76_AGC2AT_41MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_41MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_82MSDB (6)
-+#define AW87XXX_PID_76_AGC2AT_82MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_82MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_164MSDB (7)
-+#define AW87XXX_PID_76_AGC2AT_164MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2AT_164MSDB << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2AT_DEFAULT_VALUE (2)
-+#define AW87XXX_PID_76_AGC2AT_DEFAULT \
-+ (AW87XXX_PID_76_AGC2AT_DEFAULT_VALUE << AW87XXX_PID_76_AGC2AT_START_BIT)
-+
-+/* AGC2FSAT bit 1:0 (AGC2PA 0x09) */
-+#define AW87XXX_PID_76_AGC2FSAT_START_BIT (0)
-+#define AW87XXX_PID_76_AGC2FSAT_BITS_LEN (2)
-+#define AW87XXX_PID_76_AGC2FSAT_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC2FSAT_BITS_LEN)-1) << AW87XXX_PID_76_AGC2FSAT_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC2FSAT_0P16MSDB (0)
-+#define AW87XXX_PID_76_AGC2FSAT_0P16MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2FSAT_0P16MSDB << AW87XXX_PID_76_AGC2FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2FSAT_0P64MSDB (1)
-+#define AW87XXX_PID_76_AGC2FSAT_0P64MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2FSAT_0P64MSDB << AW87XXX_PID_76_AGC2FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2FSAT_2P56MSDB (2)
-+#define AW87XXX_PID_76_AGC2FSAT_2P56MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2FSAT_2P56MSDB << AW87XXX_PID_76_AGC2FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2FSAT_10P24MSDB (3)
-+#define AW87XXX_PID_76_AGC2FSAT_10P24MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC2FSAT_10P24MSDB << AW87XXX_PID_76_AGC2FSAT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC2FSAT_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_AGC2FSAT_DEFAULT \
-+ (AW87XXX_PID_76_AGC2FSAT_DEFAULT_VALUE << AW87XXX_PID_76_AGC2FSAT_START_BIT)
-+
-+/* default value of AGC2PA (0x09) */
-+/* #define AW87XXX_PID_76_AGC2PA_DEFAULT (0x08) */
-+
-+/* AGC1PA (0x0A) detail */
-+/* AGC1THVTH bit 6:3 (AGC1PA 0x0A) */
-+#define AW87XXX_PID_76_AGC1THVTH_START_BIT (3)
-+#define AW87XXX_PID_76_AGC1THVTH_BITS_LEN (4)
-+#define AW87XXX_PID_76_AGC1THVTH_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC1THVTH_BITS_LEN)-1) << AW87XXX_PID_76_AGC1THVTH_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC1THVTH_5V (0)
-+#define AW87XXX_PID_76_AGC1THVTH_5V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_5V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_5P2V (1)
-+#define AW87XXX_PID_76_AGC1THVTH_5P2V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_5P2V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_5P4V (2)
-+#define AW87XXX_PID_76_AGC1THVTH_5P4V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_5P4V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_5P6V (3)
-+#define AW87XXX_PID_76_AGC1THVTH_5P6V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_5P6V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_5P8V (4)
-+#define AW87XXX_PID_76_AGC1THVTH_5P8V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_5P8V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_6P0V (5)
-+#define AW87XXX_PID_76_AGC1THVTH_6P0V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_6P0V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_6P2V (6)
-+#define AW87XXX_PID_76_AGC1THVTH_6P2V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_6P2V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_6P4V (7)
-+#define AW87XXX_PID_76_AGC1THVTH_6P4V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_6P4V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_6P6V (8)
-+#define AW87XXX_PID_76_AGC1THVTH_6P6V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_6P6V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_6P8V (9)
-+#define AW87XXX_PID_76_AGC1THVTH_6P8V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_6P8V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_7V (10)
-+#define AW87XXX_PID_76_AGC1THVTH_7V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_7V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_7P2V (11)
-+#define AW87XXX_PID_76_AGC1THVTH_7P2V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_7P2V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_7P4V (12)
-+#define AW87XXX_PID_76_AGC1THVTH_7P4V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_7P4V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_7P6V (13)
-+#define AW87XXX_PID_76_AGC1THVTH_7P6V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_7P6V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_7P8V (14)
-+#define AW87XXX_PID_76_AGC1THVTH_7P8V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_7P8V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_8V (15)
-+#define AW87XXX_PID_76_AGC1THVTH_8V_VALUE \
-+ (AW87XXX_PID_76_AGC1THVTH_8V << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1THVTH_DEFAULT_VALUE (9)
-+#define AW87XXX_PID_76_AGC1THVTH_DEFAULT \
-+ (AW87XXX_PID_76_AGC1THVTH_DEFAULT_VALUE << AW87XXX_PID_76_AGC1THVTH_START_BIT)
-+
-+/* AGC1AT bit 2:1 (AGC1PA 0x0A) */
-+#define AW87XXX_PID_76_AGC1AT_START_BIT (1)
-+#define AW87XXX_PID_76_AGC1AT_BITS_LEN (2)
-+#define AW87XXX_PID_76_AGC1AT_MASK \
-+ (~(((1<<AW87XXX_PID_76_AGC1AT_BITS_LEN)-1) << AW87XXX_PID_76_AGC1AT_START_BIT))
-+
-+#define AW87XXX_PID_76_AGC1AT_0P04MSDB (0)
-+#define AW87XXX_PID_76_AGC1AT_0P04MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC1AT_0P04MSDB << AW87XXX_PID_76_AGC1AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1AT_0P08MSDB (1)
-+#define AW87XXX_PID_76_AGC1AT_0P08MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC1AT_0P08MSDB << AW87XXX_PID_76_AGC1AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1AT_0P16MSDB (2)
-+#define AW87XXX_PID_76_AGC1AT_0P16MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC1AT_0P16MSDB << AW87XXX_PID_76_AGC1AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1AT_0P32MSDB (3)
-+#define AW87XXX_PID_76_AGC1AT_0P32MSDB_VALUE \
-+ (AW87XXX_PID_76_AGC1AT_0P32MSDB << AW87XXX_PID_76_AGC1AT_START_BIT)
-+
-+#define AW87XXX_PID_76_AGC1AT_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_AGC1AT_DEFAULT \
-+ (AW87XXX_PID_76_AGC1AT_DEFAULT_VALUE << AW87XXX_PID_76_AGC1AT_START_BIT)
-+
-+/* PD_AGC1 bit 0 (AGC1PA 0x0A) */
-+#define AW87XXX_PID_76_PD_AGC1_START_BIT (0)
-+#define AW87XXX_PID_76_PD_AGC1_BITS_LEN (1)
-+#define AW87XXX_PID_76_PD_AGC1_MASK \
-+ (~(((1<<AW87XXX_PID_76_PD_AGC1_BITS_LEN)-1) << AW87XXX_PID_76_PD_AGC1_START_BIT))
-+
-+#define AW87XXX_PID_76_PD_AGC1_AGC1_FUNCTION_POWERMINUS_UP (0)
-+#define AW87XXX_PID_76_PD_AGC1_AGC1_FUNCTION_POWERMINUS_UP_VALUE \
-+ (AW87XXX_PID_76_PD_AGC1_AGC1_FUNCTION_POWERMINUS_UP << AW87XXX_PID_76_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_76_PD_AGC1_AGC1_FUNCTION_POWERMINUS_DOWN (1)
-+#define AW87XXX_PID_76_PD_AGC1_AGC1_FUNCTION_POWERMINUS_DOWN_VALUE \
-+ (AW87XXX_PID_76_PD_AGC1_AGC1_FUNCTION_POWERMINUS_DOWN << AW87XXX_PID_76_PD_AGC1_START_BIT)
-+
-+#define AW87XXX_PID_76_PD_AGC1_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_PD_AGC1_DEFAULT \
-+ (AW87XXX_PID_76_PD_AGC1_DEFAULT_VALUE << AW87XXX_PID_76_PD_AGC1_START_BIT)
-+
-+/* default value of AGC1PA (0x0A) */
-+/* #define AW87XXX_PID_76_AGC1PA_DEFAULT (0x4A) */
-+
-+/* SYSST (0x59) detail */
-+/* UVLOS bit 7 (SYSST 0x59) */
-+#define AW87XXX_PID_76_UVLOS_START_BIT (7)
-+#define AW87XXX_PID_76_UVLOS_BITS_LEN (1)
-+#define AW87XXX_PID_76_UVLOS_MASK \
-+ (~(((1<<AW87XXX_PID_76_UVLOS_BITS_LEN)-1) << AW87XXX_PID_76_UVLOS_START_BIT))
-+
-+#define AW87XXX_PID_76_UVLOS_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_76_UVLOS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_76_UVLOS_NORMAL_OPERATION << AW87XXX_PID_76_UVLOS_START_BIT)
-+
-+#define AW87XXX_PID_76_UVLOS_VBAT_UNDER_VOLTAGE (1)
-+#define AW87XXX_PID_76_UVLOS_VBAT_UNDER_VOLTAGE_VALUE \
-+ (AW87XXX_PID_76_UVLOS_VBAT_UNDER_VOLTAGE << AW87XXX_PID_76_UVLOS_START_BIT)
-+
-+#define AW87XXX_PID_76_UVLOS_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_UVLOS_DEFAULT \
-+ (AW87XXX_PID_76_UVLOS_DEFAULT_VALUE << AW87XXX_PID_76_UVLOS_START_BIT)
-+
-+/* OTNS bit 6 (SYSST 0x59) */
-+#define AW87XXX_PID_76_OTNS_START_BIT (6)
-+#define AW87XXX_PID_76_OTNS_BITS_LEN (1)
-+#define AW87XXX_PID_76_OTNS_MASK \
-+ (~(((1<<AW87XXX_PID_76_OTNS_BITS_LEN)-1) << AW87XXX_PID_76_OTNS_START_BIT))
-+
-+#define AW87XXX_PID_76_OTNS_DETECTED (0)
-+#define AW87XXX_PID_76_OTNS_DETECTED_VALUE \
-+ (AW87XXX_PID_76_OTNS_DETECTED << AW87XXX_PID_76_OTNS_START_BIT)
-+
-+#define AW87XXX_PID_76_OTNS_NORMAL_OPERATION (1)
-+#define AW87XXX_PID_76_OTNS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_76_OTNS_NORMAL_OPERATION << AW87XXX_PID_76_OTNS_START_BIT)
-+
-+#define AW87XXX_PID_76_OTNS_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_OTNS_DEFAULT \
-+ (AW87XXX_PID_76_OTNS_DEFAULT_VALUE << AW87XXX_PID_76_OTNS_START_BIT)
-+
-+/* OC_FLAGS bit 5 (SYSST 0x59) */
-+#define AW87XXX_PID_76_OC_FLAGS_START_BIT (5)
-+#define AW87XXX_PID_76_OC_FLAGS_BITS_LEN (1)
-+#define AW87XXX_PID_76_OC_FLAGS_MASK \
-+ (~(((1<<AW87XXX_PID_76_OC_FLAGS_BITS_LEN)-1) << AW87XXX_PID_76_OC_FLAGS_START_BIT))
-+
-+#define AW87XXX_PID_76_OC_FLAGS_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_76_OC_FLAGS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_76_OC_FLAGS_NORMAL_OPERATION << AW87XXX_PID_76_OC_FLAGS_START_BIT)
-+
-+#define AW87XXX_PID_76_OC_FLAGS_DETECTED (1)
-+#define AW87XXX_PID_76_OC_FLAGS_DETECTED_VALUE \
-+ (AW87XXX_PID_76_OC_FLAGS_DETECTED << AW87XXX_PID_76_OC_FLAGS_START_BIT)
-+
-+#define AW87XXX_PID_76_OC_FLAGS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_OC_FLAGS_DEFAULT \
-+ (AW87XXX_PID_76_OC_FLAGS_DEFAULT_VALUE << AW87XXX_PID_76_OC_FLAGS_START_BIT)
-+
-+/* ADAP_CPS bit 4 (SYSST 0x59) */
-+#define AW87XXX_PID_76_ADAP_CPS_START_BIT (4)
-+#define AW87XXX_PID_76_ADAP_CPS_BITS_LEN (1)
-+#define AW87XXX_PID_76_ADAP_CPS_MASK \
-+ (~(((1<<AW87XXX_PID_76_ADAP_CPS_BITS_LEN)-1) << AW87XXX_PID_76_ADAP_CPS_START_BIT))
-+
-+#define AW87XXX_PID_76_ADAP_CPS_1X_MODE (0)
-+#define AW87XXX_PID_76_ADAP_CPS_1X_MODE_VALUE \
-+ (AW87XXX_PID_76_ADAP_CPS_1X_MODE << AW87XXX_PID_76_ADAP_CPS_START_BIT)
-+
-+#define AW87XXX_PID_76_ADAP_CPS_2X_MODE (1)
-+#define AW87XXX_PID_76_ADAP_CPS_2X_MODE_VALUE \
-+ (AW87XXX_PID_76_ADAP_CPS_2X_MODE << AW87XXX_PID_76_ADAP_CPS_START_BIT)
-+
-+#define AW87XXX_PID_76_ADAP_CPS_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_76_ADAP_CPS_DEFAULT \
-+ (AW87XXX_PID_76_ADAP_CPS_DEFAULT_VALUE << AW87XXX_PID_76_ADAP_CPS_START_BIT)
-+
-+/* STARTOKS bit 3 (SYSST 0x59) */
-+#define AW87XXX_PID_76_STARTOKS_START_BIT (3)
-+#define AW87XXX_PID_76_STARTOKS_BITS_LEN (1)
-+#define AW87XXX_PID_76_STARTOKS_MASK \
-+ (~(((1<<AW87XXX_PID_76_STARTOKS_BITS_LEN)-1) << AW87XXX_PID_76_STARTOKS_START_BIT))
-+
-+#define AW87XXX_PID_76_STARTOKS_CP_START_FAIL_DECTECTED (0)
-+#define AW87XXX_PID_76_STARTOKS_CP_START_FAIL_DECTECTED_VALUE \
-+ (AW87XXX_PID_76_STARTOKS_CP_START_FAIL_DECTECTED << AW87XXX_PID_76_STARTOKS_START_BIT)
-+
-+#define AW87XXX_PID_76_STARTOKS_NORMAL_OPERATION (1)
-+#define AW87XXX_PID_76_STARTOKS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_76_STARTOKS_NORMAL_OPERATION << AW87XXX_PID_76_STARTOKS_START_BIT)
-+
-+#define AW87XXX_PID_76_STARTOKS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_STARTOKS_DEFAULT \
-+ (AW87XXX_PID_76_STARTOKS_DEFAULT_VALUE << AW87XXX_PID_76_STARTOKS_START_BIT)
-+
-+/* OVP1S bit 2 (SYSST 0x59) */
-+#define AW87XXX_PID_76_OVP1S_START_BIT (2)
-+#define AW87XXX_PID_76_OVP1S_BITS_LEN (1)
-+#define AW87XXX_PID_76_OVP1S_MASK \
-+ (~(((1<<AW87XXX_PID_76_OVP1S_BITS_LEN)-1) << AW87XXX_PID_76_OVP1S_START_BIT))
-+
-+#define AW87XXX_PID_76_OVP1S_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_76_OVP1S_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_76_OVP1S_NORMAL_OPERATION << AW87XXX_PID_76_OVP1S_START_BIT)
-+
-+#define AW87XXX_PID_76_OVP1S_CP_OVP_DETECTED (1)
-+#define AW87XXX_PID_76_OVP1S_CP_OVP_DETECTED_VALUE \
-+ (AW87XXX_PID_76_OVP1S_CP_OVP_DETECTED << AW87XXX_PID_76_OVP1S_START_BIT)
-+
-+#define AW87XXX_PID_76_OVP1S_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_OVP1S_DEFAULT \
-+ (AW87XXX_PID_76_OVP1S_DEFAULT_VALUE << AW87XXX_PID_76_OVP1S_START_BIT)
-+
-+/* PORNS bit 1 (SYSST 0x59) */
-+#define AW87XXX_PID_76_PORNS_START_BIT (1)
-+#define AW87XXX_PID_76_PORNS_BITS_LEN (1)
-+#define AW87XXX_PID_76_PORNS_MASK \
-+ (~(((1<<AW87XXX_PID_76_PORNS_BITS_LEN)-1) << AW87XXX_PID_76_PORNS_START_BIT))
-+
-+#define AW87XXX_PID_76_PORNS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_PORNS_DEFAULT \
-+ (AW87XXX_PID_76_PORNS_DEFAULT_VALUE << AW87XXX_PID_76_PORNS_START_BIT)
-+
-+/* CP_SHORTS bit 0 (SYSST 0x59) */
-+#define AW87XXX_PID_76_CP_SHORTS_START_BIT (0)
-+#define AW87XXX_PID_76_CP_SHORTS_BITS_LEN (1)
-+#define AW87XXX_PID_76_CP_SHORTS_MASK \
-+ (~(((1<<AW87XXX_PID_76_CP_SHORTS_BITS_LEN)-1) << AW87XXX_PID_76_CP_SHORTS_START_BIT))
-+
-+#define AW87XXX_PID_76_CP_SHORTS_NORMAL_OPERATION (0)
-+#define AW87XXX_PID_76_CP_SHORTS_NORMAL_OPERATION_VALUE \
-+ (AW87XXX_PID_76_CP_SHORTS_NORMAL_OPERATION << AW87XXX_PID_76_CP_SHORTS_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SHORTS_CHARGE_PUMP_SHORT_DECTECTED (1)
-+#define AW87XXX_PID_76_CP_SHORTS_CHARGE_PUMP_SHORT_DECTECTED_VALUE \
-+ (AW87XXX_PID_76_CP_SHORTS_CHARGE_PUMP_SHORT_DECTECTED << AW87XXX_PID_76_CP_SHORTS_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SHORTS_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_CP_SHORTS_DEFAULT \
-+ (AW87XXX_PID_76_CP_SHORTS_DEFAULT_VALUE << AW87XXX_PID_76_CP_SHORTS_START_BIT)
-+
-+/* default value of SYSST (0x59) */
-+/* #define AW87XXX_PID_76_SYSST_DEFAULT (0xD0) */
-+
-+/* SYSINT (0x60) detail */
-+/* UVLOI bit 7 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_UVLOI_START_BIT (7)
-+#define AW87XXX_PID_76_UVLOI_BITS_LEN (1)
-+#define AW87XXX_PID_76_UVLOI_MASK \
-+ (~(((1<<AW87XXX_PID_76_UVLOI_BITS_LEN)-1) << AW87XXX_PID_76_UVLOI_START_BIT))
-+
-+#define AW87XXX_PID_76_UVLOI_NOT_CHANGE (0)
-+#define AW87XXX_PID_76_UVLOI_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_76_UVLOI_NOT_CHANGE << AW87XXX_PID_76_UVLOI_START_BIT)
-+
-+#define AW87XXX_PID_76_UVLOI_DETECTED (1)
-+#define AW87XXX_PID_76_UVLOI_DETECTED_VALUE \
-+ (AW87XXX_PID_76_UVLOI_DETECTED << AW87XXX_PID_76_UVLOI_START_BIT)
-+
-+#define AW87XXX_PID_76_UVLOI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_UVLOI_DEFAULT \
-+ (AW87XXX_PID_76_UVLOI_DEFAULT_VALUE << AW87XXX_PID_76_UVLOI_START_BIT)
-+
-+/* OTNI bit 6 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_OTNI_START_BIT (6)
-+#define AW87XXX_PID_76_OTNI_BITS_LEN (1)
-+#define AW87XXX_PID_76_OTNI_MASK \
-+ (~(((1<<AW87XXX_PID_76_OTNI_BITS_LEN)-1) << AW87XXX_PID_76_OTNI_START_BIT))
-+
-+#define AW87XXX_PID_76_OTNI_NOT_CHANGE (0)
-+#define AW87XXX_PID_76_OTNI_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_76_OTNI_NOT_CHANGE << AW87XXX_PID_76_OTNI_START_BIT)
-+
-+#define AW87XXX_PID_76_OTNI_DETECTED (1)
-+#define AW87XXX_PID_76_OTNI_DETECTED_VALUE \
-+ (AW87XXX_PID_76_OTNI_DETECTED << AW87XXX_PID_76_OTNI_START_BIT)
-+
-+#define AW87XXX_PID_76_OTNI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_OTNI_DEFAULT \
-+ (AW87XXX_PID_76_OTNI_DEFAULT_VALUE << AW87XXX_PID_76_OTNI_START_BIT)
-+
-+/* OC_FLAGI bit 5 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_OC_FLAGI_START_BIT (5)
-+#define AW87XXX_PID_76_OC_FLAGI_BITS_LEN (1)
-+#define AW87XXX_PID_76_OC_FLAGI_MASK \
-+ (~(((1<<AW87XXX_PID_76_OC_FLAGI_BITS_LEN)-1) << AW87XXX_PID_76_OC_FLAGI_START_BIT))
-+
-+#define AW87XXX_PID_76_OC_FLAGI_NOT_CHANGE (0)
-+#define AW87XXX_PID_76_OC_FLAGI_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_76_OC_FLAGI_NOT_CHANGE << AW87XXX_PID_76_OC_FLAGI_START_BIT)
-+
-+#define AW87XXX_PID_76_OC_FLAGI_DETECTED (1)
-+#define AW87XXX_PID_76_OC_FLAGI_DETECTED_VALUE \
-+ (AW87XXX_PID_76_OC_FLAGI_DETECTED << AW87XXX_PID_76_OC_FLAGI_START_BIT)
-+
-+#define AW87XXX_PID_76_OC_FLAGI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_OC_FLAGI_DEFAULT \
-+ (AW87XXX_PID_76_OC_FLAGI_DEFAULT_VALUE << AW87XXX_PID_76_OC_FLAGI_START_BIT)
-+
-+/* ADAP_CPI bit 4 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_ADAP_CPI_START_BIT (4)
-+#define AW87XXX_PID_76_ADAP_CPI_BITS_LEN (1)
-+#define AW87XXX_PID_76_ADAP_CPI_MASK \
-+ (~(((1<<AW87XXX_PID_76_ADAP_CPI_BITS_LEN)-1) << AW87XXX_PID_76_ADAP_CPI_START_BIT))
-+
-+#define AW87XXX_PID_76_ADAP_CPI_1X_MODE (0)
-+#define AW87XXX_PID_76_ADAP_CPI_1X_MODE_VALUE \
-+ (AW87XXX_PID_76_ADAP_CPI_1X_MODE << AW87XXX_PID_76_ADAP_CPI_START_BIT)
-+
-+#define AW87XXX_PID_76_ADAP_CPI_2X_MODE (1)
-+#define AW87XXX_PID_76_ADAP_CPI_2X_MODE_VALUE \
-+ (AW87XXX_PID_76_ADAP_CPI_2X_MODE << AW87XXX_PID_76_ADAP_CPI_START_BIT)
-+
-+#define AW87XXX_PID_76_ADAP_CPI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_ADAP_CPI_DEFAULT \
-+ (AW87XXX_PID_76_ADAP_CPI_DEFAULT_VALUE << AW87XXX_PID_76_ADAP_CPI_START_BIT)
-+
-+/* STARTOKI bit 3 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_STARTOKI_START_BIT (3)
-+#define AW87XXX_PID_76_STARTOKI_BITS_LEN (1)
-+#define AW87XXX_PID_76_STARTOKI_MASK \
-+ (~(((1<<AW87XXX_PID_76_STARTOKI_BITS_LEN)-1) << AW87XXX_PID_76_STARTOKI_START_BIT))
-+
-+#define AW87XXX_PID_76_STARTOKI_NOT_CHANGE (0)
-+#define AW87XXX_PID_76_STARTOKI_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_76_STARTOKI_NOT_CHANGE << AW87XXX_PID_76_STARTOKI_START_BIT)
-+
-+#define AW87XXX_PID_76_STARTOKI_DECTECTED (1)
-+#define AW87XXX_PID_76_STARTOKI_DECTECTED_VALUE \
-+ (AW87XXX_PID_76_STARTOKI_DECTECTED << AW87XXX_PID_76_STARTOKI_START_BIT)
-+
-+#define AW87XXX_PID_76_STARTOKI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_STARTOKI_DEFAULT \
-+ (AW87XXX_PID_76_STARTOKI_DEFAULT_VALUE << AW87XXX_PID_76_STARTOKI_START_BIT)
-+
-+/* OVP1I bit 2 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_OVP1I_START_BIT (2)
-+#define AW87XXX_PID_76_OVP1I_BITS_LEN (1)
-+#define AW87XXX_PID_76_OVP1I_MASK \
-+ (~(((1<<AW87XXX_PID_76_OVP1I_BITS_LEN)-1) << AW87XXX_PID_76_OVP1I_START_BIT))
-+
-+#define AW87XXX_PID_76_OVP1I_NOT_CHANGE (0)
-+#define AW87XXX_PID_76_OVP1I_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_76_OVP1I_NOT_CHANGE << AW87XXX_PID_76_OVP1I_START_BIT)
-+
-+#define AW87XXX_PID_76_OVP1I_DETECTED (1)
-+#define AW87XXX_PID_76_OVP1I_DETECTED_VALUE \
-+ (AW87XXX_PID_76_OVP1I_DETECTED << AW87XXX_PID_76_OVP1I_START_BIT)
-+
-+#define AW87XXX_PID_76_OVP1I_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_OVP1I_DEFAULT \
-+ (AW87XXX_PID_76_OVP1I_DEFAULT_VALUE << AW87XXX_PID_76_OVP1I_START_BIT)
-+
-+/* PORNI bit 1 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_PORNI_START_BIT (1)
-+#define AW87XXX_PID_76_PORNI_BITS_LEN (1)
-+#define AW87XXX_PID_76_PORNI_MASK \
-+ (~(((1<<AW87XXX_PID_76_PORNI_BITS_LEN)-1) << AW87XXX_PID_76_PORNI_START_BIT))
-+
-+#define AW87XXX_PID_76_PORNI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_PORNI_DEFAULT \
-+ (AW87XXX_PID_76_PORNI_DEFAULT_VALUE << AW87XXX_PID_76_PORNI_START_BIT)
-+
-+/* CP_SHORTI bit 0 (SYSINT 0x60) */
-+#define AW87XXX_PID_76_CP_SHORTI_START_BIT (0)
-+#define AW87XXX_PID_76_CP_SHORTI_BITS_LEN (1)
-+#define AW87XXX_PID_76_CP_SHORTI_MASK \
-+ (~(((1<<AW87XXX_PID_76_CP_SHORTI_BITS_LEN)-1) << AW87XXX_PID_76_CP_SHORTI_START_BIT))
-+
-+#define AW87XXX_PID_76_CP_SHORTI_NOT_CHANGE (0)
-+#define AW87XXX_PID_76_CP_SHORTI_NOT_CHANGE_VALUE \
-+ (AW87XXX_PID_76_CP_SHORTI_NOT_CHANGE << AW87XXX_PID_76_CP_SHORTI_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SHORTI_SHORT_DECTECTED (1)
-+#define AW87XXX_PID_76_CP_SHORTI_SHORT_DECTECTED_VALUE \
-+ (AW87XXX_PID_76_CP_SHORTI_SHORT_DECTECTED << AW87XXX_PID_76_CP_SHORTI_START_BIT)
-+
-+#define AW87XXX_PID_76_CP_SHORTI_DEFAULT_VALUE (0)
-+#define AW87XXX_PID_76_CP_SHORTI_DEFAULT \
-+ (AW87XXX_PID_76_CP_SHORTI_DEFAULT_VALUE << AW87XXX_PID_76_CP_SHORTI_START_BIT)
-+
-+/* default value of SYSINT (0x60) */
-+/* #define AW87XXX_PID_76_SYSINT_DEFAULT (0x00) */
-+
-+/* detail information of registers end */
-+
-+#endif /* #ifndef __AW87XXX_PID_76_REG_H__ */
-\ No newline at end of file
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_pid_9b_reg.h b/sound/soc/codecs/aw87xxx/aw87xxx_pid_9b_reg.h
-new file mode 100644
-index 000000000..c8d146ef5
---- /dev/null
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_pid_9b_reg.h
-@@ -0,0 +1,81 @@
-+#ifndef __AW87XXX_PID_9B_REG_H__
-+#define __AW87XXX_PID_9B_REG_H__
-+
-+#define AW87XXX_PID_9B_CHIPID_REG (0x00)
-+#define AW87XXX_PID_9B_SYSCTRL_REG (0x01)
-+#define AW87XXX_PID_9B_BATSAFE_REG (0x02)
-+#define AW87XXX_PID_9B_BOV_REG (0x03)
-+#define AW87XXX_PID_9B_BP_REG (0x04)
-+#define AW87XXX_PID_9B_GAIN_REG (0x05)
-+#define AW87XXX_PID_9B_AGC3_PO_REG (0x06)
-+#define AW87XXX_PID_9B_AGC3_REG (0x07)
-+#define AW87XXX_PID_9B_AGC2_REG (0x08)
-+#define AW87XXX_PID_9B_AGC1_REG (0x09)
-+
-+#define AW87XXX_PID_9B_SYSCTRL_DEFAULT (0x03)
-+
-+/********************************************
-+ * soft control info
-+ * If you need to update this file, add this information manually
-+ *******************************************/
-+unsigned char aw87xxx_pid_9b_softrst_access[2] = {0x00, 0xaa};
-+
-+/********************************************
-+ * Register Access
-+ *******************************************/
-+#define AW87XXX_PID_9B_REG_MAX (0x64)
-+
-+#define REG_NONE_ACCESS (0)
-+#define REG_RD_ACCESS (1 << 0)
-+#define REG_WR_ACCESS (1 << 1)
-+
-+const unsigned char aw87xxx_pid_9b_reg_access[AW87XXX_PID_9B_REG_MAX] = {
-+ [AW87XXX_PID_9B_CHIPID_REG] = (REG_RD_ACCESS),
-+ [AW87XXX_PID_9B_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_BATSAFE_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_BOV_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_BP_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_GAIN_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_AGC3_PO_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_AGC3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_AGC2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+ [AW87XXX_PID_9B_AGC1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS),
-+};
-+
-+
-+#define AW87XXX_PID_9B_ENCRYPTION_REG (0x64)
-+#define AW87XXX_PID_9B_ENCRYPTION_BOOST_OUTPUT_SET (0x2C)
-+
-+/* REG_EN_SW bit 2 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_9B_REG_EN_SW_START_BIT (2)
-+#define AW87XXX_PID_9B_REG_EN_SW_BITS_LEN (1)
-+#define AW87XXX_PID_9B_REG_EN_SW_MASK \
-+ (~(((1<<AW87XXX_PID_9B_REG_EN_SW_BITS_LEN)-1) << AW87XXX_PID_9B_REG_EN_SW_START_BIT))
-+
-+#define AW87XXX_PID_9B_REG_EN_SW_DISABLE (0)
-+#define AW87XXX_PID_9B_REG_EN_SW_DISABLE_VALUE \
-+ (AW87XXX_PID_9B_REG_EN_SW_DISABLE << AW87XXX_PID_9B_REG_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_9B_REG_EN_SW_ENABLE (1)
-+#define AW87XXX_PID_9B_REG_EN_SW_ENABLE_VALUE \
-+ (AW87XXX_PID_9B_REG_EN_SW_ENABLE << AW87XXX_PID_9B_REG_EN_SW_START_BIT)
-+
-+#define AW87XXX_PID_9B_REG_EN_SW_DEFAULT_VALUE (1)
-+#define AW87XXX_PID_9B_REG_EN_SW_DEFAULT \
-+ (AW87XXX_PID_9B_REG_EN_SW_DEFAULT_VALUE << AW87XXX_PID_9B_REG_EN_SW_START_BIT)
-+
-+/* SPK_MODE bit 0 (SYSCTRL 0x01) */
-+#define AW87XXX_PID_9B_SPK_MODE_START_BIT (0)
-+#define AW87XXX_PID_9B_SPK_MODE_BITS_LEN (1)
-+#define AW87XXX_PID_9B_SPK_MODE_MASK \
-+ (~(((1<<AW87XXX_PID_9B_SPK_MODE_BITS_LEN)-1) << AW87XXX_PID_9B_SPK_MODE_START_BIT))
-+
-+#define AW87XXX_PID_9B_SPK_MODE_DISABLE (0)
-+#define AW87XXX_PID_9B_SPK_MODE_DISABLE_VALUE \
-+ (AW87XXX_PID_9B_SPK_MODE_DISABLE << AW87XXX_PID_9B_SPK_MODE_START_BIT)
-+
-+#define AW87XXX_PID_9B_SPK_MODE_ENABLE (1)
-+#define AW87XXX_PID_9B_SPK_MODE_ENABLE_VALUE \
-+ (AW87XXX_PID_9B_SPK_MODE_ENABLE << AW87XXX_PID_9B_SPK_MODE_START_BIT)
-+
-+#endif
---
-2.45.2
-
-
-From 79fc3fdbc30a0deaedd987b5e71e850cfc442f7d Mon Sep 17 00:00:00 2001
-From: CVMagic <546352+CVMagic@users.noreply.github.com>
-Date: Thu, 16 May 2024 04:57:32 +0000
-Subject: [PATCH 2/8] Updated AW87xxx driver to be more verbose for debugging
- purposes, but also fixed Reset Pin GPIO initialization issue with Ayn Loki
- Mini
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/soc/codecs/aw87xxx/aw87xxx.c | 2923 +++++++++++----------
- sound/soc/codecs/aw87xxx/aw87xxx_device.c | 8 +-
- 2 files changed, 1470 insertions(+), 1461 deletions(-)
-
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx.c b/sound/soc/codecs/aw87xxx/aw87xxx.c
-index eddb01695..7f44d9b9d 100644
---- a/sound/soc/codecs/aw87xxx/aw87xxx.c
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx.c
-@@ -1,1457 +1,1466 @@
--/*
-- * aw87xxx.c aw87xxx pa module
-- *
-- * Copyright (c) 2021 AWINIC Technology CO., LTD
-- *
-- * Author: Barry <zhaozhongbo@awinic.com>
-- *
-- * This program is free software; you can redistribute it and/or modify it
-- * under the terms of the GNU General Public License as published by the
-- * Free Software Foundation; either version 2 of the License, or (at your
-- * option) any later version.
-- *
-- */
--
--#include <linux/i2c.h>
--#include <sound/pcm.h>
--#include <sound/pcm_params.h>
--#include <linux/gpio.h>
--#include <linux/of_gpio.h>
--#include <linux/gpio/consumer.h>
--#include <linux/interrupt.h>
--#include <linux/delay.h>
--#include <linux/module.h>
--#include <linux/kernel.h>
--#include <linux/device.h>
--#include <linux/irq.h>
--#include <linux/firmware.h>
--#include <linux/platform_device.h>
--#include <linux/slab.h>
--#include <linux/fs.h>
--#include <linux/proc_fs.h>
--#include <linux/uaccess.h>
--#include <linux/io.h>
--#include <linux/init.h>
--#include <linux/pci.h>
--#include <linux/dma-mapping.h>
--#include <linux/gameport.h>
--#include <linux/moduleparam.h>
--#include <linux/mutex.h>
--#include <linux/timer.h>
--#include <linux/workqueue.h>
--#include <linux/hrtimer.h>
--#include <linux/ktime.h>
--#include <linux/kthread.h>
--#include <uapi/sound/asound.h>
--#include <sound/control.h>
--#include <sound/soc.h>
--#include "aw87xxx.h"
--#include "aw87xxx_device.h"
--#include "aw87xxx_log.h"
--#include "aw87xxx_monitor.h"
--#include "aw87xxx_acf_bin.h"
--#include "aw87xxx_bin_parse.h"
--#include "aw87xxx_dsp.h"
--
--/*****************************************************************
--* aw87xxx marco
--******************************************************************/
--#define AW87XXX_I2C_NAME "aw87xxx_pa"
--#define AW87XXX_DRIVER_VERSION "v2.7.0"
--#define AW87XXX_FW_BIN_NAME "aw87xxx_acf.bin"
--#define AW87XXX_PROF_MUSIC "Music"
--/*************************************************************************
-- * aw87xxx variable
-- ************************************************************************/
--static LIST_HEAD(g_aw87xxx_list);
--static DEFINE_MUTEX(g_aw87xxx_mutex_lock);
--unsigned int g_aw87xxx_dev_cnt = 0;
--
--static const char *const aw87xxx_monitor_switch[] = {"Disable", "Enable"};
--static const char *const aw87xxx_spin_switch[] = {"spin_0", "spin_90",
-- "spin_180", "spin_270"};
--#ifdef AW_KERNEL_VER_OVER_4_19_1
--static struct aw_componet_codec_ops aw_componet_codec_ops = {
-- .add_codec_controls = snd_soc_add_component_controls,
-- .unregister_codec = snd_soc_unregister_component,
--};
--#else
--static struct aw_componet_codec_ops aw_componet_codec_ops = {
-- .add_codec_controls = snd_soc_add_codec_controls,
-- .unregister_codec = snd_soc_unregister_codec,
--};
--#endif
--
--
--/************************************************************************
-- *
-- * aw87xxx device update profile
-- *
-- ************************************************************************/
--static int aw87xxx_power_down(struct aw87xxx *aw87xxx, char *profile)
--{
-- int ret = 0;
-- struct aw_prof_desc *prof_desc = NULL;
-- struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-- struct aw_data_container *data_container = NULL;
-- struct aw_device *aw_dev = &aw87xxx->aw_dev;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
--
-- if (!prof_info->status) {
-- AW_DEV_LOGE(aw87xxx->dev, "profile_cfg not load");
-- return -EINVAL;
-- }
--
-- prof_desc = aw87xxx_acf_get_prof_desc_form_name(aw87xxx->dev, &aw87xxx->acf_info, profile);
-- if (prof_desc == NULL)
-- goto no_bin_pwr_off;
--
-- if (!prof_desc->prof_st)
-- goto no_bin_pwr_off;
--
--
-- data_container = &prof_desc->data_container;
-- AW_DEV_LOGD(aw87xxx->dev, "get profile[%s] data len [%d]",
-- profile, data_container->len);
--
-- if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-- AW_DEV_LOGI(aw87xxx->dev, "profile[%s] has already load ", profile);
-- } else {
-- if (aw_dev->ops.pwr_off_func) {
-- ret = aw_dev->ops.pwr_off_func(aw_dev, data_container);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ", profile);
-- goto pwr_off_failed;
-- }
-- } else {
-- ret = aw87xxx_dev_default_pwr_off(aw_dev, data_container);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ", profile);
-- goto pwr_off_failed;
-- }
-- }
-- }
--
-- aw87xxx->current_profile = prof_desc->prof_name;
-- return 0;
--
--pwr_off_failed:
--no_bin_pwr_off:
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-- aw87xxx->current_profile = aw87xxx->prof_off_name;
-- return ret;
--}
--
--static int aw87xxx_power_on(struct aw87xxx *aw87xxx, char *profile)
--{
-- int ret = -EINVAL;
-- struct aw_prof_desc *prof_desc = NULL;
-- struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-- struct aw_data_container *data_container = NULL;
-- struct aw_device *aw_dev = &aw87xxx->aw_dev;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
--
-- if (!prof_info->status) {
-- AW_DEV_LOGE(aw87xxx->dev, "profile_cfg not load");
-- return -EINVAL;
-- }
--
-- if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX))
-- return aw87xxx_power_down(aw87xxx, profile);
--
-- prof_desc = aw87xxx_acf_get_prof_desc_form_name(aw87xxx->dev, &aw87xxx->acf_info, profile);
-- if (prof_desc == NULL) {
-- AW_DEV_LOGE(aw87xxx->dev, "not found [%s] parameter", profile);
-- return -EINVAL;
-- }
--
-- if (!prof_desc->prof_st) {
-- AW_DEV_LOGE(aw87xxx->dev, "not found data container");
-- return -EINVAL;
-- }
--
-- data_container = &prof_desc->data_container;
-- AW_DEV_LOGD(aw87xxx->dev, "get profile[%s] data len [%d]",
-- profile, data_container->len);
--
-- if (aw_dev->ops.pwr_on_func) {
-- ret = aw_dev->ops.pwr_on_func(aw_dev, data_container);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-- profile);
-- return aw87xxx_power_down(aw87xxx, aw87xxx->prof_off_name);
-- }
-- } else {
-- ret = aw87xxx_dev_default_pwr_on(aw_dev, data_container);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-- profile);
-- return aw87xxx_power_down(aw87xxx, aw87xxx->prof_off_name);
-- }
-- }
--
-- aw87xxx->current_profile = prof_desc->prof_name;
-- AW_DEV_LOGD(aw87xxx->dev, "load profile[%s] succeed", profile);
--
-- return 0;
--}
--
--
--
--int aw87xxx_update_profile(struct aw87xxx *aw87xxx, char *profile)
--{
-- int ret = -1;
--
-- AW_DEV_LOGD(aw87xxx->dev, "load profile[%s] enter", profile);
-- mutex_lock(&aw87xxx->reg_lock);
-- aw87xxx_monitor_stop(&aw87xxx->monitor);
-- if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX)) {
-- ret = aw87xxx_power_down(aw87xxx, profile);
-- } else {
-- ret = aw87xxx_power_on(aw87xxx, profile);
-- if (!ret)
-- aw87xxx_monitor_start(&aw87xxx->monitor);
-- }
-- mutex_unlock(&aw87xxx->reg_lock);
--
-- return ret;
--}
--
--int aw87xxx_update_profile_esd(struct aw87xxx *aw87xxx, char *profile)
--{
-- int ret = -1;
--
-- if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX))
-- ret = aw87xxx_power_down(aw87xxx, profile);
-- else
-- ret = aw87xxx_power_on(aw87xxx, profile);
--
-- return ret;
--}
--
--char *aw87xxx_show_current_profile(int dev_index)
--{
-- struct list_head *pos = NULL;
-- struct aw87xxx *aw87xxx = NULL;
--
-- list_for_each(pos, &g_aw87xxx_list) {
-- aw87xxx = list_entry(pos, struct aw87xxx, list);
-- if (aw87xxx->dev_index == dev_index) {
-- AW_DEV_LOGI(aw87xxx->dev, "current profile is [%s]",
-- aw87xxx->current_profile);
-- return aw87xxx->current_profile;
-- }
-- }
--
-- AW_LOGE("not found struct aw87xxx, dev_index = [%d]", dev_index);
-- return NULL;
--}
--EXPORT_SYMBOL(aw87xxx_show_current_profile);
--
--int aw87xxx_set_profile(int dev_index, char *profile)
--{
-- struct list_head *pos = NULL;
-- struct aw87xxx *aw87xxx = NULL;
--
-- list_for_each(pos, &g_aw87xxx_list) {
-- aw87xxx = list_entry(pos, struct aw87xxx, list);
-- if (profile && aw87xxx->dev_index == dev_index) {
-- AW_DEV_LOGD(aw87xxx->dev, "set dev_index = %d, profile = %s",
-- dev_index, profile);
-- return aw87xxx_update_profile(aw87xxx, profile);
-- }
-- }
--
-- AW_LOGE("not found struct aw87xxx, dev_index = [%d]", dev_index);
-- return -EINVAL;
--}
--EXPORT_SYMBOL(aw87xxx_set_profile);
--
--int aw87xxx_set_profile_by_id(int dev_index, int profile_id)
--{
-- char *profile = NULL;
--
-- profile = aw87xxx_ctos_get_prof_name(profile_id);
-- if (profile == NULL) {
-- AW_LOGE("aw87xxx, dev_index[%d] profile[%d] not support!",
-- dev_index, profile_id);
-- return -EINVAL;
-- }
--
-- AW_LOGI("aw87xxx, dev_index[%d] set profile[%s] by id[%d]",
-- dev_index, profile, profile_id);
-- return aw87xxx_set_profile(dev_index, profile);
--}
--EXPORT_SYMBOL(aw87xxx_set_profile_by_id);
--
--/****************************************************************************
-- *
-- * aw87xxx Kcontrols
-- *
-- ****************************************************************************/
--static int aw87xxx_profile_switch_info(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_info *uinfo)
--{
-- int count = 0;
-- char *name = NULL;
-- char *profile_name = NULL;
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
--
-- if (aw87xxx == NULL) {
-- AW_LOGE("get struct aw87xxx failed");
-- return -EINVAL;
-- }
--
-- uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-- uinfo->count = 1;
--
-- /*make sure have prof */
-- count = aw87xxx_acf_get_profile_count(aw87xxx->dev, &aw87xxx->acf_info);
-- if (count <= 0) {
-- uinfo->value.enumerated.items = 0;
-- AW_DEV_LOGE(aw87xxx->dev, "get count[%d] failed", count);
-- return 0;
-- }
--
-- uinfo->value.enumerated.items = count;
-- if (uinfo->value.enumerated.item >= count)
-- uinfo->value.enumerated.item = count - 1;
--
-- name = uinfo->value.enumerated.name;
-- count = uinfo->value.enumerated.item;
-- profile_name = aw87xxx_acf_get_prof_name_form_index(aw87xxx->dev,
-- &aw87xxx->acf_info, count);
-- if (profile_name == NULL) {
-- strscpy(uinfo->value.enumerated.name, "NULL",
-- strlen("NULL") + 1);
-- return 0;
-- }
--
-- strscpy(name, profile_name, sizeof(uinfo->value.enumerated.name));
--
-- return 0;
--}
--
--static int aw87xxx_profile_switch_put(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- int ret = -1;
-- char *profile_name = NULL;
-- int index = ucontrol->value.integer.value[0];
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-- struct acf_bin_info *acf_info = NULL;
--
-- if (aw87xxx == NULL) {
-- AW_LOGE("get struct aw87xxx failed");
-- return -EINVAL;
-- }
--
-- acf_info = &aw87xxx->acf_info;
--
-- profile_name = aw87xxx_acf_get_prof_name_form_index(aw87xxx->dev, acf_info, index);
-- if (!profile_name) {
-- AW_DEV_LOGE(aw87xxx->dev, "not found profile name,index=[%d]",
-- index);
-- return -EINVAL;
-- }
--
-- AW_DEV_LOGI(aw87xxx->dev, "set profile [%s]", profile_name);
--
-- ret = aw87xxx_update_profile(aw87xxx, profile_name);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "set dev_index[%d] profile failed, profile = %s",
-- aw87xxx->dev_index, profile_name);
-- return ret;
-- }
--
-- return 0;
--}
--
--static int aw87xxx_profile_switch_get(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- int index = 0;
-- char *profile;
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
--
-- if (aw87xxx == NULL) {
-- AW_LOGE("get struct aw87xxx failed");
-- return -EINVAL;
-- }
--
-- if (!aw87xxx->current_profile) {
-- AW_DEV_LOGE(aw87xxx->dev, "profile not init");
-- return -EINVAL;
-- }
--
-- profile = aw87xxx->current_profile;
-- AW_DEV_LOGI(aw87xxx->dev, "current profile:[%s]",
-- aw87xxx->current_profile);
--
--
-- index = aw87xxx_acf_get_prof_index_form_name(aw87xxx->dev,
-- &aw87xxx->acf_info, aw87xxx->current_profile);
-- if (index < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "get profile index failed");
-- return index;
-- }
--
-- ucontrol->value.integer.value[0] = index;
--
-- return 0;
--}
--
--static int aw87xxx_vmax_get_info(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_info *uinfo)
--{
-- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-- uinfo->count = 1;
-- uinfo->value.integer.min = INT_MIN;
-- uinfo->value.integer.max = AW_VMAX_MAX;
--
-- return 0;
--}
--
--static int aw87xxx_vmax_get(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- int ret = -1;
-- int vmax_val = 0;
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
--
-- if (aw87xxx == NULL) {
-- AW_LOGE("get struct aw87xxx failed");
-- return -EINVAL;
-- }
--
-- ret = aw87xxx_monitor_no_dsp_get_vmax(&aw87xxx->monitor, &vmax_val);
-- if (ret < 0)
-- return ret;
--
-- ucontrol->value.integer.value[0] = vmax_val;
-- AW_DEV_LOGI(aw87xxx->dev, "get vmax = [0x%x]", vmax_val);
--
-- return 0;
--}
--
--static int aw87xxx_monitor_switch_info(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_info *uinfo)
--{
-- int count;
--
-- uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-- uinfo->count = 1;
-- count = ARRAY_SIZE(aw87xxx_monitor_switch);
--
-- uinfo->value.enumerated.items = count;
--
-- if (uinfo->value.enumerated.item >= count)
-- uinfo->value.enumerated.item = count - 1;
--
-- strscpy(uinfo->value.enumerated.name,
-- aw87xxx_monitor_switch[uinfo->value.enumerated.item],
-- strlen(aw87xxx_monitor_switch[uinfo->value.enumerated.item]) + 1);
--
-- return 0;
--}
--
--static int aw87xxx_monitor_switch_put(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- uint32_t ctrl_value = ucontrol->value.integer.value[0];
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-- struct aw_monitor *aw_monitor = &aw87xxx->monitor;
-- int ret = -1;
--
-- ret = aw87xxx_dev_monitor_switch_set(aw_monitor, ctrl_value);
-- if (ret)
-- return ret;
--
-- return 0;
--}
--
--static int aw87xxx_monitor_switch_get(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-- struct aw_monitor *aw_monitor = &aw87xxx->monitor;
--
-- ucontrol->value.integer.value[0] = aw_monitor->monitor_hdr.monitor_switch;
--
-- AW_DEV_LOGI(aw87xxx->dev, "monitor switch is %ld", ucontrol->value.integer.value[0]);
-- return 0;
--}
--
--static int aw87xxx_spin_switch_info(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_info *uinfo)
--{
-- int count;
--
-- uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-- uinfo->count = 1;
-- count = ARRAY_SIZE(aw87xxx_spin_switch);
--
-- uinfo->value.enumerated.items = count;
--
-- if (uinfo->value.enumerated.item >= count)
-- uinfo->value.enumerated.item = count - 1;
--
-- strscpy(uinfo->value.enumerated.name,
-- aw87xxx_spin_switch[uinfo->value.enumerated.item],
-- strlen(aw87xxx_spin_switch[uinfo->value.enumerated.item]) + 1);
--
-- return 0;
--}
--
--static int aw87xxx_spin_switch_put(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- uint32_t ctrl_value = 0;
-- int ret = 0;
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-- ctrl_value = ucontrol->value.integer.value[0];
--
-- ret = aw87xxx_dsp_set_spin(ctrl_value);
-- if (ret) {
-- AW_DEV_LOGE(aw87xxx->dev, "write spin failed");
-- return ret;
-- }
-- AW_DEV_LOGD(aw87xxx->dev, "write spin done ctrl_value=%d", ctrl_value);
-- return 0;
--}
--
--static int aw87xxx_spin_switch_get(struct snd_kcontrol *kcontrol,
-- struct snd_ctl_elem_value *ucontrol)
--{
-- struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
--
-- ucontrol->value.integer.value[0] = aw87xxx_dsp_get_spin();
-- AW_DEV_LOGD(aw87xxx->dev, "current spin is %ld", ucontrol->value.integer.value[0]);
--
-- return 0;
--}
--
--
--static int aw87xxx_kcontrol_dynamic_create(struct aw87xxx *aw87xxx,
-- void *codec)
--{
-- struct snd_kcontrol_new *aw87xxx_kcontrol = NULL;
-- aw_snd_soc_codec_t *soc_codec = (aw_snd_soc_codec_t *)codec;
-- char *kctl_name[AW87XXX_PRIVATE_KCONTROL_NUM];
-- int kcontrol_num = AW87XXX_PRIVATE_KCONTROL_NUM;
-- int ret = -1;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
-- aw87xxx->codec = soc_codec;
--
-- aw87xxx_kcontrol = devm_kzalloc(aw87xxx->dev,
-- sizeof(struct snd_kcontrol_new) * kcontrol_num,
-- GFP_KERNEL);
-- if (aw87xxx_kcontrol == NULL) {
-- AW_DEV_LOGE(aw87xxx->dev, "aw87xxx_kcontrol devm_kzalloc failed");
-- return -ENOMEM;
-- }
--
-- kctl_name[0] = devm_kzalloc(aw87xxx->dev, AW_NAME_BUF_MAX,
-- GFP_KERNEL);
-- if (kctl_name[0] == NULL)
-- return -ENOMEM;
--
-- snprintf(kctl_name[0], AW_NAME_BUF_MAX, "aw87xxx_profile_switch_%d",
-- aw87xxx->dev_index);
--
-- aw87xxx_kcontrol[0].name = kctl_name[0];
-- aw87xxx_kcontrol[0].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-- aw87xxx_kcontrol[0].info = aw87xxx_profile_switch_info;
-- aw87xxx_kcontrol[0].get = aw87xxx_profile_switch_get;
-- aw87xxx_kcontrol[0].put = aw87xxx_profile_switch_put;
-- aw87xxx_kcontrol[0].private_value = (unsigned long)aw87xxx;
--
-- kctl_name[1] = devm_kzalloc(aw87xxx->codec->dev, AW_NAME_BUF_MAX,
-- GFP_KERNEL);
-- if (kctl_name[1] == NULL)
-- return -ENOMEM;
--
-- snprintf(kctl_name[1], AW_NAME_BUF_MAX, "aw87xxx_vmax_get_%d",
-- aw87xxx->dev_index);
--
-- aw87xxx_kcontrol[1].name = kctl_name[1];
-- aw87xxx_kcontrol[1].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-- aw87xxx_kcontrol[1].access = SNDRV_CTL_ELEM_ACCESS_READ;
-- aw87xxx_kcontrol[1].info = aw87xxx_vmax_get_info;
-- aw87xxx_kcontrol[1].get = aw87xxx_vmax_get;
-- aw87xxx_kcontrol[1].private_value = (unsigned long)aw87xxx;
--
-- kctl_name[2] = devm_kzalloc(aw87xxx->codec->dev, AW_NAME_BUF_MAX,
-- GFP_KERNEL);
-- if (kctl_name[2] == NULL)
-- return -ENOMEM;
--
-- snprintf(kctl_name[2], AW_NAME_BUF_MAX, "aw87xxx_monitor_switch_%d",
-- aw87xxx->dev_index);
--
-- aw87xxx_kcontrol[2].name = kctl_name[2];
-- aw87xxx_kcontrol[2].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-- aw87xxx_kcontrol[2].info = aw87xxx_monitor_switch_info;
-- aw87xxx_kcontrol[2].get = aw87xxx_monitor_switch_get;
-- aw87xxx_kcontrol[2].put = aw87xxx_monitor_switch_put;
-- aw87xxx_kcontrol[2].private_value = (unsigned long)aw87xxx;
--
-- ret = aw_componet_codec_ops.add_codec_controls(aw87xxx->codec,
-- aw87xxx_kcontrol, kcontrol_num);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "add codec controls failed, ret = %d",
-- ret);
-- return ret;
-- }
--
-- AW_DEV_LOGI(aw87xxx->dev, "add codec controls[%s,%s,%s]",
-- aw87xxx_kcontrol[0].name,
-- aw87xxx_kcontrol[1].name,
-- aw87xxx_kcontrol[2].name);
--
-- return 0;
--}
--
--static int aw87xxx_public_kcontrol_create(struct aw87xxx *aw87xxx,
-- void *codec)
--{
-- struct snd_kcontrol_new *aw87xxx_kcontrol = NULL;
-- aw_snd_soc_codec_t *soc_codec = (aw_snd_soc_codec_t *)codec;
-- char *kctl_name[AW87XXX_PUBLIC_KCONTROL_NUM];
-- int kcontrol_num = AW87XXX_PUBLIC_KCONTROL_NUM;
-- int ret = -1;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
-- aw87xxx->codec = soc_codec;
--
-- aw87xxx_kcontrol = devm_kzalloc(aw87xxx->dev,
-- sizeof(struct snd_kcontrol_new) * kcontrol_num,
-- GFP_KERNEL);
-- if (aw87xxx_kcontrol == NULL) {
-- AW_DEV_LOGE(aw87xxx->dev, "aw87xxx_kcontrol devm_kzalloc failed");
-- return -ENOMEM;
-- }
--
-- kctl_name[0] = devm_kzalloc(aw87xxx->dev, AW_NAME_BUF_MAX,
-- GFP_KERNEL);
-- if (kctl_name[0] == NULL)
-- return -ENOMEM;
--
-- snprintf(kctl_name[0], AW_NAME_BUF_MAX, "aw87xxx_spin_switch");
--
-- aw87xxx_kcontrol[0].name = kctl_name[0];
-- aw87xxx_kcontrol[0].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-- aw87xxx_kcontrol[0].info = aw87xxx_spin_switch_info;
-- aw87xxx_kcontrol[0].get = aw87xxx_spin_switch_get;
-- aw87xxx_kcontrol[0].put = aw87xxx_spin_switch_put;
-- aw87xxx_kcontrol[0].private_value = (unsigned long)aw87xxx;
--
-- ret = aw_componet_codec_ops.add_codec_controls(aw87xxx->codec,
-- aw87xxx_kcontrol, kcontrol_num);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "add codec controls failed, ret = %d",
-- ret);
-- return ret;
-- }
--
-- AW_DEV_LOGI(aw87xxx->dev, "add public codec controls[%s]",
-- aw87xxx_kcontrol[0].name);
--
-- return 0;
--}
--
--/****************************************************************************
-- *
-- *aw87xxx kcontrol create
-- *
-- ****************************************************************************/
--int aw87xxx_add_codec_controls(void *codec)
--{
-- struct list_head *pos = NULL;
-- struct aw87xxx *aw87xxx = NULL;
-- int ret = -1;
--
-- list_for_each(pos, &g_aw87xxx_list) {
-- aw87xxx = list_entry(pos, struct aw87xxx, list);
-- ret = aw87xxx_kcontrol_dynamic_create(aw87xxx, codec);
-- if (ret < 0)
-- return ret;
--
-- if (aw87xxx->dev_index == 0) {
-- ret = aw87xxx_public_kcontrol_create(aw87xxx, codec);
-- if (ret < 0)
-- return ret;
-- }
-- }
--
-- return 0;
--}
--EXPORT_SYMBOL(aw87xxx_add_codec_controls);
--
--
--/****************************************************************************
-- *
-- * aw87xxx firmware cfg load
-- *
-- ***************************************************************************/
--static void aw87xxx_fw_cfg_free(struct aw87xxx *aw87xxx)
--{
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
-- aw87xxx_acf_profile_free(aw87xxx->dev, &aw87xxx->acf_info);
-- aw87xxx_monitor_cfg_free(&aw87xxx->monitor);
--}
--
--static int aw87xxx_init_default_prof(struct aw87xxx *aw87xxx)
--{
-- char *profile = NULL;
--
-- profile = aw87xxx_acf_get_prof_off_name(aw87xxx->dev, &aw87xxx->acf_info);
-- if (profile == NULL) {
-- AW_DEV_LOGE(aw87xxx->dev, "get profile off name failed");
-- return -EINVAL;
-- }
--
-- snprintf(aw87xxx->prof_off_name, AW_PROFILE_STR_MAX, "%s", profile);
-- aw87xxx->current_profile = profile;
-- AW_DEV_LOGI(aw87xxx->dev, "init profile name [%s]",
-- aw87xxx->current_profile);
--
-- return 0;
--}
--
--static void aw87xxx_fw_load_retry(struct aw87xxx *aw87xxx)
--{
-- struct acf_bin_info *acf_info = &aw87xxx->acf_info;
-- int ram_timer_val = 2000;
--
-- AW_DEV_LOGD(aw87xxx->dev, "failed to read [%s]",
-- aw87xxx->fw_name);
--
-- if (acf_info->load_count < AW_LOAD_FW_RETRIES) {
-- AW_DEV_LOGD(aw87xxx->dev,
-- "restart hrtimer to load firmware");
-- schedule_delayed_work(&aw87xxx->fw_load_work,
-- msecs_to_jiffies(ram_timer_val));
-- } else {
-- acf_info->load_count = 0;
-- AW_DEV_LOGE(aw87xxx->dev,
-- "can not load firmware,please check name or file exists");
-- return;
-- }
-- acf_info->load_count++;
--}
--
--static void aw87xxx_fw_load(const struct firmware *fw, void *context)
--{
-- int ret = -1;
-- struct aw87xxx *aw87xxx = context;
-- struct acf_bin_info *acf_info = &aw87xxx->acf_info;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
--
-- if (!fw) {
-- aw87xxx_fw_load_retry(aw87xxx);
-- return;
-- }
--
-- AW_DEV_LOGD(aw87xxx->dev, "loaded %s - size: %ld",
-- aw87xxx->fw_name, (u_long)(fw ? fw->size : 0));
--
-- mutex_lock(&aw87xxx->reg_lock);
-- acf_info->fw_data = vmalloc(fw->size);
-- if (!acf_info->fw_data) {
-- AW_DEV_LOGE(aw87xxx->dev, "fw_data kzalloc memory failed");
-- goto exit_vmalloc_failed;
-- }
-- memset(acf_info->fw_data, 0, fw->size);
-- memcpy(acf_info->fw_data, fw->data, fw->size);
-- acf_info->fw_size = fw->size;
--
-- ret = aw87xxx_acf_parse(aw87xxx->dev, &aw87xxx->acf_info);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "fw_data parse failed");
-- goto exit_acf_parse_failed;
-- }
--
-- ret = aw87xxx_init_default_prof(aw87xxx);
-- if (ret < 0) {
-- aw87xxx_fw_cfg_free(aw87xxx);
-- goto exit_acf_parse_failed;
-- }
--
-- AW_DEV_LOGI(aw87xxx->dev, "acf parse succeed");
-- mutex_unlock(&aw87xxx->reg_lock);
-- release_firmware(fw);
-- // Updating profile to "Music" because the firmware is set to "off" during init
-- aw87xxx_update_profile(aw87xxx, AW87XXX_PROF_MUSIC);
--
-- return;
--
--exit_acf_parse_failed:
--exit_vmalloc_failed:
-- release_firmware(fw);
-- mutex_unlock(&aw87xxx->reg_lock);
--}
--
--static void aw87xxx_fw_load_work_routine(struct work_struct *work)
--{
-- struct aw87xxx *aw87xxx = container_of(work,
-- struct aw87xxx, fw_load_work.work);
-- struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
--
-- if (prof_info->status == AW_ACF_WAIT) {
-- request_firmware_nowait(THIS_MODULE,
--// FW_ACTION_HOTPLUG,
-- FW_ACTION_UEVENT,
-- aw87xxx->fw_name,
-- aw87xxx->dev,
-- GFP_KERNEL, aw87xxx,
-- aw87xxx_fw_load);
-- }
--}
--
--static void aw87xxx_fw_load_init(struct aw87xxx *aw87xxx)
--{
--#ifdef AW_CFG_UPDATE_DELAY
-- int cfg_timer_val = AW_CFG_UPDATE_DELAY_TIMER;
--#else
-- int cfg_timer_val = 0;
--#endif
-- AW_DEV_LOGI(aw87xxx->dev, "enter");
-- snprintf(aw87xxx->fw_name, AW87XXX_FW_NAME_MAX, "%s", AW87XXX_FW_BIN_NAME);
-- aw87xxx_acf_init(&aw87xxx->aw_dev, &aw87xxx->acf_info, aw87xxx->dev_index);
--
-- INIT_DELAYED_WORK(&aw87xxx->fw_load_work, aw87xxx_fw_load_work_routine);
-- schedule_delayed_work(&aw87xxx->fw_load_work,
-- msecs_to_jiffies(cfg_timer_val));
--}
--
--/****************************************************************************
-- *
-- *aw87xxx attribute node
-- *
-- ****************************************************************************/
--static ssize_t aw87xxx_attr_get_reg(struct device *dev,
-- struct device_attribute *attr, char *buf)
--{
-- ssize_t len = 0;
-- int ret = 0;
-- unsigned int i = 0;
-- unsigned char reg_val = 0;
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-- struct aw_device *aw_dev = &aw87xxx->aw_dev;
--
-- mutex_lock(&aw87xxx->reg_lock);
-- for (i = 0; i < aw_dev->reg_max_addr; i++) {
-- if (!(aw_dev->reg_access[i] & AW_DEV_REG_RD_ACCESS))
-- continue;
-- ret = aw87xxx_dev_i2c_read_byte(&aw87xxx->aw_dev, i, &reg_val);
-- if (ret < 0) {
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- "read reg [0x%x] failed\n", i);
-- AW_DEV_LOGE(aw87xxx->dev, "read reg [0x%x] failed", i);
-- } else {
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- "reg:0x%02X=0x%02X\n", i, reg_val);
-- AW_DEV_LOGD(aw87xxx->dev, "reg:0x%02X=0x%02X",
-- i, reg_val);
-- }
-- }
-- mutex_unlock(&aw87xxx->reg_lock);
--
-- return len;
--}
--
--static ssize_t aw87xxx_attr_set_reg(struct device *dev,
-- struct device_attribute *attr, const char *buf,
-- size_t len)
--{
-- unsigned int databuf[2] = { 0 };
-- int ret = 0;
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
--
-- mutex_lock(&aw87xxx->reg_lock);
-- if (sscanf(buf, "0x%x 0x%x", &databuf[0], &databuf[1]) == 2) {
-- if (databuf[0] >= aw87xxx->aw_dev.reg_max_addr) {
-- AW_DEV_LOGE(aw87xxx->dev, "set reg[0x%x] error,is out of reg_addr_max[0x%x]",
-- databuf[0], aw87xxx->aw_dev.reg_max_addr);
-- mutex_unlock(&aw87xxx->reg_lock);
-- return -EINVAL;
-- }
--
-- ret = aw87xxx_dev_i2c_write_byte(&aw87xxx->aw_dev,
-- databuf[0], databuf[1]);
-- if (ret < 0)
-- AW_DEV_LOGE(aw87xxx->dev, "set [0x%x]=0x%x failed",
-- databuf[0], databuf[1]);
-- else
-- AW_DEV_LOGD(aw87xxx->dev, "set [0x%x]=0x%x succeed",
-- databuf[0], databuf[1]);
-- } else {
-- AW_DEV_LOGE(aw87xxx->dev, "i2c write cmd input error");
-- }
-- mutex_unlock(&aw87xxx->reg_lock);
--
-- return len;
--}
--
--static ssize_t aw87xxx_attr_get_profile(struct device *dev,
-- struct device_attribute *attr, char *buf)
--{
-- ssize_t len = 0;
-- unsigned int i = 0;
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-- struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
--
-- if (!prof_info->status) {
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- "profile_cfg not load\n");
-- return len;
-- }
--
-- AW_DEV_LOGI(aw87xxx->dev, "current profile:[%s]", aw87xxx->current_profile);
--
-- for (i = 0; i < prof_info->count; i++) {
-- if (!strncmp(aw87xxx->current_profile, prof_info->prof_name_list[i],
-- AW_PROFILE_STR_MAX))
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- ">%s\n", prof_info->prof_name_list[i]);
-- else
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- " %s\n", prof_info->prof_name_list[i]);
-- }
--
-- return len;
--}
--
--static ssize_t aw87xxx_attr_set_profile(struct device *dev,
-- struct device_attribute *attr, const char *buf,
-- size_t len)
--{
-- char profile[AW_PROFILE_STR_MAX] = {0};
-- int ret = 0;
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
--
-- if (strlen(buf) > AW_PROFILE_STR_MAX) {
-- AW_DEV_LOGE(aw87xxx->dev, "input profile_str_len is out of max[%d]",
-- AW_PROFILE_STR_MAX);
-- return -EINVAL;
-- }
--
-- if (sscanf(buf, "%s", profile) == 1) {
-- AW_DEV_LOGD(aw87xxx->dev, "set profile [%s]", profile);
-- ret = aw87xxx_update_profile(aw87xxx, profile);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "set profile[%s] failed",
-- profile);
-- return ret;
-- }
-- }
--
-- return len;
--}
--
--static ssize_t aw87xxx_attr_get_hwen(struct device *dev,
-- struct device_attribute *attr, char *buf)
--{
-- ssize_t len = 0;
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-- int hwen = aw87xxx->aw_dev.hwen_status;
--
-- if (hwen >= AW_DEV_HWEN_INVALID)
-- len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: invalid\n");
-- else if (hwen == AW_DEV_HWEN_ON)
-- len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: on\n");
-- else if (hwen == AW_DEV_HWEN_OFF)
-- len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: off\n");
--
-- return len;
--}
--
--static ssize_t aw87xxx_attr_set_hwen(struct device *dev,
-- struct device_attribute *attr, const char *buf,
-- size_t len)
--{
-- int ret = -1;
-- unsigned int state;
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
--
-- ret = kstrtouint(buf, 0, &state);
-- if (ret) {
-- AW_DEV_LOGE(aw87xxx->dev, "fail to channelge str to int");
-- return ret;
-- }
--
-- mutex_lock(&aw87xxx->reg_lock);
-- if (state == AW_DEV_HWEN_OFF)
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false); /*OFF*/
-- else if (state == AW_DEV_HWEN_ON)
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true); /*ON*/
-- else
-- AW_DEV_LOGE(aw87xxx->dev, "input [%d] error, hwen_on=[%d],hwen_off=[%d]",
-- state, AW_DEV_HWEN_ON, AW_DEV_HWEN_OFF);
-- mutex_unlock(&aw87xxx->reg_lock);
-- return len;
--}
--
--int aw87xxx_awrw_write(struct aw87xxx *aw87xxx,
-- const char *buf, size_t count)
--{
-- int i = 0, ret = -1;
-- char *data_buf = NULL;
-- int buf_len = 0;
-- int temp_data = 0;
-- int data_str_size = 0;
-- char *reg_data;
-- struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
--
-- AW_DEV_LOGD(aw87xxx->dev, "enter");
-- /* one addr or one data string Composition of Contains two bytes of symbol(0X)*/
-- /* and two byte of hexadecimal data*/
-- data_str_size = 2 + 2 * AWRW_DATA_BYTES;
--
-- /* The buf includes the first address of the register to be written and all data */
-- buf_len = AWRW_ADDR_BYTES + packet->reg_num * AWRW_DATA_BYTES;
-- AW_DEV_LOGI(aw87xxx->dev, "buf_len = %d,reg_num = %d", buf_len, packet->reg_num);
-- data_buf = vmalloc(buf_len);
-- if (data_buf == NULL) {
-- AW_DEV_LOGE(aw87xxx->dev, "alloc memory failed");
-- return -ENOMEM;
-- }
-- memset(data_buf, 0, buf_len);
--
-- data_buf[0] = packet->reg_addr;
-- reg_data = data_buf + 1;
--
-- AW_DEV_LOGD(aw87xxx->dev, "reg_addr: 0x%02x", data_buf[0]);
--
-- /*ag:0x00 0x01 0x01 0x01 0x01 0x00\x0a*/
-- for (i = 0; i < packet->reg_num; i++) {
-- ret = sscanf(buf + AWRW_HDR_LEN + 1 + i * (data_str_size + 1),
-- "0x%x", &temp_data);
-- if (ret != 1) {
-- AW_DEV_LOGE(aw87xxx->dev, "sscanf failed,ret=%d", ret);
-- vfree(data_buf);
-- data_buf = NULL;
-- return ret;
-- }
-- reg_data[i] = temp_data;
-- AW_DEV_LOGD(aw87xxx->dev, "[%d] : 0x%02x", i, reg_data[i]);
-- }
--
-- mutex_lock(&aw87xxx->reg_lock);
-- ret = i2c_master_send(aw87xxx->aw_dev.i2c, data_buf, buf_len);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "write failed");
-- vfree(data_buf);
-- data_buf = NULL;
-- return -EFAULT;
-- }
-- mutex_unlock(&aw87xxx->reg_lock);
--
-- vfree(data_buf);
-- data_buf = NULL;
--
-- AW_DEV_LOGD(aw87xxx->dev, "down");
-- return 0;
--}
--
--static int aw87xxx_awrw_data_check(struct aw87xxx *aw87xxx,
-- int *data, size_t count)
--{
-- struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-- int req_data_len = 0;
-- int act_data_len = 0;
-- int data_str_size = 0;
--
-- if ((data[AWRW_HDR_ADDR_BYTES] != AWRW_ADDR_BYTES) ||
-- (data[AWRW_HDR_DATA_BYTES] != AWRW_DATA_BYTES)) {
-- AW_DEV_LOGE(aw87xxx->dev, "addr_bytes [%d] or data_bytes [%d] unsupport",
-- data[AWRW_HDR_ADDR_BYTES], data[AWRW_HDR_DATA_BYTES]);
-- return -EINVAL;
-- }
--
-- /* one data string Composition of Contains two bytes of symbol(0x)*/
-- /* and two byte of hexadecimal data*/
-- data_str_size = 2 + 2 * AWRW_DATA_BYTES;
-- act_data_len = count - AWRW_HDR_LEN - 1;
--
-- /* There is a comma(,) or space between each piece of data */
-- if (data[AWRW_HDR_WR_FLAG] == AWRW_FLAG_WRITE) {
-- /*ag:0x00 0x01 0x01 0x01 0x01 0x00\x0a*/
-- req_data_len = (data_str_size + 1) * packet->reg_num;
-- if (req_data_len > act_data_len) {
-- AW_DEV_LOGE(aw87xxx->dev, "data_len checkfailed,requeset data_len [%d],actaul data_len [%d]",
-- req_data_len, act_data_len);
-- return -EINVAL;
-- }
-- }
--
-- return 0;
--}
--
--/* flag addr_bytes data_bytes reg_num reg_addr*/
--static int aw87xxx_awrw_parse_buf(struct aw87xxx *aw87xxx,
-- const char *buf, size_t count, int *wr_status)
--{
-- int data[AWRW_HDR_MAX] = {0};
-- struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-- int ret = -1;
--
-- if (sscanf(buf, "0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",
-- &data[AWRW_HDR_WR_FLAG], &data[AWRW_HDR_ADDR_BYTES],
-- &data[AWRW_HDR_DATA_BYTES], &data[AWRW_HDR_REG_NUM],
-- &data[AWRW_HDR_REG_ADDR]) == 5) {
--
-- packet->reg_addr = data[AWRW_HDR_REG_ADDR];
-- packet->reg_num = data[AWRW_HDR_REG_NUM];
-- *wr_status = data[AWRW_HDR_WR_FLAG];
-- ret = aw87xxx_awrw_data_check(aw87xxx, data, count);
-- if (ret < 0)
-- return ret;
--
-- return 0;
-- }
--
-- return -EINVAL;
--}
--
--static ssize_t aw87xxx_attr_awrw_store(struct device *dev,
-- struct device_attribute *attr, const char *buf, size_t count)
--{
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-- struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-- int wr_status = 0;
-- int ret = -1;
--
-- if (count < AWRW_HDR_LEN) {
-- AW_DEV_LOGE(aw87xxx->dev, "data count too smaller, please check write format");
-- AW_DEV_LOGE(aw87xxx->dev, "string %s,count=%ld",
-- buf, (u_long)count);
-- return -EINVAL;
-- }
--
-- AW_DEV_LOGI(aw87xxx->dev, "string:[%s],count=%ld", buf, (u_long)count);
-- ret = aw87xxx_awrw_parse_buf(aw87xxx, buf, count, &wr_status);
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "can not parse string");
-- return ret;
-- }
--
-- if (wr_status == AWRW_FLAG_WRITE) {
-- ret = aw87xxx_awrw_write(aw87xxx, buf, count);
-- if (ret < 0)
-- return ret;
-- } else if (wr_status == AWRW_FLAG_READ) {
-- packet->status = AWRW_I2C_ST_READ;
-- AW_DEV_LOGI(aw87xxx->dev, "read_cmd:reg_addr[0x%02x], reg_num[%d]",
-- packet->reg_addr, packet->reg_num);
-- } else {
-- AW_DEV_LOGE(aw87xxx->dev, "please check str format, unsupport read_write_status: %d",
-- wr_status);
-- return -EINVAL;
-- }
--
-- return count;
--}
--
--static ssize_t aw87xxx_attr_awrw_show(struct device *dev,
-- struct device_attribute *attr, char *buf)
--{
-- struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-- struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-- int data_len = 0;
-- size_t len = 0;
-- int ret = -1, i = 0;
-- char *reg_data = NULL;
--
-- if (packet->status != AWRW_I2C_ST_READ) {
-- AW_DEV_LOGE(aw87xxx->dev, "please write read cmd first");
-- return -EINVAL;
-- }
--
-- data_len = AWRW_DATA_BYTES * packet->reg_num;
-- reg_data = (char *)vmalloc(data_len);
-- if (reg_data == NULL) {
-- AW_DEV_LOGE(aw87xxx->dev, "memory alloc failed");
-- ret = -EINVAL;
-- goto exit;
-- }
--
-- mutex_lock(&aw87xxx->reg_lock);
-- ret = aw87xxx_dev_i2c_read_msg(&aw87xxx->aw_dev, packet->reg_addr,
-- (char *)reg_data, data_len);
-- if (ret < 0) {
-- ret = -EFAULT;
-- mutex_unlock(&aw87xxx->reg_lock);
-- goto exit;
-- }
-- mutex_unlock(&aw87xxx->reg_lock);
--
-- AW_DEV_LOGI(aw87xxx->dev, "reg_addr 0x%02x, reg_num %d",
-- packet->reg_addr, packet->reg_num);
--
-- for (i = 0; i < data_len; i++) {
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- "0x%02x,", reg_data[i]);
-- AW_DEV_LOGI(aw87xxx->dev, "0x%02x", reg_data[i]);
-- }
--
-- ret = len;
--
--exit:
-- if (reg_data) {
-- vfree(reg_data);
-- reg_data = NULL;
-- }
-- packet->status = AWRW_I2C_ST_NONE;
-- return ret;
--}
--
--static ssize_t aw87xxx_drv_ver_show(struct device *dev,
-- struct device_attribute *attr, char *buf)
--{
-- ssize_t len = 0;
--
-- len += snprintf(buf + len, PAGE_SIZE - len,
-- "driver_ver: %s \n", AW87XXX_DRIVER_VERSION);
--
-- return len;
--}
--
--static DEVICE_ATTR(reg, S_IWUSR | S_IRUGO,
-- aw87xxx_attr_get_reg, aw87xxx_attr_set_reg);
--static DEVICE_ATTR(profile, S_IWUSR | S_IRUGO,
-- aw87xxx_attr_get_profile, aw87xxx_attr_set_profile);
--static DEVICE_ATTR(hwen, S_IWUSR | S_IRUGO,
-- aw87xxx_attr_get_hwen, aw87xxx_attr_set_hwen);
--static DEVICE_ATTR(awrw, S_IWUSR | S_IRUGO,
-- aw87xxx_attr_awrw_show, aw87xxx_attr_awrw_store);
--static DEVICE_ATTR(drv_ver, S_IRUGO, aw87xxx_drv_ver_show, NULL);
--
--static struct attribute *aw87xxx_attributes[] = {
-- &dev_attr_reg.attr,
-- &dev_attr_profile.attr,
-- &dev_attr_hwen.attr,
-- &dev_attr_awrw.attr,
-- &dev_attr_drv_ver.attr,
-- NULL
--};
--
--static struct attribute_group aw87xxx_attribute_group = {
-- .attrs = aw87xxx_attributes
--};
--
--/****************************************************************************
-- *
-- *aw87xxx device probe
-- *
-- ****************************************************************************/
--static const struct acpi_gpio_params reset_gpio = { 0, 0, false };
--static const struct acpi_gpio_mapping reset_acpi_gpios[] = {
-- { "reset-gpios", &reset_gpio, 1 },
-- { }
--};
--
--static struct aw87xxx *aw87xxx_malloc_init(struct i2c_client *client)
--{
-- struct aw87xxx *aw87xxx = NULL;
--
-- aw87xxx = devm_kzalloc(&client->dev, sizeof(struct aw87xxx),
-- GFP_KERNEL);
-- if (aw87xxx == NULL) {
-- AW_DEV_LOGE(&client->dev, "failed to devm_kzalloc aw87xxx");
-- return NULL;
-- }
-- memset(aw87xxx, 0, sizeof(struct aw87xxx));
--
-- aw87xxx->dev = &client->dev;
-- aw87xxx->aw_dev.dev = &client->dev;
-- aw87xxx->aw_dev.i2c_bus = client->adapter->nr;
-- aw87xxx->aw_dev.i2c_addr = client->addr;
-- aw87xxx->aw_dev.i2c = client;
-- aw87xxx->aw_dev.hwen_status = false;
-- aw87xxx->aw_dev.reg_access = NULL;
-- aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_INVALID;
-- aw87xxx->off_bin_status = AW87XXX_NO_OFF_BIN;
-- aw87xxx->codec = NULL;
-- aw87xxx->current_profile = aw87xxx->prof_off_name;
--
-- mutex_init(&aw87xxx->reg_lock);
--
-- AW_DEV_LOGI(&client->dev, "struct aw87xxx devm_kzalloc and init down");
-- return aw87xxx;
--}
--
--static int aw87xxx_i2c_probe(struct i2c_client *client)
--{
-- struct device_node *dev_node = client->dev.of_node;
-- struct aw87xxx *aw87xxx = NULL;
-- struct gpio_desc *gpiod = NULL;
-- int ret = -1;
--
--
--// To do, add this function
--//acpi_dev_add_driver_gpios()
--
-- if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
-- AW_DEV_LOGE(&client->dev, "check_functionality failed");
-- ret = -ENODEV;
-- goto exit_check_functionality_failed;
-- }
--
-- /* aw87xxx i2c_dev struct init */
-- aw87xxx = aw87xxx_malloc_init(client);
-- if (aw87xxx == NULL)
-- goto exit_malloc_init_failed;
--
-- i2c_set_clientdata(client, aw87xxx);
--
-- aw87xxx_device_parse_port_id_dt(&aw87xxx->aw_dev);
-- aw87xxx_device_parse_topo_id_dt(&aw87xxx->aw_dev);
--
-- /* aw87xxx Get ACPI GPIO */
--/*
-- ret = devm_acpi_dev_add_driver_gpios(aw87xxx->dev, reset_acpi_gpios);
-- if(ret){
-- AW_DEV_LOGE(aw87xxx->dev, "Unable to add GPIO mapping table");
-- goto exit_device_init_failed;
-- }
--
-- gpiod = gpiod_get_optional(aw87xxx->dev, "reset", GPIOD_OUT_LOW);
-- if (IS_ERR(gpiod)){
-- AW_DEV_LOGE(aw87xxx->dev, "Get gpiod failed");
-- goto exit_device_init_failed;
-- }
--
-- aw87xxx->aw_dev.rst_gpio = desc_to_gpio(gpiod);
-- aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_OFF;
-- AW_DEV_LOGI(aw87xxx->dev, "reset gpio[%d] parse succeed", aw87xxx->aw_dev.rst_gpio);
-- if (gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) {
-- ret = devm_gpio_request_one(aw87xxx->dev, aw87xxx->aw_dev.rst_gpio, GPIOF_OUT_INIT_LOW, "aw87xxx_reset");
-- if (ret < 0) {
-- AW_DEV_LOGE(aw87xxx->dev, "reset request failed");
-- goto exit_device_init_failed;
-- }
-- }
--*/
--
-- /*Disabling RESET GPIO*/
-- AW_DEV_LOGI(aw87xxx->dev, "no reset gpio provided, hardware reset unavailable");
-- aw87xxx->aw_dev.rst_gpio = AW_NO_RESET_GPIO;
-- aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_INVALID;
--
--
-- /*hw power on PA*/
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
--
-- /* aw87xxx devices private attributes init */
-- ret = aw87xxx_dev_init(&aw87xxx->aw_dev);
-- if (ret < 0)
-- goto exit_device_init_failed;
--
-- /*product register reset */
-- aw87xxx_dev_soft_reset(&aw87xxx->aw_dev);
--
-- /*hw power off */
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
--
-- /* create debug attrbute nodes */
-- ret = sysfs_create_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
-- if (ret < 0)
-- AW_DEV_LOGE(aw87xxx->dev, "failed to create sysfs nodes, will not allowed to use");
--
-- /* cfg_load init */
-- aw87xxx_fw_load_init(aw87xxx);
--
-- /*monitor init*/
-- aw87xxx_monitor_init(aw87xxx->dev, &aw87xxx->monitor, dev_node);
--
-- /*add device to total list */
-- mutex_lock(&g_aw87xxx_mutex_lock);
-- g_aw87xxx_dev_cnt++;
-- list_add(&aw87xxx->list, &g_aw87xxx_list);
-- aw87xxx->dev_index = g_aw87xxx_dev_cnt;
--
-- mutex_unlock(&g_aw87xxx_mutex_lock);
-- AW_DEV_LOGI(aw87xxx->dev, "succeed, dev_index=[%d], g_aw87xxx_dev_cnt= [%d]",
-- aw87xxx->dev_index, g_aw87xxx_dev_cnt);
--
-- return 0;
--
--exit_device_init_failed:
-- AW_DEV_LOGE(aw87xxx->dev, "pa init failed");
--
-- devm_kfree(&client->dev, aw87xxx);
-- aw87xxx = NULL;
--exit_malloc_init_failed:
--exit_check_functionality_failed:
-- return ret;
--}
--
--static void aw87xxx_i2c_remove(struct i2c_client *client)
--{
-- struct aw87xxx *aw87xxx = i2c_get_clientdata(client);
--
-- aw87xxx_monitor_exit(&aw87xxx->monitor);
--
-- /*rm attr node*/
-- sysfs_remove_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
--
-- aw87xxx_fw_cfg_free(aw87xxx);
--
-- mutex_lock(&g_aw87xxx_mutex_lock);
-- g_aw87xxx_dev_cnt--;
-- list_del(&aw87xxx->list);
-- mutex_unlock(&g_aw87xxx_mutex_lock);
--
-- devm_kfree(&client->dev, aw87xxx);
-- aw87xxx = NULL;
--
--// return 0;
--}
--
--static void aw87xxx_i2c_shutdown(struct i2c_client *client)
--{
-- struct aw87xxx *aw87xxx = i2c_get_clientdata(client);
--
-- AW_DEV_LOGI(&client->dev, "enter");
--
-- /*soft and hw power off*/
-- aw87xxx_update_profile(aw87xxx, aw87xxx->prof_off_name);
--}
--
--static const struct acpi_device_id aw87xxx_acpi_match[] = {
-- { "AWDZ8830", 0 },
-- { }
--};
--MODULE_DEVICE_TABLE(acpi, aw87xxx_acpi_match);
--
--// This is not necessary if the acpi match probes correctly. This is needed for userspace `new_device() functionality
--static const struct i2c_device_id aw87xxx_i2c_id[] = {
-- {AW87XXX_I2C_NAME, 0},
-- {},
--};
--
--static struct i2c_driver aw87xxx_i2c_driver = {
-- .driver = {
-- .owner = THIS_MODULE,
-- .name = AW87XXX_I2C_NAME,
-- .acpi_match_table = aw87xxx_acpi_match,
-- },
-- .probe = aw87xxx_i2c_probe,
-- .remove = aw87xxx_i2c_remove,
-- .shutdown = aw87xxx_i2c_shutdown,
-- .id_table = aw87xxx_i2c_id,
--};
--
--module_i2c_driver(aw87xxx_i2c_driver)
--
--MODULE_AUTHOR("<zhaozhongbo@awinic.com>");
--MODULE_DESCRIPTION("awinic aw87xxx pa driver");
--MODULE_LICENSE("GPL v2");
-+/*
-+ * aw87xxx.c aw87xxx pa module
-+ *
-+ * Copyright (c) 2021 AWINIC Technology CO., LTD
-+ *
-+ * Author: Barry <zhaozhongbo@awinic.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#include <linux/i2c.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <linux/gpio.h>
-+#include <linux/of_gpio.h>
-+#include <linux/gpio/consumer.h>
-+#include <linux/interrupt.h>
-+#include <linux/delay.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/device.h>
-+#include <linux/irq.h>
-+#include <linux/firmware.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/proc_fs.h>
-+#include <linux/uaccess.h>
-+#include <linux/io.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/gameport.h>
-+#include <linux/moduleparam.h>
-+#include <linux/mutex.h>
-+#include <linux/timer.h>
-+#include <linux/workqueue.h>
-+#include <linux/hrtimer.h>
-+#include <linux/ktime.h>
-+#include <linux/kthread.h>
-+#include <uapi/sound/asound.h>
-+#include <sound/control.h>
-+#include <sound/soc.h>
-+#include "aw87xxx.h"
-+#include "aw87xxx_device.h"
-+#include "aw87xxx_log.h"
-+#include "aw87xxx_monitor.h"
-+#include "aw87xxx_acf_bin.h"
-+#include "aw87xxx_bin_parse.h"
-+#include "aw87xxx_dsp.h"
-+
-+/*****************************************************************
-+* aw87xxx marco
-+******************************************************************/
-+#define AW87XXX_I2C_NAME "aw87xxx_pa"
-+#define AW87XXX_DRIVER_VERSION "v2.7.0"
-+#define AW87XXX_FW_BIN_NAME "aw87xxx_acf.bin"
-+#define AW87XXX_PROF_MUSIC "Music"
-+/*************************************************************************
-+ * aw87xxx variable
-+ ************************************************************************/
-+static LIST_HEAD(g_aw87xxx_list);
-+static DEFINE_MUTEX(g_aw87xxx_mutex_lock);
-+unsigned int g_aw87xxx_dev_cnt = 0;
-+
-+static const char *const aw87xxx_monitor_switch[] = {"Disable", "Enable"};
-+static const char *const aw87xxx_spin_switch[] = {"spin_0", "spin_90",
-+ "spin_180", "spin_270"};
-+#ifdef AW_KERNEL_VER_OVER_4_19_1
-+static struct aw_componet_codec_ops aw_componet_codec_ops = {
-+ .add_codec_controls = snd_soc_add_component_controls,
-+ .unregister_codec = snd_soc_unregister_component,
-+};
-+#else
-+static struct aw_componet_codec_ops aw_componet_codec_ops = {
-+ .add_codec_controls = snd_soc_add_codec_controls,
-+ .unregister_codec = snd_soc_unregister_codec,
-+};
-+#endif
-+
-+
-+/************************************************************************
-+ *
-+ * aw87xxx device update profile
-+ *
-+ ************************************************************************/
-+static int aw87xxx_power_down(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = 0;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+ struct aw_data_container *data_container = NULL;
-+ struct aw_device *aw_dev = &aw87xxx->aw_dev;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (!prof_info->status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "profile_cfg not load");
-+ return -EINVAL;
-+ }
-+
-+ prof_desc = aw87xxx_acf_get_prof_desc_form_name(aw87xxx->dev, &aw87xxx->acf_info, profile);
-+ if (prof_desc == NULL)
-+ goto no_bin_pwr_off;
-+
-+ if (!prof_desc->prof_st)
-+ goto no_bin_pwr_off;
-+
-+
-+ data_container = &prof_desc->data_container;
-+ AW_DEV_LOGD(aw87xxx->dev, "get profile[%s] data len [%d]",
-+ profile, data_container->len);
-+
-+ if (aw_dev->hwen_status == AW_DEV_HWEN_OFF) {
-+ AW_DEV_LOGI(aw87xxx->dev, "profile[%s] has already load ", profile);
-+ } else {
-+ if (aw_dev->ops.pwr_off_func) {
-+ ret = aw_dev->ops.pwr_off_func(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ", profile);
-+ goto pwr_off_failed;
-+ }
-+ } else {
-+ ret = aw87xxx_dev_default_pwr_off(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ", profile);
-+ goto pwr_off_failed;
-+ }
-+ }
-+ }
-+
-+ aw87xxx->current_profile = prof_desc->prof_name;
-+ return 0;
-+
-+pwr_off_failed:
-+no_bin_pwr_off:
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-+ aw87xxx->current_profile = aw87xxx->prof_off_name;
-+ return ret;
-+}
-+
-+static int aw87xxx_power_on(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = -EINVAL;
-+ struct aw_prof_desc *prof_desc = NULL;
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+ struct aw_data_container *data_container = NULL;
-+ struct aw_device *aw_dev = &aw87xxx->aw_dev;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (!prof_info->status) {
-+ AW_DEV_LOGE(aw87xxx->dev, "profile_cfg not load");
-+ return -EINVAL;
-+ }
-+
-+ if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX))
-+ return aw87xxx_power_down(aw87xxx, profile);
-+
-+ prof_desc = aw87xxx_acf_get_prof_desc_form_name(aw87xxx->dev, &aw87xxx->acf_info, profile);
-+ if (prof_desc == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not found [%s] parameter", profile);
-+ return -EINVAL;
-+ }
-+
-+ if (!prof_desc->prof_st) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not found data container");
-+ return -EINVAL;
-+ }
-+
-+ data_container = &prof_desc->data_container;
-+ AW_DEV_LOGD(aw87xxx->dev, "get profile[%s] data len [%d]",
-+ profile, data_container->len);
-+
-+ if (aw_dev->ops.pwr_on_func) {
-+ ret = aw_dev->ops.pwr_on_func(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-+ profile);
-+ return aw87xxx_power_down(aw87xxx, aw87xxx->prof_off_name);
-+ }
-+ } else {
-+ ret = aw87xxx_dev_default_pwr_on(aw_dev, data_container);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "load profile[%s] failed ",
-+ profile);
-+ return aw87xxx_power_down(aw87xxx, aw87xxx->prof_off_name);
-+ }
-+ }
-+
-+ aw87xxx->current_profile = prof_desc->prof_name;
-+ AW_DEV_LOGD(aw87xxx->dev, "load profile[%s] succeed", profile);
-+
-+ return 0;
-+}
-+
-+
-+
-+int aw87xxx_update_profile(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "load profile[%s] enter", profile);
-+ mutex_lock(&aw87xxx->reg_lock);
-+ aw87xxx_monitor_stop(&aw87xxx->monitor);
-+ if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX)) {
-+ ret = aw87xxx_power_down(aw87xxx, profile);
-+ } else {
-+ ret = aw87xxx_power_on(aw87xxx, profile);
-+ if (!ret)
-+ aw87xxx_monitor_start(&aw87xxx->monitor);
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ return ret;
-+}
-+
-+int aw87xxx_update_profile_esd(struct aw87xxx *aw87xxx, char *profile)
-+{
-+ int ret = -1;
-+
-+ if (0 == strncmp(profile, aw87xxx->prof_off_name, AW_PROFILE_STR_MAX))
-+ ret = aw87xxx_power_down(aw87xxx, profile);
-+ else
-+ ret = aw87xxx_power_on(aw87xxx, profile);
-+
-+ return ret;
-+}
-+
-+char *aw87xxx_show_current_profile(int dev_index)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = NULL;
-+
-+ list_for_each(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ if (aw87xxx->dev_index == dev_index) {
-+ AW_DEV_LOGI(aw87xxx->dev, "current profile is [%s]",
-+ aw87xxx->current_profile);
-+ return aw87xxx->current_profile;
-+ }
-+ }
-+
-+ AW_LOGE("not found struct aw87xxx, dev_index = [%d]", dev_index);
-+ return NULL;
-+}
-+EXPORT_SYMBOL(aw87xxx_show_current_profile);
-+
-+int aw87xxx_set_profile(int dev_index, char *profile)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = NULL;
-+
-+ list_for_each(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ if (profile && aw87xxx->dev_index == dev_index) {
-+ AW_DEV_LOGD(aw87xxx->dev, "set dev_index = %d, profile = %s",
-+ dev_index, profile);
-+ return aw87xxx_update_profile(aw87xxx, profile);
-+ }
-+ }
-+
-+ AW_LOGE("not found struct aw87xxx, dev_index = [%d]", dev_index);
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL(aw87xxx_set_profile);
-+
-+int aw87xxx_set_profile_by_id(int dev_index, int profile_id)
-+{
-+ char *profile = NULL;
-+
-+ profile = aw87xxx_ctos_get_prof_name(profile_id);
-+ if (profile == NULL) {
-+ AW_LOGE("aw87xxx, dev_index[%d] profile[%d] not support!",
-+ dev_index, profile_id);
-+ return -EINVAL;
-+ }
-+
-+ AW_LOGI("aw87xxx, dev_index[%d] set profile[%s] by id[%d]",
-+ dev_index, profile, profile_id);
-+ return aw87xxx_set_profile(dev_index, profile);
-+}
-+EXPORT_SYMBOL(aw87xxx_set_profile_by_id);
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx Kcontrols
-+ *
-+ ****************************************************************************/
-+static int aw87xxx_profile_switch_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int count = 0;
-+ char *name = NULL;
-+ char *profile_name = NULL;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+
-+ /*make sure have prof */
-+ count = aw87xxx_acf_get_profile_count(aw87xxx->dev, &aw87xxx->acf_info);
-+ if (count <= 0) {
-+ uinfo->value.enumerated.items = 0;
-+ AW_DEV_LOGE(aw87xxx->dev, "get count[%d] failed", count);
-+ return 0;
-+ }
-+
-+ uinfo->value.enumerated.items = count;
-+ if (uinfo->value.enumerated.item >= count)
-+ uinfo->value.enumerated.item = count - 1;
-+
-+ name = uinfo->value.enumerated.name;
-+ count = uinfo->value.enumerated.item;
-+ profile_name = aw87xxx_acf_get_prof_name_form_index(aw87xxx->dev,
-+ &aw87xxx->acf_info, count);
-+ if (profile_name == NULL) {
-+ strscpy(uinfo->value.enumerated.name, "NULL",
-+ strlen("NULL") + 1);
-+ return 0;
-+ }
-+
-+ strscpy(name, profile_name, sizeof(uinfo->value.enumerated.name));
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_profile_switch_put(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ int ret = -1;
-+ char *profile_name = NULL;
-+ int index = ucontrol->value.integer.value[0];
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ struct acf_bin_info *acf_info = NULL;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ acf_info = &aw87xxx->acf_info;
-+
-+ profile_name = aw87xxx_acf_get_prof_name_form_index(aw87xxx->dev, acf_info, index);
-+ if (!profile_name) {
-+ AW_DEV_LOGE(aw87xxx->dev, "not found profile name,index=[%d]",
-+ index);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "set profile [%s]", profile_name);
-+
-+ ret = aw87xxx_update_profile(aw87xxx, profile_name);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "set dev_index[%d] profile failed, profile = %s",
-+ aw87xxx->dev_index, profile_name);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_profile_switch_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ int index = 0;
-+ char *profile;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ if (!aw87xxx->current_profile) {
-+ AW_DEV_LOGE(aw87xxx->dev, "profile not init");
-+ return -EINVAL;
-+ }
-+
-+ profile = aw87xxx->current_profile;
-+ AW_DEV_LOGI(aw87xxx->dev, "current profile:[%s]",
-+ aw87xxx->current_profile);
-+
-+
-+ index = aw87xxx_acf_get_prof_index_form_name(aw87xxx->dev,
-+ &aw87xxx->acf_info, aw87xxx->current_profile);
-+ if (index < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "get profile index failed");
-+ return index;
-+ }
-+
-+ ucontrol->value.integer.value[0] = index;
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_vmax_get_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-+ uinfo->count = 1;
-+ uinfo->value.integer.min = INT_MIN;
-+ uinfo->value.integer.max = AW_VMAX_MAX;
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_vmax_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ int ret = -1;
-+ int vmax_val = 0;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ if (aw87xxx == NULL) {
-+ AW_LOGE("get struct aw87xxx failed");
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_monitor_no_dsp_get_vmax(&aw87xxx->monitor, &vmax_val);
-+ if (ret < 0)
-+ return ret;
-+
-+ ucontrol->value.integer.value[0] = vmax_val;
-+ AW_DEV_LOGI(aw87xxx->dev, "get vmax = [0x%x]", vmax_val);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_monitor_switch_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int count;
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+ count = ARRAY_SIZE(aw87xxx_monitor_switch);
-+
-+ uinfo->value.enumerated.items = count;
-+
-+ if (uinfo->value.enumerated.item >= count)
-+ uinfo->value.enumerated.item = count - 1;
-+
-+ strscpy(uinfo->value.enumerated.name,
-+ aw87xxx_monitor_switch[uinfo->value.enumerated.item],
-+ strlen(aw87xxx_monitor_switch[uinfo->value.enumerated.item]) + 1);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_monitor_switch_put(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ uint32_t ctrl_value = ucontrol->value.integer.value[0];
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ struct aw_monitor *aw_monitor = &aw87xxx->monitor;
-+ int ret = -1;
-+
-+ ret = aw87xxx_dev_monitor_switch_set(aw_monitor, ctrl_value);
-+ if (ret)
-+ return ret;
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_monitor_switch_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ struct aw_monitor *aw_monitor = &aw87xxx->monitor;
-+
-+ ucontrol->value.integer.value[0] = aw_monitor->monitor_hdr.monitor_switch;
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "monitor switch is %ld", ucontrol->value.integer.value[0]);
-+ return 0;
-+}
-+
-+static int aw87xxx_spin_switch_info(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int count;
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+ count = ARRAY_SIZE(aw87xxx_spin_switch);
-+
-+ uinfo->value.enumerated.items = count;
-+
-+ if (uinfo->value.enumerated.item >= count)
-+ uinfo->value.enumerated.item = count - 1;
-+
-+ strscpy(uinfo->value.enumerated.name,
-+ aw87xxx_spin_switch[uinfo->value.enumerated.item],
-+ strlen(aw87xxx_spin_switch[uinfo->value.enumerated.item]) + 1);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_spin_switch_put(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ uint32_t ctrl_value = 0;
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+ ctrl_value = ucontrol->value.integer.value[0];
-+
-+ ret = aw87xxx_dsp_set_spin(ctrl_value);
-+ if (ret) {
-+ AW_DEV_LOGE(aw87xxx->dev, "write spin failed");
-+ return ret;
-+ }
-+ AW_DEV_LOGD(aw87xxx->dev, "write spin done ctrl_value=%d", ctrl_value);
-+ return 0;
-+}
-+
-+static int aw87xxx_spin_switch_get(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct aw87xxx *aw87xxx = (struct aw87xxx *)kcontrol->private_value;
-+
-+ ucontrol->value.integer.value[0] = aw87xxx_dsp_get_spin();
-+ AW_DEV_LOGD(aw87xxx->dev, "current spin is %ld", ucontrol->value.integer.value[0]);
-+
-+ return 0;
-+}
-+
-+
-+static int aw87xxx_kcontrol_dynamic_create(struct aw87xxx *aw87xxx,
-+ void *codec)
-+{
-+ struct snd_kcontrol_new *aw87xxx_kcontrol = NULL;
-+ aw_snd_soc_codec_t *soc_codec = (aw_snd_soc_codec_t *)codec;
-+ char *kctl_name[AW87XXX_PRIVATE_KCONTROL_NUM];
-+ int kcontrol_num = AW87XXX_PRIVATE_KCONTROL_NUM;
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ aw87xxx->codec = soc_codec;
-+
-+ aw87xxx_kcontrol = devm_kzalloc(aw87xxx->dev,
-+ sizeof(struct snd_kcontrol_new) * kcontrol_num,
-+ GFP_KERNEL);
-+ if (aw87xxx_kcontrol == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "aw87xxx_kcontrol devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ kctl_name[0] = devm_kzalloc(aw87xxx->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[0] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[0], AW_NAME_BUF_MAX, "aw87xxx_profile_switch_%d",
-+ aw87xxx->dev_index);
-+
-+ aw87xxx_kcontrol[0].name = kctl_name[0];
-+ aw87xxx_kcontrol[0].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[0].info = aw87xxx_profile_switch_info;
-+ aw87xxx_kcontrol[0].get = aw87xxx_profile_switch_get;
-+ aw87xxx_kcontrol[0].put = aw87xxx_profile_switch_put;
-+ aw87xxx_kcontrol[0].private_value = (unsigned long)aw87xxx;
-+
-+ kctl_name[1] = devm_kzalloc(aw87xxx->codec->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[1] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[1], AW_NAME_BUF_MAX, "aw87xxx_vmax_get_%d",
-+ aw87xxx->dev_index);
-+
-+ aw87xxx_kcontrol[1].name = kctl_name[1];
-+ aw87xxx_kcontrol[1].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[1].access = SNDRV_CTL_ELEM_ACCESS_READ;
-+ aw87xxx_kcontrol[1].info = aw87xxx_vmax_get_info;
-+ aw87xxx_kcontrol[1].get = aw87xxx_vmax_get;
-+ aw87xxx_kcontrol[1].private_value = (unsigned long)aw87xxx;
-+
-+ kctl_name[2] = devm_kzalloc(aw87xxx->codec->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[2] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[2], AW_NAME_BUF_MAX, "aw87xxx_monitor_switch_%d",
-+ aw87xxx->dev_index);
-+
-+ aw87xxx_kcontrol[2].name = kctl_name[2];
-+ aw87xxx_kcontrol[2].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[2].info = aw87xxx_monitor_switch_info;
-+ aw87xxx_kcontrol[2].get = aw87xxx_monitor_switch_get;
-+ aw87xxx_kcontrol[2].put = aw87xxx_monitor_switch_put;
-+ aw87xxx_kcontrol[2].private_value = (unsigned long)aw87xxx;
-+
-+ ret = aw_componet_codec_ops.add_codec_controls(aw87xxx->codec,
-+ aw87xxx_kcontrol, kcontrol_num);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "add codec controls failed, ret = %d",
-+ ret);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "add codec controls[%s,%s,%s]",
-+ aw87xxx_kcontrol[0].name,
-+ aw87xxx_kcontrol[1].name,
-+ aw87xxx_kcontrol[2].name);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_public_kcontrol_create(struct aw87xxx *aw87xxx,
-+ void *codec)
-+{
-+ struct snd_kcontrol_new *aw87xxx_kcontrol = NULL;
-+ aw_snd_soc_codec_t *soc_codec = (aw_snd_soc_codec_t *)codec;
-+ char *kctl_name[AW87XXX_PUBLIC_KCONTROL_NUM];
-+ int kcontrol_num = AW87XXX_PUBLIC_KCONTROL_NUM;
-+ int ret = -1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ aw87xxx->codec = soc_codec;
-+
-+ aw87xxx_kcontrol = devm_kzalloc(aw87xxx->dev,
-+ sizeof(struct snd_kcontrol_new) * kcontrol_num,
-+ GFP_KERNEL);
-+ if (aw87xxx_kcontrol == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "aw87xxx_kcontrol devm_kzalloc failed");
-+ return -ENOMEM;
-+ }
-+
-+ kctl_name[0] = devm_kzalloc(aw87xxx->dev, AW_NAME_BUF_MAX,
-+ GFP_KERNEL);
-+ if (kctl_name[0] == NULL)
-+ return -ENOMEM;
-+
-+ snprintf(kctl_name[0], AW_NAME_BUF_MAX, "aw87xxx_spin_switch");
-+
-+ aw87xxx_kcontrol[0].name = kctl_name[0];
-+ aw87xxx_kcontrol[0].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-+ aw87xxx_kcontrol[0].info = aw87xxx_spin_switch_info;
-+ aw87xxx_kcontrol[0].get = aw87xxx_spin_switch_get;
-+ aw87xxx_kcontrol[0].put = aw87xxx_spin_switch_put;
-+ aw87xxx_kcontrol[0].private_value = (unsigned long)aw87xxx;
-+
-+ ret = aw_componet_codec_ops.add_codec_controls(aw87xxx->codec,
-+ aw87xxx_kcontrol, kcontrol_num);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "add codec controls failed, ret = %d",
-+ ret);
-+ return ret;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "add public codec controls[%s]",
-+ aw87xxx_kcontrol[0].name);
-+
-+ return 0;
-+}
-+
-+/****************************************************************************
-+ *
-+ *aw87xxx kcontrol create
-+ *
-+ ****************************************************************************/
-+int aw87xxx_add_codec_controls(void *codec)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = NULL;
-+ int ret = -1;
-+
-+ list_for_each(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ ret = aw87xxx_kcontrol_dynamic_create(aw87xxx, codec);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (aw87xxx->dev_index == 0) {
-+ ret = aw87xxx_public_kcontrol_create(aw87xxx, codec);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL(aw87xxx_add_codec_controls);
-+
-+
-+/****************************************************************************
-+ *
-+ * aw87xxx firmware cfg load
-+ *
-+ ***************************************************************************/
-+static void aw87xxx_fw_cfg_free(struct aw87xxx *aw87xxx)
-+{
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ aw87xxx_acf_profile_free(aw87xxx->dev, &aw87xxx->acf_info);
-+ aw87xxx_monitor_cfg_free(&aw87xxx->monitor);
-+}
-+
-+static int aw87xxx_init_default_prof(struct aw87xxx *aw87xxx)
-+{
-+ char *profile = NULL;
-+
-+ profile = aw87xxx_acf_get_prof_off_name(aw87xxx->dev, &aw87xxx->acf_info);
-+ if (profile == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "get profile off name failed");
-+ return -EINVAL;
-+ }
-+
-+ snprintf(aw87xxx->prof_off_name, AW_PROFILE_STR_MAX, "%s", profile);
-+ aw87xxx->current_profile = profile;
-+ AW_DEV_LOGI(aw87xxx->dev, "init profile name [%s]",
-+ aw87xxx->current_profile);
-+
-+ return 0;
-+}
-+
-+static void aw87xxx_fw_load_retry(struct aw87xxx *aw87xxx)
-+{
-+ struct acf_bin_info *acf_info = &aw87xxx->acf_info;
-+ int ram_timer_val = 2000;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "failed to read [%s]",
-+ aw87xxx->fw_name);
-+
-+ if (acf_info->load_count < AW_LOAD_FW_RETRIES) {
-+ AW_DEV_LOGD(aw87xxx->dev,
-+ "restart hrtimer to load firmware");
-+ schedule_delayed_work(&aw87xxx->fw_load_work,
-+ msecs_to_jiffies(ram_timer_val));
-+ } else {
-+ acf_info->load_count = 0;
-+ AW_DEV_LOGE(aw87xxx->dev,
-+ "can not load firmware,please check name or file exists");
-+ return;
-+ }
-+ acf_info->load_count++;
-+}
-+
-+static void aw87xxx_fw_load(const struct firmware *fw, void *context)
-+{
-+ int ret = -1;
-+ struct aw87xxx *aw87xxx = context;
-+ struct acf_bin_info *acf_info = &aw87xxx->acf_info;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (!fw) {
-+ aw87xxx_fw_load_retry(aw87xxx);
-+ return;
-+ }
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "loaded %s - size: %ld",
-+ aw87xxx->fw_name, (u_long)(fw ? fw->size : 0));
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ acf_info->fw_data = vmalloc(fw->size);
-+ if (!acf_info->fw_data) {
-+ AW_DEV_LOGE(aw87xxx->dev, "fw_data kzalloc memory failed");
-+ goto exit_vmalloc_failed;
-+ }
-+ memset(acf_info->fw_data, 0, fw->size);
-+ memcpy(acf_info->fw_data, fw->data, fw->size);
-+ acf_info->fw_size = fw->size;
-+
-+ ret = aw87xxx_acf_parse(aw87xxx->dev, &aw87xxx->acf_info);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "fw_data parse failed");
-+ goto exit_acf_parse_failed;
-+ }
-+
-+ ret = aw87xxx_init_default_prof(aw87xxx);
-+ if (ret < 0) {
-+ aw87xxx_fw_cfg_free(aw87xxx);
-+ goto exit_acf_parse_failed;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "acf parse succeed");
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ release_firmware(fw);
-+ // Updating profile to "Music" because the firmware is set to "off" during init
-+ aw87xxx_update_profile(aw87xxx, AW87XXX_PROF_MUSIC);
-+
-+ return;
-+
-+exit_acf_parse_failed:
-+exit_vmalloc_failed:
-+ release_firmware(fw);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+}
-+
-+static void aw87xxx_fw_load_work_routine(struct work_struct *work)
-+{
-+ struct aw87xxx *aw87xxx = container_of(work,
-+ struct aw87xxx, fw_load_work.work);
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+
-+ if (prof_info->status == AW_ACF_WAIT) {
-+ request_firmware_nowait(THIS_MODULE,
-+// FW_ACTION_HOTPLUG,
-+ FW_ACTION_UEVENT,
-+ aw87xxx->fw_name,
-+ aw87xxx->dev,
-+ GFP_KERNEL, aw87xxx,
-+ aw87xxx_fw_load);
-+ }
-+}
-+
-+static void aw87xxx_fw_load_init(struct aw87xxx *aw87xxx)
-+{
-+#ifdef AW_CFG_UPDATE_DELAY
-+ int cfg_timer_val = AW_CFG_UPDATE_DELAY_TIMER;
-+#else
-+ int cfg_timer_val = 0;
-+#endif
-+ AW_DEV_LOGI(aw87xxx->dev, "enter");
-+ snprintf(aw87xxx->fw_name, AW87XXX_FW_NAME_MAX, "%s", AW87XXX_FW_BIN_NAME);
-+ aw87xxx_acf_init(&aw87xxx->aw_dev, &aw87xxx->acf_info, aw87xxx->dev_index);
-+
-+ INIT_DELAYED_WORK(&aw87xxx->fw_load_work, aw87xxx_fw_load_work_routine);
-+ schedule_delayed_work(&aw87xxx->fw_load_work,
-+ msecs_to_jiffies(cfg_timer_val));
-+}
-+
-+/****************************************************************************
-+ *
-+ *aw87xxx attribute node
-+ *
-+ ****************************************************************************/
-+static ssize_t aw87xxx_attr_get_reg(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ int ret = 0;
-+ unsigned int i = 0;
-+ unsigned char reg_val = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_device *aw_dev = &aw87xxx->aw_dev;
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ for (i = 0; i < aw_dev->reg_max_addr; i++) {
-+ if (!(aw_dev->reg_access[i] & AW_DEV_REG_RD_ACCESS))
-+ continue;
-+ ret = aw87xxx_dev_i2c_read_byte(&aw87xxx->aw_dev, i, &reg_val);
-+ if (ret < 0) {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "read reg [0x%x] failed\n", i);
-+ AW_DEV_LOGE(aw87xxx->dev, "read reg [0x%x] failed", i);
-+ } else {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "reg:0x%02X=0x%02X\n", i, reg_val);
-+ AW_DEV_LOGD(aw87xxx->dev, "reg:0x%02X=0x%02X",
-+ i, reg_val);
-+ }
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_set_reg(struct device *dev,
-+ struct device_attribute *attr, const char *buf,
-+ size_t len)
-+{
-+ unsigned int databuf[2] = { 0 };
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ if (sscanf(buf, "0x%x 0x%x", &databuf[0], &databuf[1]) == 2) {
-+ if (databuf[0] >= aw87xxx->aw_dev.reg_max_addr) {
-+ AW_DEV_LOGE(aw87xxx->dev, "set reg[0x%x] error,is out of reg_addr_max[0x%x]",
-+ databuf[0], aw87xxx->aw_dev.reg_max_addr);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ return -EINVAL;
-+ }
-+
-+ ret = aw87xxx_dev_i2c_write_byte(&aw87xxx->aw_dev,
-+ databuf[0], databuf[1]);
-+ if (ret < 0)
-+ AW_DEV_LOGE(aw87xxx->dev, "set [0x%x]=0x%x failed",
-+ databuf[0], databuf[1]);
-+ else
-+ AW_DEV_LOGD(aw87xxx->dev, "set [0x%x]=0x%x succeed",
-+ databuf[0], databuf[1]);
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "i2c write cmd input error");
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_get_profile(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ unsigned int i = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_prof_info *prof_info = &aw87xxx->acf_info.prof_info;
-+
-+ if (!prof_info->status) {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "profile_cfg not load\n");
-+ return len;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "current profile:[%s]", aw87xxx->current_profile);
-+
-+ for (i = 0; i < prof_info->count; i++) {
-+ if (!strncmp(aw87xxx->current_profile, prof_info->prof_name_list[i],
-+ AW_PROFILE_STR_MAX))
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ ">%s\n", prof_info->prof_name_list[i]);
-+ else
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ " %s\n", prof_info->prof_name_list[i]);
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_set_profile(struct device *dev,
-+ struct device_attribute *attr, const char *buf,
-+ size_t len)
-+{
-+ char profile[AW_PROFILE_STR_MAX] = {0};
-+ int ret = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ if (strlen(buf) > AW_PROFILE_STR_MAX) {
-+ AW_DEV_LOGE(aw87xxx->dev, "input profile_str_len is out of max[%d]",
-+ AW_PROFILE_STR_MAX);
-+ return -EINVAL;
-+ }
-+
-+ if (sscanf(buf, "%s", profile) == 1) {
-+ AW_DEV_LOGD(aw87xxx->dev, "set profile [%s]", profile);
-+ ret = aw87xxx_update_profile(aw87xxx, profile);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "set profile[%s] failed",
-+ profile);
-+ return ret;
-+ }
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_get_hwen(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ int hwen = aw87xxx->aw_dev.hwen_status;
-+
-+ if (hwen >= AW_DEV_HWEN_INVALID)
-+ len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: invalid\n");
-+ else if (hwen == AW_DEV_HWEN_ON)
-+ len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: on\n");
-+ else if (hwen == AW_DEV_HWEN_OFF)
-+ len += snprintf(buf + len, PAGE_SIZE - len, "hwen_status: off\n");
-+
-+ return len;
-+}
-+
-+static ssize_t aw87xxx_attr_set_hwen(struct device *dev,
-+ struct device_attribute *attr, const char *buf,
-+ size_t len)
-+{
-+ int ret = -1;
-+ unsigned int state;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ ret = kstrtouint(buf, 0, &state);
-+ if (ret) {
-+ AW_DEV_LOGE(aw87xxx->dev, "fail to channelge str to int");
-+ return ret;
-+ }
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ if (state == AW_DEV_HWEN_OFF)
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false); /*OFF*/
-+ else if (state == AW_DEV_HWEN_ON)
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true); /*ON*/
-+ else
-+ AW_DEV_LOGE(aw87xxx->dev, "input [%d] error, hwen_on=[%d],hwen_off=[%d]",
-+ state, AW_DEV_HWEN_ON, AW_DEV_HWEN_OFF);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ return len;
-+}
-+
-+int aw87xxx_awrw_write(struct aw87xxx *aw87xxx,
-+ const char *buf, size_t count)
-+{
-+ int i = 0, ret = -1;
-+ char *data_buf = NULL;
-+ int buf_len = 0;
-+ int temp_data = 0;
-+ int data_str_size = 0;
-+ char *reg_data;
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "enter");
-+ /* one addr or one data string Composition of Contains two bytes of symbol(0X)*/
-+ /* and two byte of hexadecimal data*/
-+ data_str_size = 2 + 2 * AWRW_DATA_BYTES;
-+
-+ /* The buf includes the first address of the register to be written and all data */
-+ buf_len = AWRW_ADDR_BYTES + packet->reg_num * AWRW_DATA_BYTES;
-+ AW_DEV_LOGI(aw87xxx->dev, "buf_len = %d,reg_num = %d", buf_len, packet->reg_num);
-+ data_buf = vmalloc(buf_len);
-+ if (data_buf == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "alloc memory failed");
-+ return -ENOMEM;
-+ }
-+ memset(data_buf, 0, buf_len);
-+
-+ data_buf[0] = packet->reg_addr;
-+ reg_data = data_buf + 1;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "reg_addr: 0x%02x", data_buf[0]);
-+
-+ /*ag:0x00 0x01 0x01 0x01 0x01 0x00\x0a*/
-+ for (i = 0; i < packet->reg_num; i++) {
-+ ret = sscanf(buf + AWRW_HDR_LEN + 1 + i * (data_str_size + 1),
-+ "0x%x", &temp_data);
-+ if (ret != 1) {
-+ AW_DEV_LOGE(aw87xxx->dev, "sscanf failed,ret=%d", ret);
-+ vfree(data_buf);
-+ data_buf = NULL;
-+ return ret;
-+ }
-+ reg_data[i] = temp_data;
-+ AW_DEV_LOGD(aw87xxx->dev, "[%d] : 0x%02x", i, reg_data[i]);
-+ }
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ ret = i2c_master_send(aw87xxx->aw_dev.i2c, data_buf, buf_len);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "write failed");
-+ vfree(data_buf);
-+ data_buf = NULL;
-+ return -EFAULT;
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ vfree(data_buf);
-+ data_buf = NULL;
-+
-+ AW_DEV_LOGD(aw87xxx->dev, "down");
-+ return 0;
-+}
-+
-+static int aw87xxx_awrw_data_check(struct aw87xxx *aw87xxx,
-+ int *data, size_t count)
-+{
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int req_data_len = 0;
-+ int act_data_len = 0;
-+ int data_str_size = 0;
-+
-+ if ((data[AWRW_HDR_ADDR_BYTES] != AWRW_ADDR_BYTES) ||
-+ (data[AWRW_HDR_DATA_BYTES] != AWRW_DATA_BYTES)) {
-+ AW_DEV_LOGE(aw87xxx->dev, "addr_bytes [%d] or data_bytes [%d] unsupport",
-+ data[AWRW_HDR_ADDR_BYTES], data[AWRW_HDR_DATA_BYTES]);
-+ return -EINVAL;
-+ }
-+
-+ /* one data string Composition of Contains two bytes of symbol(0x)*/
-+ /* and two byte of hexadecimal data*/
-+ data_str_size = 2 + 2 * AWRW_DATA_BYTES;
-+ act_data_len = count - AWRW_HDR_LEN - 1;
-+
-+ /* There is a comma(,) or space between each piece of data */
-+ if (data[AWRW_HDR_WR_FLAG] == AWRW_FLAG_WRITE) {
-+ /*ag:0x00 0x01 0x01 0x01 0x01 0x00\x0a*/
-+ req_data_len = (data_str_size + 1) * packet->reg_num;
-+ if (req_data_len > act_data_len) {
-+ AW_DEV_LOGE(aw87xxx->dev, "data_len checkfailed,requeset data_len [%d],actaul data_len [%d]",
-+ req_data_len, act_data_len);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+/* flag addr_bytes data_bytes reg_num reg_addr*/
-+static int aw87xxx_awrw_parse_buf(struct aw87xxx *aw87xxx,
-+ const char *buf, size_t count, int *wr_status)
-+{
-+ int data[AWRW_HDR_MAX] = {0};
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int ret = -1;
-+
-+ if (sscanf(buf, "0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",
-+ &data[AWRW_HDR_WR_FLAG], &data[AWRW_HDR_ADDR_BYTES],
-+ &data[AWRW_HDR_DATA_BYTES], &data[AWRW_HDR_REG_NUM],
-+ &data[AWRW_HDR_REG_ADDR]) == 5) {
-+
-+ packet->reg_addr = data[AWRW_HDR_REG_ADDR];
-+ packet->reg_num = data[AWRW_HDR_REG_NUM];
-+ *wr_status = data[AWRW_HDR_WR_FLAG];
-+ ret = aw87xxx_awrw_data_check(aw87xxx, data, count);
-+ if (ret < 0)
-+ return ret;
-+
-+ return 0;
-+ }
-+
-+ return -EINVAL;
-+}
-+
-+static ssize_t aw87xxx_attr_awrw_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int wr_status = 0;
-+ int ret = -1;
-+
-+ if (count < AWRW_HDR_LEN) {
-+ AW_DEV_LOGE(aw87xxx->dev, "data count too smaller, please check write format");
-+ AW_DEV_LOGE(aw87xxx->dev, "string %s,count=%ld",
-+ buf, (u_long)count);
-+ return -EINVAL;
-+ }
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "string:[%s],count=%ld", buf, (u_long)count);
-+ ret = aw87xxx_awrw_parse_buf(aw87xxx, buf, count, &wr_status);
-+ if (ret < 0) {
-+ AW_DEV_LOGE(aw87xxx->dev, "can not parse string");
-+ return ret;
-+ }
-+
-+ if (wr_status == AWRW_FLAG_WRITE) {
-+ ret = aw87xxx_awrw_write(aw87xxx, buf, count);
-+ if (ret < 0)
-+ return ret;
-+ } else if (wr_status == AWRW_FLAG_READ) {
-+ packet->status = AWRW_I2C_ST_READ;
-+ AW_DEV_LOGI(aw87xxx->dev, "read_cmd:reg_addr[0x%02x], reg_num[%d]",
-+ packet->reg_addr, packet->reg_num);
-+ } else {
-+ AW_DEV_LOGE(aw87xxx->dev, "please check str format, unsupport read_write_status: %d",
-+ wr_status);
-+ return -EINVAL;
-+ }
-+
-+ return count;
-+}
-+
-+static ssize_t aw87xxx_attr_awrw_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+ struct aw_i2c_packet *packet = &aw87xxx->i2c_packet;
-+ int data_len = 0;
-+ size_t len = 0;
-+ int ret = -1, i = 0;
-+ char *reg_data = NULL;
-+
-+ if (packet->status != AWRW_I2C_ST_READ) {
-+ AW_DEV_LOGE(aw87xxx->dev, "please write read cmd first");
-+ return -EINVAL;
-+ }
-+
-+ data_len = AWRW_DATA_BYTES * packet->reg_num;
-+ reg_data = (char *)vmalloc(data_len);
-+ if (reg_data == NULL) {
-+ AW_DEV_LOGE(aw87xxx->dev, "memory alloc failed");
-+ ret = -EINVAL;
-+ goto exit;
-+ }
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ ret = aw87xxx_dev_i2c_read_msg(&aw87xxx->aw_dev, packet->reg_addr,
-+ (char *)reg_data, data_len);
-+ if (ret < 0) {
-+ ret = -EFAULT;
-+ mutex_unlock(&aw87xxx->reg_lock);
-+ goto exit;
-+ }
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "reg_addr 0x%02x, reg_num %d",
-+ packet->reg_addr, packet->reg_num);
-+
-+ for (i = 0; i < data_len; i++) {
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "0x%02x,", reg_data[i]);
-+ AW_DEV_LOGI(aw87xxx->dev, "0x%02x", reg_data[i]);
-+ }
-+
-+ ret = len;
-+
-+exit:
-+ if (reg_data) {
-+ vfree(reg_data);
-+ reg_data = NULL;
-+ }
-+ packet->status = AWRW_I2C_ST_NONE;
-+ return ret;
-+}
-+
-+static ssize_t aw87xxx_drv_ver_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ ssize_t len = 0;
-+
-+ len += snprintf(buf + len, PAGE_SIZE - len,
-+ "driver_ver: %s \n", AW87XXX_DRIVER_VERSION);
-+
-+ return len;
-+}
-+
-+static DEVICE_ATTR(reg, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_get_reg, aw87xxx_attr_set_reg);
-+static DEVICE_ATTR(profile, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_get_profile, aw87xxx_attr_set_profile);
-+static DEVICE_ATTR(hwen, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_get_hwen, aw87xxx_attr_set_hwen);
-+static DEVICE_ATTR(awrw, S_IWUSR | S_IRUGO,
-+ aw87xxx_attr_awrw_show, aw87xxx_attr_awrw_store);
-+static DEVICE_ATTR(drv_ver, S_IRUGO, aw87xxx_drv_ver_show, NULL);
-+
-+static struct attribute *aw87xxx_attributes[] = {
-+ &dev_attr_reg.attr,
-+ &dev_attr_profile.attr,
-+ &dev_attr_hwen.attr,
-+ &dev_attr_awrw.attr,
-+ &dev_attr_drv_ver.attr,
-+ NULL
-+};
-+
-+static struct attribute_group aw87xxx_attribute_group = {
-+ .attrs = aw87xxx_attributes
-+};
-+
-+/****************************************************************************
-+ *
-+ *aw87xxx device probe
-+ *
-+ ****************************************************************************/
-+static const struct acpi_gpio_params reset_gpio = { 0, 0, false };
-+static const struct acpi_gpio_mapping reset_acpi_gpios[] = {
-+ { "reset-gpios", &reset_gpio, 1 },
-+ { }
-+};
-+
-+static struct aw87xxx *aw87xxx_malloc_init(struct i2c_client *client)
-+{
-+ struct aw87xxx *aw87xxx = NULL;
-+
-+ aw87xxx = devm_kzalloc(&client->dev, sizeof(struct aw87xxx),
-+ GFP_KERNEL);
-+ if (aw87xxx == NULL) {
-+ AW_DEV_LOGE(&client->dev, "failed to devm_kzalloc aw87xxx");
-+ return NULL;
-+ }
-+ memset(aw87xxx, 0, sizeof(struct aw87xxx));
-+
-+ aw87xxx->dev = &client->dev;
-+ aw87xxx->aw_dev.dev = &client->dev;
-+ aw87xxx->aw_dev.i2c_bus = client->adapter->nr;
-+ aw87xxx->aw_dev.i2c_addr = client->addr;
-+ aw87xxx->aw_dev.i2c = client;
-+ aw87xxx->aw_dev.hwen_status = false;
-+ aw87xxx->aw_dev.reg_access = NULL;
-+ aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_INVALID;
-+ aw87xxx->off_bin_status = AW87XXX_NO_OFF_BIN;
-+ aw87xxx->codec = NULL;
-+ aw87xxx->current_profile = aw87xxx->prof_off_name;
-+
-+ mutex_init(&aw87xxx->reg_lock);
-+
-+ AW_DEV_LOGI(&client->dev, "Driver struct alloc and mutex init done, devinfo: i2c_bus=%u, i2c_addr=%x", client->adapter->nr, client->addr);
-+ return aw87xxx;
-+}
-+
-+static int aw87xxx_i2c_probe(struct i2c_client *client)
-+{
-+ struct device_node *dev_node = client->dev.of_node;
-+ struct aw87xxx *aw87xxx = NULL;
-+ struct gpio_desc *gpiod = NULL;
-+ int ret = -1;
-+
-+
-+// To do, add this function
-+//acpi_dev_add_driver_gpios()
-+
-+ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
-+ AW_DEV_LOGE(&client->dev, "check_functionality failed");
-+ ret = -ENODEV;
-+ goto exit_check_functionality_failed;
-+ }
-+
-+ /* aw87xxx i2c_dev struct init */
-+ aw87xxx = aw87xxx_malloc_init(client);
-+ if (aw87xxx == NULL)
-+ goto exit_malloc_init_failed;
-+
-+ i2c_set_clientdata(client, aw87xxx);
-+
-+ aw87xxx_device_parse_port_id_dt(&aw87xxx->aw_dev);
-+ aw87xxx_device_parse_topo_id_dt(&aw87xxx->aw_dev);
-+
-+ /* aw87xxx Get ACPI GPIO */
-+/*
-+ ret = devm_acpi_dev_add_driver_gpios(aw87xxx->dev, reset_acpi_gpios);
-+ if(ret){
-+ AW_DEV_LOGE(aw87xxx->dev, "Unable to add GPIO mapping table");
-+ goto exit_device_init_failed;
-+ }
-+
-+ gpiod = gpiod_get_optional(aw87xxx->dev, "reset", GPIOD_OUT_LOW);
-+*/
-+
-+ if (g_aw87xxx_dev_cnt == 0){
-+ gpiod = gpiod_get(aw87xxx->dev, NULL, GPIOD_OUT_LOW);
-+ if (gpiod == NULL){
-+ AW_DEV_LOGE(aw87xxx->dev, "Gpiod returned NULL failing gracefully.");
-+ goto exit_device_init_failed;
-+ }
-+
-+ if (IS_ERR(gpiod)){
-+ AW_DEV_LOGE(aw87xxx->dev, "Get gpiod failed.");
-+ goto exit_device_init_failed;
-+ }
-+
-+ aw87xxx->aw_dev.rst_gpio = desc_to_gpio(gpiod);
-+ aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_OFF;
-+ AW_DEV_LOGI(aw87xxx->dev, "reset gpio[%x] parse succeed", aw87xxx->aw_dev.rst_gpio);
-+
-+ if (gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) {
-+ ret = devm_gpio_request_one(aw87xxx->dev, aw87xxx->aw_dev.rst_gpio, GPIOF_OUT_INIT_LOW, "aw87xxx_reset");
-+ if ((ret < 0) && (ret != -EBUSY)) {
-+ AW_DEV_LOGE(aw87xxx->dev, "reset request failed, returned [%d]", ret);
-+ goto exit_device_init_failed;
-+ }
-+ }else{
-+ /*Disabling RESET GPIO*/
-+ AW_DEV_LOGI(aw87xxx->dev, "no reset gpio provided, hardware reset unavailable");
-+ aw87xxx->aw_dev.rst_gpio = AW_NO_RESET_GPIO;
-+ aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_INVALID;
-+ }
-+
-+ }
-+ /*hw power on PA*/
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
-+
-+ /* aw87xxx devices private attributes init */
-+ ret = aw87xxx_dev_init(&aw87xxx->aw_dev);
-+ if (ret < 0)
-+ goto exit_device_init_failed;
-+
-+ /*product register reset */
-+ aw87xxx_dev_soft_reset(&aw87xxx->aw_dev);
-+
-+ /*hw power off */
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-+
-+ /* create debug attrbute nodes */
-+ ret = sysfs_create_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
-+ if (ret < 0)
-+ AW_DEV_LOGE(aw87xxx->dev, "failed to create sysfs nodes, will not allowed to use");
-+
-+ /* cfg_load init */
-+ aw87xxx_fw_load_init(aw87xxx);
-+
-+ /*monitor init*/
-+ aw87xxx_monitor_init(aw87xxx->dev, &aw87xxx->monitor, dev_node);
-+
-+ /*add device to total list */
-+ mutex_lock(&g_aw87xxx_mutex_lock);
-+ g_aw87xxx_dev_cnt++;
-+ list_add(&aw87xxx->list, &g_aw87xxx_list);
-+ aw87xxx->dev_index = g_aw87xxx_dev_cnt;
-+
-+ mutex_unlock(&g_aw87xxx_mutex_lock);
-+ AW_DEV_LOGI(aw87xxx->dev, "succeed, dev_index=[%d], g_aw87xxx_dev_cnt= [%d]",
-+ aw87xxx->dev_index, g_aw87xxx_dev_cnt);
-+
-+ return 0;
-+
-+exit_device_init_failed:
-+ AW_DEV_LOGE(aw87xxx->dev, "pa init failed");
-+
-+ devm_kfree(&client->dev, aw87xxx);
-+ aw87xxx = NULL;
-+exit_malloc_init_failed:
-+exit_check_functionality_failed:
-+ return ret;
-+}
-+
-+static void aw87xxx_i2c_remove(struct i2c_client *client)
-+{
-+ struct aw87xxx *aw87xxx = i2c_get_clientdata(client);
-+
-+ aw87xxx_monitor_exit(&aw87xxx->monitor);
-+
-+ /*rm attr node*/
-+ sysfs_remove_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
-+
-+ aw87xxx_fw_cfg_free(aw87xxx);
-+
-+ mutex_lock(&g_aw87xxx_mutex_lock);
-+ g_aw87xxx_dev_cnt--;
-+ list_del(&aw87xxx->list);
-+ mutex_unlock(&g_aw87xxx_mutex_lock);
-+
-+ devm_kfree(&client->dev, aw87xxx);
-+ aw87xxx = NULL;
-+
-+// return 0;
-+}
-+
-+static void aw87xxx_i2c_shutdown(struct i2c_client *client)
-+{
-+ struct aw87xxx *aw87xxx = i2c_get_clientdata(client);
-+
-+ AW_DEV_LOGI(&client->dev, "enter");
-+
-+ /*soft and hw power off*/
-+ aw87xxx_update_profile(aw87xxx, aw87xxx->prof_off_name);
-+}
-+
-+static const struct acpi_device_id aw87xxx_acpi_match[] = {
-+ { "AWDZ8830", 0 },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(acpi, aw87xxx_acpi_match);
-+
-+// This is not necessary if the acpi match probes correctly. This is needed for userspace `new_device() functionality
-+static const struct i2c_device_id aw87xxx_i2c_id[] = {
-+ {AW87XXX_I2C_NAME, 0},
-+ {},
-+};
-+
-+static struct i2c_driver aw87xxx_i2c_driver = {
-+ .driver = {
-+ .owner = THIS_MODULE,
-+ .name = AW87XXX_I2C_NAME,
-+ .acpi_match_table = aw87xxx_acpi_match,
-+ },
-+ .probe = aw87xxx_i2c_probe,
-+ .remove = aw87xxx_i2c_remove,
-+ .shutdown = aw87xxx_i2c_shutdown,
-+ .id_table = aw87xxx_i2c_id,
-+};
-+
-+module_i2c_driver(aw87xxx_i2c_driver)
-+
-+MODULE_AUTHOR("<zhaozhongbo@awinic.com>");
-+MODULE_DESCRIPTION("awinic aw87xxx pa driver");
-+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx_device.c b/sound/soc/codecs/aw87xxx/aw87xxx_device.c
-index 087770857..5874c598a 100644
---- a/sound/soc/codecs/aw87xxx/aw87xxx_device.c
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx_device.c
-@@ -102,8 +102,8 @@ int aw87xxx_dev_i2c_write_byte(struct aw_device *aw_dev,
- while (cnt < AW_I2C_RETRIES) {
- ret = i2c_smbus_write_byte_data(aw_dev->i2c, reg_addr, reg_data);
- if (ret < 0)
-- AW_DEV_LOGE(aw_dev->dev, "i2c_write cnt=%d error=%d",
-- cnt, ret);
-+ AW_DEV_LOGE(aw_dev->dev, "i2c_write cnt=%d error=%d i2c_bus=%u i2c_addr=%X chipid=%X",
-+ cnt, ret, aw_dev->i2c_bus, aw_dev->i2c_addr, aw_dev->chipid);
- else
- break;
-
-@@ -123,8 +123,8 @@ int aw87xxx_dev_i2c_read_byte(struct aw_device *aw_dev,
- while (cnt < AW_I2C_RETRIES) {
- ret = i2c_smbus_read_byte_data(aw_dev->i2c, reg_addr);
- if (ret < 0) {
-- AW_DEV_LOGE(aw_dev->dev, "i2c_read cnt=%d error=%d",
-- cnt, ret);
-+ AW_DEV_LOGE(aw_dev->dev, "i2c_read cnt=%d error=%d i2c_bus=%u i2c_addr=%X chipid=%X",
-+ cnt, ret, aw_dev->i2c_bus, aw_dev->i2c_addr, aw_dev->chipid);
- } else {
- *reg_data = ret;
- break;
---
-2.45.2
-
-
-From c929d4f9c7be7599522d39d207c77006d96dc70c Mon Sep 17 00:00:00 2001
-From: CVMagic <546352+CVMagic@users.noreply.github.com>
-Date: Sun, 19 May 2024 21:37:37 +0200
-Subject: [PATCH 3/8] Updated AW87xxx driver to automatically enumerate a
- second I2C chip if specified in ACPI
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/soc/codecs/aw87xxx/aw87xxx.c | 80 ++++++++++++++++++++++--------
- 1 file changed, 58 insertions(+), 22 deletions(-)
-
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx.c b/sound/soc/codecs/aw87xxx/aw87xxx.c
-index 7f44d9b9d..8b3e74a7b 100644
---- a/sound/soc/codecs/aw87xxx/aw87xxx.c
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx.c
-@@ -82,6 +82,22 @@ static struct aw_componet_codec_ops aw_componet_codec_ops = {
- };
- #endif
-
-+enum smi_bus_type {
-+ SMI_I2C,
-+ SMI_SPI,
-+ SMI_AUTO_DETECT,
-+};
-+
-+struct smi_instance {
-+ const char *type;
-+ unsigned int flags;
-+ int irq_idx;
-+};
-+
-+struct smi_node {
-+ enum smi_bus_type bus_type;
-+ struct smi_instance instances[];
-+};
-
- /************************************************************************
- *
-@@ -1291,13 +1307,20 @@ static struct aw87xxx *aw87xxx_malloc_init(struct i2c_client *client)
- static int aw87xxx_i2c_probe(struct i2c_client *client)
- {
- struct device_node *dev_node = client->dev.of_node;
-+ const struct smi_node *node;
-+ struct acpi_device *adev = ACPI_COMPANION(&client->dev);
- struct aw87xxx *aw87xxx = NULL;
- struct gpio_desc *gpiod = NULL;
-+ struct i2c_board_info board_info = {};
-+ char i2c_name[32];
- int ret = -1;
-+ int acpi_dev_count = 0;
-
--
--// To do, add this function
--//acpi_dev_add_driver_gpios()
-+ /* aw87xxx Get APCI I2C device count */
-+ if(g_aw87xxx_dev_cnt == 0){
-+ acpi_dev_count = i2c_acpi_client_count(adev);
-+ AW_DEV_LOGI(&client->dev, "I2C_ACPI_CLIENT_COUNT returned [%d]", acpi_dev_count);
-+ }
-
- if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
- AW_DEV_LOGE(&client->dev, "check_functionality failed");
-@@ -1316,18 +1339,15 @@ static int aw87xxx_i2c_probe(struct i2c_client *client)
- aw87xxx_device_parse_topo_id_dt(&aw87xxx->aw_dev);
-
- /* aw87xxx Get ACPI GPIO */
--/*
-- ret = devm_acpi_dev_add_driver_gpios(aw87xxx->dev, reset_acpi_gpios);
-- if(ret){
-- AW_DEV_LOGE(aw87xxx->dev, "Unable to add GPIO mapping table");
-- goto exit_device_init_failed;
-- }
--
-- gpiod = gpiod_get_optional(aw87xxx->dev, "reset", GPIOD_OUT_LOW);
--*/
-
- if (g_aw87xxx_dev_cnt == 0){
-- gpiod = gpiod_get(aw87xxx->dev, NULL, GPIOD_OUT_LOW);
-+ ret = devm_acpi_dev_add_driver_gpios(aw87xxx->dev, reset_acpi_gpios);
-+ if(ret){
-+ AW_DEV_LOGE(aw87xxx->dev, "Unable to add GPIO mapping table");
-+ goto exit_device_init_failed;
-+ }
-+
-+ gpiod = devm_gpiod_get(aw87xxx->dev, "reset", GPIOD_OUT_LOW);
- if (gpiod == NULL){
- AW_DEV_LOGE(aw87xxx->dev, "Gpiod returned NULL failing gracefully.");
- goto exit_device_init_failed;
-@@ -1342,13 +1362,7 @@ static int aw87xxx_i2c_probe(struct i2c_client *client)
- aw87xxx->aw_dev.hwen_status = AW_DEV_HWEN_OFF;
- AW_DEV_LOGI(aw87xxx->dev, "reset gpio[%x] parse succeed", aw87xxx->aw_dev.rst_gpio);
-
-- if (gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) {
-- ret = devm_gpio_request_one(aw87xxx->dev, aw87xxx->aw_dev.rst_gpio, GPIOF_OUT_INIT_LOW, "aw87xxx_reset");
-- if ((ret < 0) && (ret != -EBUSY)) {
-- AW_DEV_LOGE(aw87xxx->dev, "reset request failed, returned [%d]", ret);
-- goto exit_device_init_failed;
-- }
-- }else{
-+ if (!gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) {
- /*Disabling RESET GPIO*/
- AW_DEV_LOGI(aw87xxx->dev, "no reset gpio provided, hardware reset unavailable");
- aw87xxx->aw_dev.rst_gpio = AW_NO_RESET_GPIO;
-@@ -1356,8 +1370,11 @@ static int aw87xxx_i2c_probe(struct i2c_client *client)
- }
-
- }
-+
- /*hw power on PA*/
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
-+ if(g_aw87xxx_dev_cnt == 0) {
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
-+ }
-
- /* aw87xxx devices private attributes init */
- ret = aw87xxx_dev_init(&aw87xxx->aw_dev);
-@@ -1368,7 +1385,9 @@ static int aw87xxx_i2c_probe(struct i2c_client *client)
- aw87xxx_dev_soft_reset(&aw87xxx->aw_dev);
-
- /*hw power off */
-- aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-+ if(g_aw87xxx_dev_cnt == 0) {
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false);
-+ }
-
- /* create debug attrbute nodes */
- ret = sysfs_create_group(&aw87xxx->dev->kobj, &aw87xxx_attribute_group);
-@@ -1391,6 +1410,23 @@ static int aw87xxx_i2c_probe(struct i2c_client *client)
- AW_DEV_LOGI(aw87xxx->dev, "succeed, dev_index=[%d], g_aw87xxx_dev_cnt= [%d]",
- aw87xxx->dev_index, g_aw87xxx_dev_cnt);
-
-+ AW_DEV_LOGI(aw87xxx->dev, "acpi_c=[%d] dev_c=[%d]", acpi_dev_count, g_aw87xxx_dev_cnt);
-+
-+ /* Attempt to add other I2C AMPs */
-+ if ((acpi_dev_count > 1) && (g_aw87xxx_dev_cnt == 1)){
-+ /* power on the chip */
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
-+
-+ node = device_get_match_data(aw87xxx->dev);
-+ memset(&board_info, 0, sizeof(board_info));
-+ strscpy(board_info.type, client->name, I2C_NAME_SIZE);
-+ snprintf(i2c_name, sizeof(i2c_name), "%s.%d", client->name, 1);
-+ board_info.dev_name = i2c_name;
-+
-+ aw87xxx_i2c_probe(i2c_acpi_new_device_by_fwnode(acpi_fwnode_handle(adev), 1, &board_info));
-+
-+ }
-+
- return 0;
-
- exit_device_init_failed:
---
-2.45.2
-
-
-From e67153f0c9b2c66e66334c59136ecc244139e555 Mon Sep 17 00:00:00 2001
-From: CVMagic <546352+CVMagic@users.noreply.github.com>
-Date: Wed, 22 May 2024 02:42:40 +0000
-Subject: [PATCH 4/8] Updated AW87xxx driver to implement Suspend and Resume.
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/soc/codecs/aw87xxx/aw87xxx.c | 39 ++++++++++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
-
-diff --git a/sound/soc/codecs/aw87xxx/aw87xxx.c b/sound/soc/codecs/aw87xxx/aw87xxx.c
-index 8b3e74a7b..134a9a750 100644
---- a/sound/soc/codecs/aw87xxx/aw87xxx.c
-+++ b/sound/soc/codecs/aw87xxx/aw87xxx.c
-@@ -1471,6 +1471,44 @@ static void aw87xxx_i2c_shutdown(struct i2c_client *client)
- aw87xxx_update_profile(aw87xxx, aw87xxx->prof_off_name);
- }
-
-+
-+static int aw87xxx_runtime_suspend(struct device *dev)
-+{
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ AW_DEV_LOGI(aw87xxx->dev, "Suspending...");
-+
-+ // soft and hw power off
-+ aw87xxx_update_profile(aw87xxx, aw87xxx->prof_off_name);
-+
-+ return 0;
-+}
-+
-+static int aw87xxx_runtime_resume(struct device *dev)
-+{
-+ struct list_head *pos = NULL;
-+ struct aw87xxx *aw87xxx = dev_get_drvdata(dev);
-+
-+ // Power on PA
-+ if (aw87xxx->dev_index == 1)
-+ aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, true);
-+
-+ // Set profile to Music
-+ list_for_each_prev(pos, &g_aw87xxx_list) {
-+ aw87xxx = list_entry(pos, struct aw87xxx, list);
-+ AW_DEV_LOGI(aw87xxx->dev, "Resuming...");
-+
-+ mutex_lock(&aw87xxx->reg_lock);
-+ aw87xxx_power_on(aw87xxx, AW87XXX_PROF_MUSIC);
-+ mutex_unlock(&aw87xxx->reg_lock);
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static SIMPLE_DEV_PM_OPS(aw87xxx_pm_ops, aw87xxx_runtime_suspend, aw87xxx_runtime_resume);
-+
- static const struct acpi_device_id aw87xxx_acpi_match[] = {
- { "AWDZ8830", 0 },
- { }
-@@ -1488,6 +1526,7 @@ static struct i2c_driver aw87xxx_i2c_driver = {
- .owner = THIS_MODULE,
- .name = AW87XXX_I2C_NAME,
- .acpi_match_table = aw87xxx_acpi_match,
-+ .pm = &aw87xxx_pm_ops,
- },
- .probe = aw87xxx_i2c_probe,
- .remove = aw87xxx_i2c_remove,
---
-2.45.2
-
-
-From c6eb7c48fd8bb0c281c43c6e2c89ec32ab6dc7c4 Mon Sep 17 00:00:00 2001
-From: bouhaa <boukehaarsma23@gmail.com>
-Date: Fri, 22 Sep 2023 21:53:06 +0200
-Subject: [PATCH 5/8] Ayaneo geek headset patch
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/pci/hda/patch_realtek.c | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index c0530d4aa..62ffe1448 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -6555,6 +6555,20 @@ static void alc294_gx502_toggle_output(struct hda_codec *codec,
- alc_write_coef_idx(codec, 0x10, 0x0a20);
- }
-
-+static void alc269_fixup_headphone_volume(struct hda_codec *codec,
-+ const struct hda_fixup *fix, int action)
-+{
-+ /* Pin 0x21: Some devices share 0x14 for headphones and speakers.
-+ * This will fix ensure these devices have volume controls. */
-+ if (!is_jack_detectable(codec, 0x21))
-+ return;
-+
-+ if (action == HDA_FIXUP_ACT_PRE_PROBE) {
-+ static const hda_nid_t conn1[] = { 0x02 };
-+ snd_hda_override_conn_list(codec, 0x14, ARRAY_SIZE(conn1), conn1);
-+ }
-+}
-+
- static void alc294_fixup_gx502_hp(struct hda_codec *codec,
- const struct hda_fixup *fix, int action)
- {
-@@ -7271,6 +7285,7 @@ enum {
- ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
- ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET,
- ALC269_FIXUP_HEADSET_MODE,
-+ ALC269_FIXUP_HEADSET_AYA_GEEK,
- ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
- ALC269_FIXUP_ASPIRE_HEADSET_MIC,
- ALC269_FIXUP_ASUS_X101_FUNC,
-@@ -8769,6 +8784,10 @@ static const struct hda_fixup alc269_fixups[] = {
- .chained = true,
- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
- },
-+ [ALC269_FIXUP_HEADSET_AYA_GEEK] = {
-+ .type = HDA_FIXUP_FUNC,
-+ .v.func = alc269_fixup_headphone_volume,
-+ },
- [ALC299_FIXUP_PREDATOR_SPK] = {
- .type = HDA_FIXUP_PINS,
- .v.pins = (const struct hda_pintbl[]) {
-@@ -10601,6 +10601,7 @@
- SND_PCI_QUIRK(0x2782, 0x0214, "VAIO VJFE-CL", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
- SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO),
- SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
-+ SND_PCI_QUIRK(0x1f66, 0x0101, "GEEK", ALC269_FIXUP_HEADSET_AYA_GEEK),
- SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
- SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
- SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10),
---
-2.45.2
-
-
-From 2d9cf63b5f1b72a8dbdc226fda6e060b69b7d1c9 Mon Sep 17 00:00:00 2001
-From: bouhaa <boukehaarsma23@gmail.com>
-Date: Fri, 22 Sep 2023 22:08:35 +0200
-Subject: [PATCH 6/8] ayaneo 2 headphone fix
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/pci/hda/patch_realtek.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index 62ffe1448..f4aaaf6ba 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -7285,6 +7285,7 @@ enum {
- ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
- ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET,
- ALC269_FIXUP_HEADSET_MODE,
-+ ALC269_FIXUP_HEADSET_AYA_2,
- ALC269_FIXUP_HEADSET_AYA_GEEK,
- ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
- ALC269_FIXUP_ASPIRE_HEADSET_MIC,
-@@ -8784,6 +8785,10 @@ static const struct hda_fixup alc269_fixups[] = {
- .chained = true,
- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
- },
-+ [ALC269_FIXUP_HEADSET_AYA_2] = {
-+ .type = HDA_FIXUP_FUNC,
-+ .v.func = alc269_fixup_headphone_volume,
-+ },
- [ALC269_FIXUP_HEADSET_AYA_GEEK] = {
- .type = HDA_FIXUP_FUNC,
- .v.func = alc269_fixup_headphone_volume,
-@@ -10601,6 +10601,7 @@
- SND_PCI_QUIRK(0x2782, 0x0214, "VAIO VJFE-CL", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
- SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO),
- SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
-+ SND_PCI_QUIRK(0x1f66, 0x0101, "AYANEO 2", ALC269_FIXUP_HEADSET_AYA_2),
- SND_PCI_QUIRK(0x1f66, 0x0101, "GEEK", ALC269_FIXUP_HEADSET_AYA_GEEK),
- SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
- SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
---
-2.45.2
-
-
-From e59906fda334a028c8b3997db4408995fdd61725 Mon Sep 17 00:00:00 2001
-From: fewtarius <fewtarius@steamfork.org>
-Date: Thu, 11 Jul 2024 18:31:08 +0000
-Subject: [PATCH 7/8] Kernel 6.9.9, fix Air 1S audio - thanks in part to
- @linh1987!
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/pci/hda/patch_realtek.c | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index f4aaaf6ba..f2be4b102 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -7300,6 +7300,7 @@ enum {
- ALC269VB_FIXUP_ASUS_ZENBOOK,
- ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A,
- ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE,
-+ ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX,
- ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED,
- ALC269VB_FIXUP_ORDISSIMO_EVE2,
- ALC283_FIXUP_CHROME_BOOK,
-@@ -8012,6 +8013,22 @@ static const struct hda_fixup alc269_fixups[] = {
- .chained = true,
- .chain_id = ALC269_FIXUP_HEADSET_MIC
- },
-+ [ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX] = {
-+ .type = HDA_FIXUP_PINS,
-+ .v.pins = (const struct hda_pintbl[]) {
-+ { 0x12, 0x90a60130 },
-+ { 0x14, 0x90170110 },
-+ { 0x17, 0x40000000 },
-+ { 0x18, 0x03a19020 },
-+ { 0x19, 0x411111f0 },
-+ { 0x1a, 0x90170150 },
-+ { 0x1b, 0x411111f0 },
-+ { 0x1d, 0x40e69945 },
-+ { 0x1e, 0x411111f0 },
-+ { 0x21, 0x90170150 },
-+ { }
-+ },
-+ },
- [ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED] = {
- .type = HDA_FIXUP_FUNC,
- .v.func = alc269_fixup_limit_int_mic_boost,
-@@ -10603,6 +10603,7 @@
- SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
- SND_PCI_QUIRK(0x1f66, 0x0101, "AYANEO 2", ALC269_FIXUP_HEADSET_AYA_2),
- SND_PCI_QUIRK(0x1f66, 0x0101, "GEEK", ALC269_FIXUP_HEADSET_AYA_GEEK),
-+ SND_PCI_QUIRK(0x1f66, 0x0103, "AYANEO AIR 1S", ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX),
- SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
- SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
- SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10),
-@@ -10743,6 +10761,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
- {.id = ALC269VB_FIXUP_ASUS_ZENBOOK, .name = "asus-zenbook"},
- {.id = ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A, .name = "asus-zenbook-ux31a"},
- {.id = ALC269VB_FIXUP_ORDISSIMO_EVE2, .name = "ordissimo"},
-+ {.id = ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX, .name = "ayaneo-speaker-pin-fix"},
- {.id = ALC282_FIXUP_ASUS_TX300, .name = "asus-tx300"},
- {.id = ALC283_FIXUP_INT_MIC, .name = "alc283-int-mic"},
- {.id = ALC290_FIXUP_MONO_SPEAKERS_HSJACK, .name = "mono-speakers"},
---
-2.45.2
-
-
-From c1ca32ecd4172c05ddc83a1927d73d3a23253353 Mon Sep 17 00:00:00 2001
-From: CVMagic <546352+CVMagic@users.noreply.github.com>
-Date: Sat, 13 Jul 2024 12:18:58 -0400
-Subject: [PATCH 8/8] Use DMI matching for conflicting SSID 0x1f660101 between
- Ayaneo and AYN
-
-Signed-off-by: Antheas Kapenekakis <git@antheas.dev>
----
- sound/pci/hda/patch_realtek.c | 38 ++++++++++++++++++++++++++++-------
- 1 file changed, 31 insertions(+), 7 deletions(-)
-
-diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
-index f2be4b102..928202b1a 100644
---- a/sound/pci/hda/patch_realtek.c
-+++ b/sound/pci/hda/patch_realtek.c
-@@ -20,6 +20,7 @@
- #include <linux/input.h>
- #include <linux/leds.h>
- #include <linux/ctype.h>
-+#include <linux/dmi.h>
- #include <sound/core.h>
- #include <sound/jack.h>
- #include <sound/hda_codec.h>
-@@ -7285,8 +7286,8 @@ enum {
- ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
- ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET,
- ALC269_FIXUP_HEADSET_MODE,
-- ALC269_FIXUP_HEADSET_AYA_2,
-- ALC269_FIXUP_HEADSET_AYA_GEEK,
-+ ALC269_FIXUP_DMI_MATCH,
-+ ALC269_FIXUP_AYA_HEADSET_VOLUME,
- ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
- ALC269_FIXUP_ASPIRE_HEADSET_MIC,
- ALC269_FIXUP_ASUS_X101_FUNC,
-@@ -7555,6 +7555,30 @@
- ALC245_FIXUP_CLEVO_NOISY_MIC,
- };
-
-+/* A special fixup for AYN and AYANEO handhelds as both
-+* have the same PCI SSID as well as the same codec, but
-+* require different quirks, falling back to DMI matching.
-+*/
-+static void alc269_fixup_match_via_dmi(struct hda_codec *codec,
-+ const struct hda_fixup *fix, int action)
-+{
-+ int alc269_fix_id;
-+ const char *board_name = dmi_get_system_info(DMI_BOARD_NAME);
-+
-+ if (dmi_name_in_vendors("AYANEO") || dmi_name_in_vendors("AYADEVICE") || dmi_name_in_vendors("AYA DEVICE")) {
-+ if (board_name && (strcmp(board_name, "AYANEO 2") || strcmp(board_name, "AYANEO 2S") || strcmp(board_name, "GEEK") || strcmp(board_name, "GEEK 1S"))) {
-+ alc269_fix_id = ALC269_FIXUP_AYA_HEADSET_VOLUME;
-+ } else {
-+ return;
-+ }
-+ } else if (dmi_name_in_vendors("ayn") && strcmp(board_name, "Loki MiniPro")) {
-+ alc269_fix_id = ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX;
-+ } else {
-+ return;
-+ }
-+ __snd_hda_apply_fixup(codec, alc269_fix_id, action, 0);
-+}
-+
- /* A special fixup for Lenovo C940 and Yoga Duet 7;
- * both have the very same PCI SSID, and we need to apply different fixups
- * depending on the codec ID
-@@ -8802,11 +8827,11 @@ static const struct hda_fixup alc269_fixups[] = {
- .chained = true,
- .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
- },
-- [ALC269_FIXUP_HEADSET_AYA_2] = {
-+ [ALC269_FIXUP_DMI_MATCH] = {
- .type = HDA_FIXUP_FUNC,
-- .v.func = alc269_fixup_headphone_volume,
-+ .v.func = alc269_fixup_match_via_dmi,
- },
-- [ALC269_FIXUP_HEADSET_AYA_GEEK] = {
-+ [ALC269_FIXUP_AYA_HEADSET_VOLUME] = {
- .type = HDA_FIXUP_FUNC,
- .v.func = alc269_fixup_headphone_volume,
- },
-@@ -10601,8 +10601,7 @@
- SND_PCI_QUIRK(0x2782, 0x0214, "VAIO VJFE-CL", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
- SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO),
- SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
-- SND_PCI_QUIRK(0x1f66, 0x0101, "AYANEO 2", ALC269_FIXUP_HEADSET_AYA_2),
-- SND_PCI_QUIRK(0x1f66, 0x0101, "GEEK", ALC269_FIXUP_HEADSET_AYA_GEEK),
-+ SND_PCI_QUIRK(0x1f66, 0x0101, "Multiple Vendors", ALC269_FIXUP_DMI_MATCH),
- SND_PCI_QUIRK(0x1f66, 0x0103, "AYANEO AIR 1S", ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX),
- SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
- SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
---
-2.45.2
-
diff --git a/SOURCES/v2-ally-suspend-fix.patch b/SOURCES/v2-ally-suspend-fix.patch
new file mode 100644
index 0000000..c37d49e
--- /dev/null
+++ b/SOURCES/v2-ally-suspend-fix.patch
@@ -0,0 +1,913 @@
+From ff87284862db614a4067b2d7383ecb173e1454de Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Wed, 18 Sep 2024 23:53:53 +0200
+Subject: [PATCH v3 01/10] acpi/x86: s2idle: add support for Display Off and
+ Display On callbacks
+
+The Display Off and Display On firmware notifications are meant to signify
+the system entering a state where the user is not actively interacting
+with it (i.e., in Windows this state is called "Screen Off" and the
+system enters it once it turns the screen off e.g., due to inactivity).
+
+Currently, these functions are called within the suspend sequence, which
+causes issues when these notifications interact with e.g., a USB device
+and makes them unable to be called as part of the screen turning off.
+
+This patch adds a set of callbacks to allow calling the Display On/Off
+notifications outside of the suspend/resume path.
+
+Co-developed-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ include/linux/suspend.h | 5 +++++
+ kernel/power/suspend.c | 12 ++++++++++++
+ 2 files changed, 17 insertions(+)
+
+diff --git a/include/linux/suspend.h b/include/linux/suspend.h
+index da6ebca3ff77..8f33249cc067 100644
+--- a/include/linux/suspend.h
++++ b/include/linux/suspend.h
+@@ -132,6 +132,7 @@ struct platform_suspend_ops {
+ };
+
+ struct platform_s2idle_ops {
++ int (*display_off)(void);
+ int (*begin)(void);
+ int (*prepare)(void);
+ int (*prepare_late)(void);
+@@ -140,6 +141,7 @@ struct platform_s2idle_ops {
+ void (*restore_early)(void);
+ void (*restore)(void);
+ void (*end)(void);
++ int (*display_on)(void);
+ };
+
+ #ifdef CONFIG_SUSPEND
+@@ -160,6 +162,9 @@ extern unsigned int pm_suspend_global_flags;
+ #define PM_SUSPEND_FLAG_FW_RESUME BIT(1)
+ #define PM_SUSPEND_FLAG_NO_PLATFORM BIT(2)
+
++int platform_suspend_display_off(void);
++int platform_suspend_display_on(void);
++
+ static inline void pm_suspend_clear_flags(void)
+ {
+ pm_suspend_global_flags = 0;
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index 09f8397bae15..c527dc0ae5ae 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -254,6 +254,18 @@ static bool sleep_state_supported(suspend_state_t state)
+ (valid_state(state) && !cxl_mem_active());
+ }
+
++int platform_suspend_display_off(void)
++{
++ return s2idle_ops && s2idle_ops->display_off ? s2idle_ops->display_off() : 0;
++}
++EXPORT_SYMBOL_GPL(platform_suspend_display_off);
++
++int platform_suspend_display_on(void)
++{
++ return s2idle_ops && s2idle_ops->display_on ? s2idle_ops->display_on() : 0;
++}
++EXPORT_SYMBOL_GPL(platform_suspend_display_on);
++
+ static int platform_suspend_prepare(suspend_state_t state)
+ {
+ return state != PM_SUSPEND_TO_IDLE && suspend_ops->prepare ?
+--
+2.46.2
+
+
+From 0f25cd27999b0fe6c0382208452422fd1866da1e Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Thu, 19 Sep 2024 00:02:32 +0200
+Subject: [PATCH v3 02/10] acpi/x86: s2idle: handle Display On/Off calls
+ outside of suspend sequence
+
+Currently, the Display On/Off calls are handled within the suspend
+sequence, which is a deviation from Windows. This causes issues with
+certain devices, where the notification interacts with a USB device
+that expects the kernel to be fully awake.
+
+This patch calls the Display On/Off callbacks before entering the suspend
+sequence, which fixes this issue. In addition, it opens the possibility
+of modelling a state such as "Screen Off" that mirrors Windows, as the
+callbacks will be accessible and validated to work outside of the
+suspend sequence.
+
+Suggested-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ kernel/power/suspend.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index c527dc0ae5ae..610f8ecaeebd 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -589,6 +589,13 @@ static int enter_state(suspend_state_t state)
+ if (state == PM_SUSPEND_TO_IDLE)
+ s2idle_begin();
+
++ /*
++ * Linux does not have the concept of a "Screen Off" state, so call
++ * the platform functions for Display On/Off prior to the suspend
++ * sequence, mirroring Windows which calls them outside of it as well.
++ */
++ platform_suspend_display_off();
++
+ if (sync_on_suspend_enabled) {
+ trace_suspend_resume(TPS("sync_filesystems"), 0, true);
+ ksys_sync_helper();
+@@ -616,6 +623,8 @@ static int enter_state(suspend_state_t state)
+ suspend_finish();
+ Unlock:
+ mutex_unlock(&system_transition_mutex);
++
++ platform_suspend_display_on();
+ return error;
+ }
+
+--
+2.46.2
+
+
+From e0cad271a26ff16ea9456e0104ea10e1195f6d47 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Sun, 22 Sep 2024 11:47:29 +0200
+Subject: [PATCH v3 03/10] acpi/x86: s2idle: add quirk table for modern standby
+ delays
+
+Unfortunately, some modern standby systems, including the ROG Ally, rely
+on a delay between modern standby transitions. Add a quirk table for
+introducing delays between modern standby transitions, and quirk the
+ROG Ally on "Display Off", which needs a bit of time to turn off its
+controllers prior to suspending (i.e., entering DRIPS).
+
+Reported-by: Denis Benato <benato.denis96@gmail.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ include/linux/suspend.h | 5 +++++
+ kernel/power/suspend.c | 41 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 46 insertions(+)
+
+diff --git a/include/linux/suspend.h b/include/linux/suspend.h
+index 8f33249cc067..d7e2a4d8ab0c 100644
+--- a/include/linux/suspend.h
++++ b/include/linux/suspend.h
+@@ -144,6 +144,11 @@ struct platform_s2idle_ops {
+ int (*display_on)(void);
+ };
+
++struct platform_s2idle_quirks {
++ int delay_display_off;
++ int delay_display_on;
++};
++
+ #ifdef CONFIG_SUSPEND
+ extern suspend_state_t pm_suspend_target_state;
+ extern suspend_state_t mem_sleep_current;
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index 610f8ecaeebd..af2abdd2f8c3 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -11,6 +11,7 @@
+
+ #include <linux/string.h>
+ #include <linux/delay.h>
++#include <linux/dmi.h>
+ #include <linux/errno.h>
+ #include <linux/init.h>
+ #include <linux/console.h>
+@@ -61,6 +62,30 @@ static DECLARE_SWAIT_QUEUE_HEAD(s2idle_wait_head);
+ enum s2idle_states __read_mostly s2idle_state;
+ static DEFINE_RAW_SPINLOCK(s2idle_lock);
+
++// The ROG Ally series disconnects its controllers on Display Off, without
++// holding a lock, introducing a race condition. Add a delay to allow the
++// controller to disconnect cleanly prior to suspend.
++static const struct platform_s2idle_quirks rog_ally_quirks = {
++ .delay_display_off = 500,
++};
++
++static const struct dmi_system_id platform_s2idle_quirks[] = {
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_NAME, "RC71L"),
++ },
++ .driver_data = (void *)&rog_ally_quirks
++ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_NAME, "RC72L"),
++ },
++ .driver_data = (void *)&rog_ally_quirks
++ },
++ {}
++};
++
++
+ /**
+ * pm_suspend_default_s2idle - Check if suspend-to-idle is the default suspend.
+ *
+@@ -589,12 +614,26 @@ static int enter_state(suspend_state_t state)
+ if (state == PM_SUSPEND_TO_IDLE)
+ s2idle_begin();
+
++ /*
++ * Windows transitions between Modern Standby states slowly, over multiple
++ * seconds. Certain manufacturers may rely on this, introducing race
++ * conditions. Until Linux can support modern standby, add the relevant
++ * delays between transitions here.
++ */
++ const struct dmi_system_id *s2idle_sysid = dmi_first_match(
++ platform_s2idle_quirks
++ );
++ const struct platform_s2idle_quirks *s2idle_quirks = s2idle_sysid ?
++ s2idle_sysid->driver_data : NULL;
++
+ /*
+ * Linux does not have the concept of a "Screen Off" state, so call
+ * the platform functions for Display On/Off prior to the suspend
+ * sequence, mirroring Windows which calls them outside of it as well.
+ */
+ platform_suspend_display_off();
++ if (s2idle_quirks && s2idle_quirks->delay_display_off)
++ msleep(s2idle_quirks->delay_display_off);
+
+ if (sync_on_suspend_enabled) {
+ trace_suspend_resume(TPS("sync_filesystems"), 0, true);
+@@ -624,6 +663,8 @@ static int enter_state(suspend_state_t state)
+ Unlock:
+ mutex_unlock(&system_transition_mutex);
+
++ if (s2idle_quirks && s2idle_quirks->delay_display_on)
++ msleep(s2idle_quirks->delay_display_on);
+ platform_suspend_display_on();
+ return error;
+ }
+--
+2.46.2
+
+
+From 230395bedb589220c3c126d7f33156edbb3dd1c7 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Thu, 19 Sep 2024 00:22:03 +0200
+Subject: [PATCH v3 04/10] acpi/x86: s2idle: call Display On/Off as part of
+ callbacks and rename
+
+Move the Display On/Off notifications into dedicated callbacks that gate
+the ACPI mutex, so they can be called outside of the suspend path.
+This fixes issues on certain devices that expect kernel drivers to be
+fully active during the calls, and allows for the flexibility of calling
+them as part of a more elaborate userspace suspend sequence (such as
+with "Screen Off" in Windows Modern Standby).
+
+In addition, rename the notifications from "screen_" to "display_", as
+there is no documentation referring to them as screen, either by
+Intel or Microsoft.
+
+Co-developed-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ drivers/acpi/x86/s2idle.c | 89 +++++++++++++++++++++++++++------------
+ 1 file changed, 62 insertions(+), 27 deletions(-)
+
+diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
+index dd0b40b9bbe8..a17e28b91326 100644
+--- a/drivers/acpi/x86/s2idle.c
++++ b/drivers/acpi/x86/s2idle.c
+@@ -39,8 +39,8 @@ static const struct acpi_device_id lps0_device_ids[] = {
+ #define ACPI_LPS0_DSM_UUID "c4eb40a0-6cd2-11e2-bcfd-0800200c9a66"
+
+ #define ACPI_LPS0_GET_DEVICE_CONSTRAINTS 1
+-#define ACPI_LPS0_SCREEN_OFF 3
+-#define ACPI_LPS0_SCREEN_ON 4
++#define ACPI_LPS0_DISPLAY_OFF 3
++#define ACPI_LPS0_DISPLAY_ON 4
+ #define ACPI_LPS0_ENTRY 5
+ #define ACPI_LPS0_EXIT 6
+ #define ACPI_LPS0_MS_ENTRY 7
+@@ -50,8 +50,8 @@ static const struct acpi_device_id lps0_device_ids[] = {
+ #define ACPI_LPS0_DSM_UUID_AMD "e3f32452-febc-43ce-9039-932122d37721"
+ #define ACPI_LPS0_ENTRY_AMD 2
+ #define ACPI_LPS0_EXIT_AMD 3
+-#define ACPI_LPS0_SCREEN_OFF_AMD 4
+-#define ACPI_LPS0_SCREEN_ON_AMD 5
++#define ACPI_LPS0_DISPLAY_OFF_AMD 4
++#define ACPI_LPS0_DISPLAY_ON_AMD 5
+
+ static acpi_handle lps0_device_handle;
+ static guid_t lps0_dsm_guid;
+@@ -60,6 +60,7 @@ static int lps0_dsm_func_mask;
+ static guid_t lps0_dsm_guid_microsoft;
+ static int lps0_dsm_func_mask_microsoft;
+ static int lps0_dsm_state;
++static bool lsp0_dsm_in_display_off;
+
+ /* Device constraint entry structure */
+ struct lpi_device_info {
+@@ -361,9 +362,9 @@ static const char *acpi_sleep_dsm_state_to_str(unsigned int state)
+ {
+ if (lps0_dsm_func_mask_microsoft || !acpi_s2idle_vendor_amd()) {
+ switch (state) {
+- case ACPI_LPS0_SCREEN_OFF:
++ case ACPI_LPS0_DISPLAY_OFF:
+ return "screen off";
+- case ACPI_LPS0_SCREEN_ON:
++ case ACPI_LPS0_DISPLAY_ON:
+ return "screen on";
+ case ACPI_LPS0_ENTRY:
+ return "lps0 entry";
+@@ -376,9 +377,9 @@ static const char *acpi_sleep_dsm_state_to_str(unsigned int state)
+ }
+ } else {
+ switch (state) {
+- case ACPI_LPS0_SCREEN_ON_AMD:
++ case ACPI_LPS0_DISPLAY_ON_AMD:
+ return "screen on";
+- case ACPI_LPS0_SCREEN_OFF_AMD:
++ case ACPI_LPS0_DISPLAY_OFF_AMD:
+ return "screen off";
+ case ACPI_LPS0_ENTRY_AMD:
+ return "lps0 entry";
+@@ -539,27 +540,69 @@ static struct acpi_scan_handler lps0_handler = {
+ .attach = lps0_device_attach,
+ };
+
+-int acpi_s2idle_prepare_late(void)
++static int acpi_s2idle_display_off(void)
+ {
+- struct acpi_s2idle_dev_ops *handler;
+-
+ if (!lps0_device_handle || sleep_no_lps0)
+ return 0;
+
+- if (pm_debug_messages_on)
+- lpi_check_constraints();
++ if (unlikely(WARN_ON(lsp0_dsm_in_display_off)))
++ return -EINVAL;
++
++ lsp0_dsm_in_display_off = true;
++ acpi_scan_lock_acquire();
+
+- /* Screen off */
++ /* Display off */
+ if (lps0_dsm_func_mask > 0)
+ acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
+- ACPI_LPS0_SCREEN_OFF_AMD :
+- ACPI_LPS0_SCREEN_OFF,
++ ACPI_LPS0_DISPLAY_OFF_AMD :
++ ACPI_LPS0_DISPLAY_OFF,
+ lps0_dsm_func_mask, lps0_dsm_guid);
+
+ if (lps0_dsm_func_mask_microsoft > 0)
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF,
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_DISPLAY_OFF,
+ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+
++ acpi_scan_lock_release();
++
++ return 0;
++}
++
++static int acpi_s2idle_display_on(void)
++{
++ if (!lps0_device_handle || sleep_no_lps0)
++ return 0;
++
++ if (unlikely(WARN_ON(!lsp0_dsm_in_display_off)))
++ return -EINVAL;
++
++ lsp0_dsm_in_display_off = false;
++ acpi_scan_lock_acquire();
++
++ /* Display on */
++ if (lps0_dsm_func_mask_microsoft > 0)
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_DISPLAY_ON,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ if (lps0_dsm_func_mask > 0)
++ acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
++ ACPI_LPS0_DISPLAY_ON_AMD :
++ ACPI_LPS0_DISPLAY_ON,
++ lps0_dsm_func_mask, lps0_dsm_guid);
++
++ acpi_scan_lock_release();
++
++ return 0;
++}
++
++int acpi_s2idle_prepare_late(void)
++{
++ struct acpi_s2idle_dev_ops *handler;
++
++ if (!lps0_device_handle || sleep_no_lps0)
++ return 0;
++
++ if (pm_debug_messages_on)
++ lpi_check_constraints();
++
+ /* LPS0 entry */
+ if (lps0_dsm_func_mask > 0 && acpi_s2idle_vendor_amd())
+ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
+@@ -623,19 +666,10 @@ void acpi_s2idle_restore_early(void)
+ acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_EXIT,
+ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+ }
+-
+- /* Screen on */
+- if (lps0_dsm_func_mask_microsoft > 0)
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON,
+- lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+- if (lps0_dsm_func_mask > 0)
+- acpi_sleep_run_lps0_dsm(acpi_s2idle_vendor_amd() ?
+- ACPI_LPS0_SCREEN_ON_AMD :
+- ACPI_LPS0_SCREEN_ON,
+- lps0_dsm_func_mask, lps0_dsm_guid);
+ }
+
+ static const struct platform_s2idle_ops acpi_s2idle_ops_lps0 = {
++ .display_off = acpi_s2idle_display_off,
+ .begin = acpi_s2idle_begin,
+ .prepare = acpi_s2idle_prepare,
+ .prepare_late = acpi_s2idle_prepare_late,
+@@ -644,6 +678,7 @@ static const struct platform_s2idle_ops acpi_s2idle_ops_lps0 = {
+ .restore_early = acpi_s2idle_restore_early,
+ .restore = acpi_s2idle_restore,
+ .end = acpi_s2idle_end,
++ .display_on = acpi_s2idle_display_on,
+ };
+
+ void __init acpi_s2idle_setup(void)
+--
+2.46.2
+
+
+From 69cdca368e53713088771d2866adc48ac19cbf29 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Thu, 19 Sep 2024 00:29:59 +0200
+Subject: [PATCH v3 05/10] platform/x86: asus-wmi: remove Ally (1st gen) and
+ Ally X suspend quirk
+
+By moving the Display On/Off calls outside of the suspend sequence and
+introducing a slight delay after Display Off, the ROG Ally controller
+functions exactly as it does in Windows.
+
+Therefore, remove the quirk that fixed the controller only when the
+mcu_powersave attribute was disabled, while adding a large amount of
+delay to the suspend and wake process.
+
+Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ drivers/platform/x86/asus-wmi.c | 54 ---------------------------------
+ 1 file changed, 54 deletions(-)
+
+diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
+index 37636e5a38e3..2c9656e0afda 100644
+--- a/drivers/platform/x86/asus-wmi.c
++++ b/drivers/platform/x86/asus-wmi.c
+@@ -137,11 +137,6 @@
+ #define ASUS_MINI_LED_2024_STRONG 0x01
+ #define ASUS_MINI_LED_2024_OFF 0x02
+
+-/* Controls the power state of the USB0 hub on ROG Ally which input is on */
+-#define ASUS_USB0_PWR_EC0_CSEE "\\_SB.PCI0.SBRG.EC0.CSEE"
+-/* 300ms so far seems to produce a reliable result on AC and battery */
+-#define ASUS_USB0_PWR_EC0_CSEE_WAIT 1500
+-
+ static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL };
+
+ static int throttle_thermal_policy_write(struct asus_wmi *);
+@@ -269,9 +264,6 @@
+ u32 tablet_switch_dev_id;
+ bool tablet_switch_inverted;
+
+- /* The ROG Ally device requires the MCU USB device be disconnected before suspend */
+- bool ally_mcu_usb_switch;
+-
+ enum fan_type fan_type;
+ enum fan_type gpu_fan_type;
+ enum fan_type mid_fan_type;
+@@ -4708,8 +4700,6 @@
+ asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU);
+ asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU);
+ asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE);
+- asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE)
+- && dmi_check_system(asus_ally_mcu_quirk);
+
+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE))
+ asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE;
+@@ -4892,34 +4868,6 @@ static int asus_hotk_resume(struct device *device)
+ return 0;
+ }
+
+-static int asus_hotk_resume_early(struct device *device)
+-{
+- struct asus_wmi *asus = dev_get_drvdata(device);
+-
+- if (asus->ally_mcu_usb_switch) {
+- /* sleep required to prevent USB0 being yanked then reappearing rapidly */
+- if (ACPI_FAILURE(acpi_execute_simple_method(NULL, ASUS_USB0_PWR_EC0_CSEE, 0xB8)))
+- dev_err(device, "ROG Ally MCU failed to connect USB dev\n");
+- else
+- msleep(ASUS_USB0_PWR_EC0_CSEE_WAIT);
+- }
+- return 0;
+-}
+-
+-static int asus_hotk_prepare(struct device *device)
+-{
+- struct asus_wmi *asus = dev_get_drvdata(device);
+-
+- if (asus->ally_mcu_usb_switch) {
+- /* sleep required to ensure USB0 is disabled before sleep continues */
+- if (ACPI_FAILURE(acpi_execute_simple_method(NULL, ASUS_USB0_PWR_EC0_CSEE, 0xB7)))
+- dev_err(device, "ROG Ally MCU failed to disconnect USB dev\n");
+- else
+- msleep(ASUS_USB0_PWR_EC0_CSEE_WAIT);
+- }
+- return 0;
+-}
+-
+ static int asus_hotk_restore(struct device *device)
+ {
+ struct asus_wmi *asus = dev_get_drvdata(device);
+@@ -4964,8 +4912,6 @@ static const struct dev_pm_ops asus_pm_ops = {
+ .thaw = asus_hotk_thaw,
+ .restore = asus_hotk_restore,
+ .resume = asus_hotk_resume,
+- .resume_early = asus_hotk_resume_early,
+- .prepare = asus_hotk_prepare,
+ };
+
+ /* Registration ***************************************************************/
+--
+2.46.2
+
+
+From 2d446e1e66be5ae07bb7c243a7c4383b49b1aa3e Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Wed, 25 Sep 2024 14:10:11 +0200
+Subject: [PATCH v3 06/10] acpi/x86: s2idle: add support for Sleep Entry and
+ Sleep Exit callbacks
+
+The Sleep Entry and Sleep Exit firmware notifications allow the platform
+to enter Modern Standby. In this state, if supported, the platform turns
+off auxiliary USB devices (e.g., the controllers of the Legion Go),
+makes the power light of the device flash, and lowers the power envelope
+to a minimum that still allows for software activity without affecting
+battery life.
+
+Allow for entering this state prior to initiating the suspend sequence.
+This fixes issues where the EC or the USB of the device need time to
+power down before entering the suspend sequence, and allows for entering
+this power state without suspending the device.
+
+Suggested-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ include/linux/suspend.h | 4 ++++
+ kernel/power/suspend.c | 12 ++++++++++++
+ 2 files changed, 16 insertions(+)
+
+diff --git a/include/linux/suspend.h b/include/linux/suspend.h
+index d7e2a4d8ab0c..66c5b434334d 100644
+--- a/include/linux/suspend.h
++++ b/include/linux/suspend.h
+@@ -133,6 +133,7 @@ struct platform_suspend_ops {
+
+ struct platform_s2idle_ops {
+ int (*display_off)(void);
++ int (*sleep_entry)(void);
+ int (*begin)(void);
+ int (*prepare)(void);
+ int (*prepare_late)(void);
+@@ -141,6 +142,7 @@ struct platform_s2idle_ops {
+ void (*restore_early)(void);
+ void (*restore)(void);
+ void (*end)(void);
++ int (*sleep_exit)(void);
+ int (*display_on)(void);
+ };
+
+@@ -168,6 +170,8 @@ extern unsigned int pm_suspend_global_flags;
+ #define PM_SUSPEND_FLAG_NO_PLATFORM BIT(2)
+
+ int platform_suspend_display_off(void);
++int platform_suspend_sleep_entry(void);
++int platform_suspend_sleep_exit(void);
+ int platform_suspend_display_on(void);
+
+ static inline void pm_suspend_clear_flags(void)
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index af2abdd2f8c3..dab299e28195 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -285,6 +285,18 @@ int platform_suspend_display_off(void)
+ }
+ EXPORT_SYMBOL_GPL(platform_suspend_display_off);
+
++int platform_suspend_sleep_entry(void)
++{
++ return s2idle_ops && s2idle_ops->sleep_entry ? s2idle_ops->sleep_entry() : 0;
++}
++EXPORT_SYMBOL_GPL(platform_suspend_sleep_entry);
++
++int platform_suspend_sleep_exit(void)
++{
++ return s2idle_ops && s2idle_ops->sleep_exit ? s2idle_ops->sleep_exit() : 0;
++}
++EXPORT_SYMBOL_GPL(platform_suspend_sleep_exit);
++
+ int platform_suspend_display_on(void)
+ {
+ return s2idle_ops && s2idle_ops->display_on ? s2idle_ops->display_on() : 0;
+--
+2.46.2
+
+
+From ec33ea0c341d5b75a090910664c572d8d4793bbc Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Wed, 25 Sep 2024 14:19:00 +0200
+Subject: [PATCH v3 07/10] acpi/x86: s2idle: handle Sleep Entry/Exit calls
+ outside of suspend sequence
+
+As with Display On/Off, these calls should be made outside the suspend
+sequence, to allow the EC and USB devices that are affected to complete
+their power off sequence before the kernel suspends their power rails
+and interrupts.
+
+Suggested-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ kernel/power/suspend.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index dab299e28195..9dcdd5273318 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -547,6 +547,13 @@ int suspend_devices_and_enter(suspend_state_t state)
+ if (state == PM_SUSPEND_TO_IDLE)
+ pm_set_suspend_no_platform();
+
++ /*
++ * Linux does not have the concept of a "Sleep" state. As with Display
++ * On/Off, call the platform functions for Sleep Entry/Exit prior to the
++ * suspend sequence.
++ */
++ platform_suspend_sleep_entry();
++
+ error = platform_suspend_begin(state);
+ if (error)
+ goto Close;
+@@ -577,6 +584,8 @@ int suspend_devices_and_enter(suspend_state_t state)
+ Close:
+ platform_resume_end(state);
+ pm_suspend_target_state = PM_SUSPEND_ON;
++
++ platform_suspend_sleep_exit();
+ return error;
+
+ Recover_platform:
+--
+2.46.2
+
+
+From 0825b095f26cbea829078f70d4c757ff9b2eab38 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Wed, 25 Sep 2024 14:29:42 +0200
+Subject: [PATCH v3 08/10] acpi/x86: s2idle: update quirk table for Sleep
+ Entry/Exit
+
+Add delays between the Sleep Entry and Sleep Exit calls, to avoid issues
+in devices that rely on them that need time to power off.
+
+Especially for the ROG Ally, this should allow its EC to suspend gracefully,
+avoiding issues where it is stuck in its suspend state. Since the delays
+are additive, steal some of the delay from Display On/Off.
+
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ include/linux/suspend.h | 2 ++
+ kernel/power/suspend.c | 21 +++++++++++++++++++--
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/suspend.h b/include/linux/suspend.h
+index 66c5b434334d..5b4d4d9ef65a 100644
+--- a/include/linux/suspend.h
++++ b/include/linux/suspend.h
+@@ -148,6 +148,8 @@ struct platform_s2idle_ops {
+
+ struct platform_s2idle_quirks {
+ int delay_display_off;
++ int delay_sleep_entry;
++ int delay_sleep_exit;
+ int delay_display_on;
+ };
+
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index 9dcdd5273318..1352c4066822 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -65,8 +65,11 @@ static DEFINE_RAW_SPINLOCK(s2idle_lock);
+ // The ROG Ally series disconnects its controllers on Display Off, without
+ // holding a lock, introducing a race condition. Add a delay to allow the
+ // controller to disconnect cleanly prior to suspend.
++// In addition, the EC of the device rarely (1/20 attempts) may get stuck
++// after suspend in an invalid state, where it mirros Sleep behavior.
+ static const struct platform_s2idle_quirks rog_ally_quirks = {
+- .delay_display_off = 500,
++ .delay_display_off = 200,
++ .delay_sleep_entry = 300,
+ };
+
+ static const struct dmi_system_id platform_s2idle_quirks[] = {
+@@ -548,11 +551,23 @@ int suspend_devices_and_enter(suspend_state_t state)
+ pm_set_suspend_no_platform();
+
+ /*
+- * Linux does not have the concept of a "Sleep" state. As with Display
++ * Windows transitions between Modern Standby states slowly, as with
++ * Display On/Off, query the appropriate delays here for Sleep Entry/Exit.
++ */
++ const struct dmi_system_id *s2idle_sysid = dmi_first_match(
++ platform_s2idle_quirks
++ );
++ const struct platform_s2idle_quirks *s2idle_quirks = s2idle_sysid ?
++ s2idle_sysid->driver_data : NULL;
++
++ /*
++ * Linux does not have the concept of a "Sleep" state. As done with Display
+ * On/Off, call the platform functions for Sleep Entry/Exit prior to the
+ * suspend sequence.
+ */
+ platform_suspend_sleep_entry();
++ if (s2idle_quirks && s2idle_quirks->delay_sleep_entry)
++ msleep(s2idle_quirks->delay_sleep_entry);
+
+ error = platform_suspend_begin(state);
+ if (error)
+@@ -585,6 +600,8 @@ int suspend_devices_and_enter(suspend_state_t state)
+ platform_resume_end(state);
+ pm_suspend_target_state = PM_SUSPEND_ON;
+
++ if (s2idle_quirks && s2idle_quirks->delay_sleep_exit)
++ msleep(s2idle_quirks->delay_sleep_exit);
+ platform_suspend_sleep_exit();
+ return error;
+
+--
+2.46.2
+
+
+From 49cafd9d1cf20250e31f34a849c505d205968ef5 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <lkml@antheas.dev>
+Date: Wed, 25 Sep 2024 14:41:03 +0200
+Subject: [PATCH v3 09/10] acpi/x86: s2idle: call Sleep Entry/Exit as part of
+ callbacks.
+
+Move the Sleep Entry/Exit notifications outside the suspend sequence,
+with their own ACPI lock, as was done for Display On/Off.
+
+Suggested-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
+---
+ drivers/acpi/x86/s2idle.c | 69 ++++++++++++++++++++++++++++++---------
+ 1 file changed, 53 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
+index a17e28b91326..6ff5e34c016e 100644
+--- a/drivers/acpi/x86/s2idle.c
++++ b/drivers/acpi/x86/s2idle.c
+@@ -43,8 +43,8 @@ static const struct acpi_device_id lps0_device_ids[] = {
+ #define ACPI_LPS0_DISPLAY_ON 4
+ #define ACPI_LPS0_ENTRY 5
+ #define ACPI_LPS0_EXIT 6
+-#define ACPI_LPS0_MS_ENTRY 7
+-#define ACPI_LPS0_MS_EXIT 8
++#define ACPI_LPS0_SLEEP_ENTRY 7
++#define ACPI_LPS0_SLEEP_EXIT 8
+
+ /* AMD */
+ #define ACPI_LPS0_DSM_UUID_AMD "e3f32452-febc-43ce-9039-932122d37721"
+@@ -61,6 +61,7 @@ static guid_t lps0_dsm_guid_microsoft;
+ static int lps0_dsm_func_mask_microsoft;
+ static int lps0_dsm_state;
+ static bool lsp0_dsm_in_display_off;
++static bool lsp0_dsm_in_sleep;
+
+ /* Device constraint entry structure */
+ struct lpi_device_info {
+@@ -370,10 +371,10 @@ static const char *acpi_sleep_dsm_state_to_str(unsigned int state)
+ return "lps0 entry";
+ case ACPI_LPS0_EXIT:
+ return "lps0 exit";
+- case ACPI_LPS0_MS_ENTRY:
+- return "lps0 ms entry";
+- case ACPI_LPS0_MS_EXIT:
+- return "lps0 ms exit";
++ case ACPI_LPS0_SLEEP_ENTRY:
++ return "lps0 sleep entry";
++ case ACPI_LPS0_SLEEP_EXIT:
++ return "lps0 sleep exit";
+ }
+ } else {
+ switch (state) {
+@@ -567,6 +568,48 @@ static int acpi_s2idle_display_off(void)
+ return 0;
+ }
+
++static int acpi_s2idle_sleep_entry(void)
++{
++ if (!lps0_device_handle || sleep_no_lps0 || lps0_dsm_func_mask_microsoft <= 0)
++ return 0;
++
++ if (WARN_ON(lsp0_dsm_in_sleep))
++ return -EINVAL;
++
++ lsp0_dsm_in_sleep = true;
++ acpi_scan_lock_acquire();
++
++ /* Modern Standby Sleep Entry */
++ if (lps0_dsm_func_mask_microsoft > 0)
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SLEEP_ENTRY,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++
++ acpi_scan_lock_release();
++
++ return 0;
++}
++
++static int acpi_s2idle_sleep_exit(void)
++{
++ if (!lps0_device_handle || sleep_no_lps0 || lps0_dsm_func_mask_microsoft <= 0)
++ return 0;
++
++ if (WARN_ON(!lsp0_dsm_in_sleep))
++ return -EINVAL;
++
++ lsp0_dsm_in_sleep = false;
++ acpi_scan_lock_acquire();
++
++ /* Modern Standby Sleep Exit */
++ if (lps0_dsm_func_mask_microsoft > 0)
++ acpi_sleep_run_lps0_dsm(ACPI_LPS0_SLEEP_EXIT,
++ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++
++ acpi_scan_lock_release();
++
++ return 0;
++}
++
+ static int acpi_s2idle_display_on(void)
+ {
+ if (!lps0_device_handle || sleep_no_lps0)
+@@ -608,13 +651,9 @@ int acpi_s2idle_prepare_late(void)
+ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD,
+ lps0_dsm_func_mask, lps0_dsm_guid);
+
+- if (lps0_dsm_func_mask_microsoft > 0) {
+- /* Modern Standby entry */
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_ENTRY,
+- lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
++ if (lps0_dsm_func_mask_microsoft > 0)
+ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
+ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+- }
+
+ if (lps0_dsm_func_mask > 0 && !acpi_s2idle_vendor_amd())
+ acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY,
+@@ -659,17 +698,14 @@ void acpi_s2idle_restore_early(void)
+ ACPI_LPS0_EXIT,
+ lps0_dsm_func_mask, lps0_dsm_guid);
+
+- if (lps0_dsm_func_mask_microsoft > 0) {
++ if (lps0_dsm_func_mask_microsoft > 0)
+ acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT,
+ lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+- /* Modern Standby exit */
+- acpi_sleep_run_lps0_dsm(ACPI_LPS0_MS_EXIT,
+- lps0_dsm_func_mask_microsoft, lps0_dsm_guid_microsoft);
+- }
+ }
+
+ static const struct platform_s2idle_ops acpi_s2idle_ops_lps0 = {
+ .display_off = acpi_s2idle_display_off,
++ .sleep_entry = acpi_s2idle_sleep_entry,
+ .begin = acpi_s2idle_begin,
+ .prepare = acpi_s2idle_prepare,
+ .prepare_late = acpi_s2idle_prepare_late,
+@@ -678,6 +714,7 @@ static const struct platform_s2idle_ops acpi_s2idle_ops_lps0 = {
+ .restore_early = acpi_s2idle_restore_early,
+ .restore = acpi_s2idle_restore,
+ .end = acpi_s2idle_end,
++ .sleep_exit = acpi_s2idle_sleep_exit,
+ .display_on = acpi_s2idle_display_on,
+ };
+
+--
+2.46.2
diff --git a/SOURCES/v2-onexplayer.patch b/SOURCES/v2-onexplayer.patch
new file mode 100644
index 0000000..f1a191e
--- /dev/null
+++ b/SOURCES/v2-onexplayer.patch
@@ -0,0 +1,126 @@
+From 1ea6dd6a28c054be66cd361ccc33511e70c19c58 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <git@antheas.dev>
+Date: Wed, 2 Oct 2024 22:17:26 +0200
+Subject: [PATCH v2 1/3] HID: Add quirk to ignore the touchscreen battery on
+ OneXPlayer X1
+
+---
+ drivers/hid/hid-ids.h | 1 +
+ drivers/hid/hid-input.c | 2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
+index 781c5aa29859..917595aafd5c 100644
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -1008,6 +1008,7 @@
+ #define USB_VENDOR_ID_NOVATEK 0x0603
+ #define USB_DEVICE_ID_NOVATEK_PCT 0x0600
+ #define USB_DEVICE_ID_NOVATEK_MOUSE 0x1602
++#define I2C_DEVICE_ID_ONEXPLAYER_X1 0xF001
+
+ #define USB_VENDOR_ID_NTI 0x0757
+ #define USB_DEVICE_ID_USB_SUN 0x0a00
+diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
+index c9094a4f281e..455e2fd4cec3 100644
+--- a/drivers/hid/hid-input.c
++++ b/drivers/hid/hid-input.c
+@@ -417,6 +417,8 @@ static const struct hid_device_id hid_battery_quirks[] = {
+ HID_BATTERY_QUIRK_IGNORE },
+ { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM),
+ HID_BATTERY_QUIRK_AVOID_QUERY },
++ { HID_I2C_DEVICE(USB_VENDOR_ID_NOVATEK, I2C_DEVICE_ID_ONEXPLAYER_X1),
++ HID_BATTERY_QUIRK_IGNORE },
+ {}
+ };
+
+--
+2.46.2
+
+
+From 0bb5d03d90997fde2d7756537039f7a4c5bd2898 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <git@antheas.dev>
+Date: Wed, 2 Oct 2024 22:01:14 +0200
+Subject: [PATCH v2 2/3] drm/panel-orientation-quirks: add OneXPlayer X1 (AMD)
+
+---
+ drivers/gpu/drm/drm_panel_orientation_quirks.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c
+index 0830cae9a4d0..03a640233e97 100644
+--- a/drivers/gpu/drm/drm_panel_orientation_quirks.c
++++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c
+@@ -473,6 +473,24 @@
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
+ },
+ .driver_data = (void *)&gpd_onemix2s,
++ }, { /* OneXPlayer X1 AMD */
++ .matches = {
++ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK"),
++ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONEXPLAYER X1 A"),
++ },
++ .driver_data = (void *)&lcd1600x2560_leftside_up,
++ }, { /* OneXPlayer X1 Intel */
++ .matches = {
++ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK"),
++ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONEXPLAYER X1 i"),
++ },
++ .driver_data = (void *)&lcd1600x2560_leftside_up,
++ }, { /* OneXPlayer X1 mini (AMD) */
++ .matches = {
++ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK"),
++ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONEXPLAYER X1 mini"),
++ },
++ .driver_data = (void *)&lcd1600x2560_leftside_up,
+ },
+ {}
+ };
+--
+2.46.2
+
+
+From 8d4503da18e170537fec84e2b0adfb130df42d38 Mon Sep 17 00:00:00 2001
+From: Antheas Kapenekakis <git@antheas.dev>
+Date: Mon, 7 Oct 2024 20:38:32 +0200
+Subject: [PATCH v2 3/3] add more OXP F1 and X1 variants
+
+---
+ drivers/hwmon/oxp-sensors.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/drivers/hwmon/oxp-sensors.c b/drivers/hwmon/oxp-sensors.c
+index b6d06370469d..5733d767da00 100644
+--- a/drivers/hwmon/oxp-sensors.c
++++ b/drivers/hwmon/oxp-sensors.c
+@@ -188,6 +188,27 @@ static const struct dmi_system_id dmi_table[] = {
+ },
+ .driver_data = (void *)oxp_fly,
+ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
++ DMI_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1 "),
++ },
++ .driver_data = (void *)oxp_fly,
++ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
++ DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1L"),
++ },
++ .driver_data = (void *)oxp_fly,
++ },
++ {
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
++ DMI_MATCH(DMI_BOARD_NAME, "ONEXPLAYER F1L "),
++ },
++ .driver_data = (void *)oxp_fly,
++ },
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"),
+--
+2.46.2
+