aboutsummaryrefslogtreecommitdiffci
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
-rw-r--r--Jenkinsfile54
-rw-r--r--README.md45
-rw-r--r--config/base-aarch64.config270
-rw-r--r--config/foreign-socs.config68
-rw-r--r--fixups/0012-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-add-camera-support.patch.sed1
-rw-r--r--kernel-sp12in.repo2
-rw-r--r--kernel-surface.spec57
-rwxr-xr-xmake-sources.sh49
m---------overlay0
-rw-r--r--patch-order.txt18
-rw-r--r--patches/camera/0027-media-i2c-ov13858-fix-bayer-order-when-mirrored.patch142
-rw-r--r--patches/surface/0016-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-iris-firmware-name.patch32
12 files changed, 612 insertions, 126 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
index 74f942c..1ab3e47 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -71,7 +71,7 @@ spec:
memory: 5Gi
ephemeral-storage: 40Gi
limits:
- memory: 7Gi
+ memory: 5Gi
ephemeral-storage: 100Gi
"""
}
@@ -118,22 +118,31 @@ spec:
rpmdev-setuptree
- # The published file name is whatever the spec
+ # The published file names are whatever the spec
# resolves to under the tag's versions, so the two
- # cannot drift. A kernel build is expensive; if this
- # exact NEVRA is already in the bucket, skip
- # straight to the metadata.
- rpm_file=$(rpmspec -q \\
+ # cannot drift. Note the plural: kernel-surface-dtb
+ # is a separate package because the main one is
+ # installonly and cannot own a path that carries no
+ # kernel version. Publishing only the first would
+ # leave the kernel unresolvable.
+ prefix="s3://${RPM_BUCKET}/fedora/${fedora_version}/aarch64"
+ rpm_files=$(rpmspec -q \\
--define "upstream_ver ${UPSTREAM_VER}" \\
--define "patchset_ver ${PATCHSET_VER}" \\
--queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\\n' \\
- kernel-surface.spec | head -n1)
- dest="s3://${RPM_BUCKET}/fedora/${fedora_version}/aarch64/${rpm_file}"
+ kernel-surface.spec)
- skip_build=false
- if aws s3 ls --endpoint-url "${B2_ENDPOINT}" "${dest}"; then
- echo "${rpm_file} already published, skipping build"
- skip_build=true
+ # A kernel build is expensive; skip it only when
+ # every one of those is already in the bucket.
+ skip_build=true
+ for rpm_name in ${rpm_files}; do
+ if ! aws s3 ls --endpoint-url "${B2_ENDPOINT}" \\
+ "${prefix}/${rpm_name}"; then
+ skip_build=false
+ fi
+ done
+ if [ "${skip_build}" = true ]; then
+ echo "${TAG_NAME} is already published in full, skipping build"
fi
if [ "${skip_build}" = false ]; then
@@ -146,29 +155,34 @@ spec:
--define '_smp_mflags -j4' \\
kernel-surface.spec
- built="${HOME}/rpmbuild/RPMS/aarch64/${rpm_file}"
- test -f "${built}"
+ # kernel-surface-dtb is noarch, so it lands
+ # in RPMS/noarch rather than RPMS/aarch64; ask
+ # where each one actually is.
+ for rpm_name in ${rpm_files}; do
+ built=$(find "${HOME}/rpmbuild/RPMS" -type f \\
+ -name "${rpm_name}" -print -quit)
+ test -n "${built}"
- aws s3 cp --endpoint-url "${B2_ENDPOINT}" \\
- "${built}" "${dest}"
+ aws s3 cp --endpoint-url "${B2_ENDPOINT}" \\
+ "${built}" "${prefix}/${rpm_name}"
+ done
fi
- repo_url="s3://${RPM_BUCKET}/fedora/${fedora_version}/aarch64"
repo="${WORKSPACE}/repo"
mkdir -p "${repo}"
aws s3 sync --endpoint-url "${B2_ENDPOINT}" \\
--exclude '*' --include '*.rpm' \\
- "${repo_url}/" "${repo}/"
+ "${prefix}/" "${repo}/"
createrepo_c --update "${repo}"
aws s3 sync --endpoint-url "${B2_ENDPOINT}" \\
--exclude 'repomd.xml*' \\
- "${repo}/repodata/" "${repo_url}/repodata/"
+ "${repo}/repodata/" "${prefix}/repodata/"
aws s3 cp --endpoint-url "${B2_ENDPOINT}" \\
"${repo}/repodata/repomd.xml" \\
- "${repo_url}/repodata/repomd.xml"
+ "${prefix}/repodata/repomd.xml"
# Served next to the repository so that consumers
# can `dnf config-manager --add-repo` the URL.
diff --git a/README.md b/README.md
index 8f2c9f0..bb8fcbd 100644
--- a/README.md
+++ b/README.md
@@ -13,25 +13,45 @@ Used in [Fedora KIWI descriptions, modified by me for Surface Pro 12"](https://s
`vanilla-kernel-*.ebuild` applies them, minus `gpu` (does not exist) and
`rockchip` (irrelevant).
+An entry prefixed with `local:` is not the overlay's, it is `patches/<name>/`
+in this repository. Those carry fixes the overlay has not picked up, and they
+live outside the submodule so that `git submodule update` cannot silently drop
+them. They are listed right after the overlay directory they extend, so the
+same numbering that orders the overlay's series orders these too.
+
+- `patches/camera/0027-media-i2c-ov13858-fix-bayer-order-when-mirrored.patch`
+ the rear camera advertises GRBG while the horizontal mirror, which
+ `rotation = <180>` turns on, makes it deliver RGGB. Debayering with the wrong
+ pattern puts both greens into the red and blue channels, so the picture comes
+ out close to monochrome.
+- `patches/surface/0016-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-iris-firmware-name.patch`
+ the video codec firmware in linux-firmware is signed with Qualcomm's SecTools
+ test key, which this device's TrustZone rejects with `error -22 initializing
+ firmware`. Points the iris node at the production-signed build shipped in the
+ Windows driver package instead.
+
+Send them upstream to the overlay when they are ready; drop the `local:` entry
+and the directory once the overlay carries them.
+
## Configuration
The starting point is `config/base-aarch64.config`: Fedora's own aarch64
-kernel config, taken verbatim from the `config` file inside
-`kernel-core-7.2.0-61.fc45.aarch64.rpm`. It is vendored rather than downloaded,
-so the build depends on no third-party host and a refresh shows up as a
-reviewable diff. To refresh it for a newer Fedora, replace everything below the
-comment header with:
+kernel config, taken verbatim from the `config` file. It is vendored rather
+than downloaded, so the build depends on no third-party host and a refresh
+shows up as a reviewable diff. To refresh it for a newer Fedora, replace
+everything below the comment header with:
```bash
dnf download kernel-core --arch aarch64
-rpm2cpio kernel-core-*.aarch64.rpm | cpio -idm './usr/lib/modules/*/config'
+rpm2archive -n - < kernel-core-*.aarch64.rpm |
+ tar -xO --wildcards '*/modules/*/config' |
+ wl-copy
```
-The overlay's ebuild seeds itself from the same Fedora config by way of a
-Gentoo-side fork, `projg2/fedora-kernel-config-for-gentoo`. That repository no
-longer exists, which is why the base config lives here instead.
+If the extraction comes up empty, `rpm -qlp kernel-core-*.aarch64.rpm | grep
+config` says whether the package still carries the file at all.
-Three fragments are merged on top with `scripts/kconfig/merge_config.sh`:
+Four fragments are merged on top with `scripts/kconfig/merge_config.sh`:
* `config/surface.config` – the drivers the patch set enables (SAM stack and
its new RTC, CAMSS and the CSI-2 D-PHY, fastrpc, ath12k, AudioReach).
@@ -39,6 +59,9 @@ Three fragments are merged on top with `scripts/kconfig/merge_config.sh`:
and dm-snapshot/overlayfs built in for `dracut`'s `dmsquash-live`, the EFI
stub because GRUB's aarch64 `linux` command loads the kernel as an EFI
application, and xz module compression.
+* `config/foreign-socs.config` – the ARM64 platforms this machine is not.
+ Fedora's config enables every platform it supports because a distribution
+ kernel has to boot on all of them; this one boots on `qcom,x1p42100` alone.
* `config/no-debug-info.config` – DWARF and BTF off. The package produces no
`-debuginfo` subpackage (`%global debug_package %{nil}`) and strips modules
at install time, so the DWARF was compiled only to be discarded, and it is
@@ -62,7 +85,7 @@ matches the ISO (the project README notes Secure Boot is not available for it).
```bash
dnf config-manager addrepo --from-repofile=\
- https://f003.backblazeb2.com/file/dist-sayagit-fedora-rpm/fedora/45/kernel-sp12in.repo
+ https://rpm.sayag.it/kernel-sp12in/fedora/45/kernel-sp12in.repo
```
## Building
diff --git a/config/base-aarch64.config b/config/base-aarch64.config
index 8ccb3a9..8cc1df6 100644
--- a/config/base-aarch64.config
+++ b/config/base-aarch64.config
@@ -1,10 +1,10 @@
# Fedora's own aarch64 kernel configuration, used as the starting point for
-# this package. Taken verbatim from the config shipped inside
-# kernel-core-7.2.0-61.fc45.aarch64.rpm:
+# this package. Taken verbatim from the config shipped inside kernel-core rpm:
#
# dnf download kernel-core --arch aarch64
-# rpm2cpio kernel-core-*.aarch64.rpm |
-# cpio -idm './usr/lib/modules/*/config'
+# rpm2archive -n - < kernel-core-*.aarch64.rpm |
+# tar -xO --wildcards '*/modules/*/config' |
+# wl-copy
#
# It is vendored rather than downloaded so the build has no dependency on a
# third-party host, and so the base config is reviewable in a diff when it is
@@ -12,18 +12,18 @@
# top of it in %prep; do not edit this file by hand.
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm64 7.2.0-61.fc45.aarch64 Kernel Configuration
+# Linux/arm64 7.3.0-0.rc3.260916g9b87fdc9af2f.34.fc46.aarch64 Kernel Configuration
#
-CONFIG_CC_VERSION_TEXT="gcc (GCC) 16.1.1 20260703 (Red Hat 16.1.1-4)"
+CONFIG_CC_VERSION_TEXT="gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2)"
CONFIG_CC_IS_GCC=y
-CONFIG_GCC_VERSION=160101
+CONFIG_GCC_VERSION=160201
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
-CONFIG_AS_VERSION=20285426
+CONFIG_AS_VERSION=24750
CONFIG_LD_IS_BFD=y
-CONFIG_LD_VERSION=20285426
+CONFIG_LD_VERSION=24750
CONFIG_LLD_VERSION=0
-CONFIG_RUSTC_VERSION=109701
+CONFIG_RUSTC_VERSION=109801
CONFIG_RUST_IS_AVAILABLE=y
CONFIG_RUSTC_LLVM_VERSION=220108
CONFIG_RUSTC_LLVM_MAJOR_VERSION=22
@@ -42,6 +42,7 @@ CONFIG_RUSTC_HAS_SPAN_FILE=y
CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES=y
CONFIG_RUSTC_HAS_FILE_WITH_NUL=y
CONFIG_RUSTC_HAS_FILE_AS_C_STR=y
+CONFIG_RUSTC_HAS_SUSPICIOUS_RUNTIME_SYMBOL_DEFINITIONS=y
CONFIG_PAHOLE_VERSION=130
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
@@ -56,7 +57,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_UAPI_HEADER_TEST=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_BUILD_SALT="7.2.0-61.fc45.aarch64"
+CONFIG_BUILD_SALT="7.3.0-0.rc3.260916g9b87fdc9af2f.34.fc46.aarch64"
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_ZSTD=y
# CONFIG_KERNEL_GZIP is not set
@@ -147,6 +148,7 @@ CONFIG_ARCH_HAS_PREEMPT_LAZY=y
CONFIG_PREEMPT_LAZY=y
# CONFIG_PREEMPT_RT is not set
CONFIG_PREEMPT_COUNT=y
+CONFIG_HAS_SEPARATE_PREEMPT_RESCHED_BITS=y
CONFIG_PREEMPTION=y
CONFIG_PREEMPT_DYNAMIC=y
CONFIG_SCHED_CORE=y
@@ -205,6 +207,7 @@ CONFIG_UCLAMP_TASK=y
CONFIG_UCLAMP_BUCKETS_COUNT=5
# end of Scheduler features
+CONFIG_ARCH_HAS_PTE_PROTNONE=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_CC_HAS_INT128=y
@@ -279,7 +282,6 @@ CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_LD_ORPHAN_WARN=y
CONFIG_LD_ORPHAN_WARN_LEVEL="warn"
-CONFIG_SYSCTL=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_SYSFS_SYSCALL=y
@@ -340,7 +342,7 @@ CONFIG_RUST_KUNIT_SELFTEST=y
CONFIG_RUST_STR_KUNIT_TEST=y
CONFIG_RUST_ATOMICS_KUNIT_TEST=y
CONFIG_RUST_BITFIELD_KUNIT_TEST=y
-CONFIG_RUSTC_VERSION_TEXT="rustc 1.97.1 (8bab26f4f 2026-07-14) (Fedora 1.97.1-2.fc45)"
+CONFIG_RUSTC_VERSION_TEXT="rustc 1.98.1 (48a229cea 2026-09-01) (Fedora 1.98.1-1.fc46)"
CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.72.1"
CONFIG_TRACEPOINTS=y
@@ -482,7 +484,7 @@ CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
CONFIG_ARM64_ERRATUM_1165522=y
CONFIG_ARM64_ERRATUM_1319367=y
CONFIG_ARM64_ERRATUM_1530923=y
-CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
+CONFIG_ARM64_WORKAROUND_REPEAT_TLBI_SYNC=y
CONFIG_ARM64_ERRATUM_2441007=y
CONFIG_ARM64_ERRATUM_1286807=y
CONFIG_ARM64_ERRATUM_1463225=y
@@ -529,6 +531,8 @@ CONFIG_QCOM_QDF2400_ERRATUM_0065=y
CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
CONFIG_ARM64_WORKAROUND_DISABLE_CNP=y
CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
+CONFIG_NVIDIA_OLYMPUS_1027_ERRATUM=y
+CONFIG_RENESAS_ERRATUM_GEN4GICITS1=y
CONFIG_ROCKCHIP_ERRATUM_3568002=y
CONFIG_ROCKCHIP_ERRATUM_3588001=y
CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
@@ -1080,7 +1084,7 @@ CONFIG_BLK_CGROUP_IOPRIO=y
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_SED_OPAL=y
CONFIG_BLK_INLINE_ENCRYPTION=y
-# CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK is not set
+CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
#
# Partition Types
@@ -1134,6 +1138,7 @@ CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
CONFIG_QUEUED_SPINLOCKS=y
+# CONFIG_QUEUED_SPINLOCKS_TRACE_CONTENDED_RELEASE is not set
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
CONFIG_QUEUED_RWLOCKS=y
CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
@@ -1231,7 +1236,7 @@ CONFIG_NUMA_MIGRATION=y
CONFIG_MIGRATION=y
CONFIG_DEVICE_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
-CONFIG_ARCH_ENABLE_THP_MIGRATION=y
+CONFIG_ARCH_HAS_PMD_SOFTLEAVES=y
CONFIG_CONTIG_ALLOC=y
CONFIG_PCP_BATCH_SCALE_MAX=5
CONFIG_PHYS_ADDR_T_64BIT=y
@@ -1301,6 +1306,7 @@ CONFIG_SECRETMEM=y
# CONFIG_ANON_VMA_NAME is not set
CONFIG_HAVE_ARCH_USERFAULTFD_WP=y
CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y
+CONFIG_USERFAULTFD_RWP=y
CONFIG_USERFAULTFD=y
CONFIG_PTE_MARKER_UFFD_WP=y
CONFIG_LRU_GEN=y
@@ -1314,6 +1320,7 @@ CONFIG_IOMMU_MM_DATA=y
CONFIG_EXECMEM=y
CONFIG_NUMA_MEMBLKS=y
# CONFIG_NUMA_EMU is not set
+CONFIG_GENERIC_ARCH_NUMA=y
CONFIG_ARCH_HAS_USER_SHADOW_STACK=y
CONFIG_PT_RECLAIM=y
CONFIG_ARCH_HAS_LAZY_MMU_MODE=y
@@ -1877,6 +1884,7 @@ CONFIG_NET_DSA_TAG_GSWIP=m
CONFIG_NET_DSA_TAG_DSA_COMMON=m
CONFIG_NET_DSA_TAG_DSA=m
CONFIG_NET_DSA_TAG_EDSA=m
+# CONFIG_NET_DSA_TAG_MT7628 is not set
CONFIG_NET_DSA_TAG_MTK=m
CONFIG_NET_DSA_TAG_MXL_862XX=m
# CONFIG_NET_DSA_TAG_MXL_GSW1XX is not set
@@ -2023,9 +2031,6 @@ CONFIG_BATMAN_ADV_MCAST=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_BATMAN_ADV_TRACING=y
CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=m
-CONFIG_OPENVSWITCH_VXLAN=m
-CONFIG_OPENVSWITCH_GENEVE=m
CONFIG_VSOCKETS=m
CONFIG_VSOCKETS_DIAG=m
CONFIG_VSOCKETS_LOOPBACK=m
@@ -2318,6 +2323,7 @@ CONFIG_PCI_HOST_GENERIC=y
# CONFIG_PCIE_HISI_ERR is not set
CONFIG_PCI_HYPERV_INTERFACE=y
CONFIG_PCI_TEGRA=y
+# CONFIG_PCIE_TEGRA264 is not set
# CONFIG_PCIE_RCAR_HOST is not set
CONFIG_PCIE_RENESAS_RZG3S_HOST=y
CONFIG_PCIE_ROCKCHIP=y
@@ -2333,6 +2339,7 @@ CONFIG_PCIE_XILINX_CPM=y
# Cadence-based PCIe controllers
#
CONFIG_PCIE_CADENCE=y
+# CONFIG_PCIE_CADENCE_DEBUGFS is not set
CONFIG_PCIE_CADENCE_HOST=y
CONFIG_PCIE_CADENCE_PLAT=y
CONFIG_PCIE_CADENCE_PLAT_HOST=y
@@ -2478,7 +2485,8 @@ CONFIG_PM_RUNTIME_KUNIT_TEST=m
CONFIG_HMEM_REPORTING=y
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
# CONFIG_DM_KUNIT_TEST is not set
-CONFIG_DRIVER_PE_KUNIT_TEST=m
+# CONFIG_DRIVER_PE_KUNIT_TEST is not set
+CONFIG_DRIVER_SWNODE_KUNIT_TEST=m
CONFIG_GENERIC_CPU_DEVICES=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_CPU_VULNERABILITIES=y
@@ -2499,9 +2507,7 @@ CONFIG_REGMAP_SCCB=m
CONFIG_REGMAP_I3C=m
CONFIG_REGMAP_SPI_AVMM=m
CONFIG_DMA_SHARED_BUFFER=y
-# CONFIG_DMA_FENCE_TRACE is not set
CONFIG_GENERIC_ARCH_TOPOLOGY=y
-CONFIG_GENERIC_ARCH_NUMA=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set
# end of Generic Driver Options
@@ -2575,6 +2581,7 @@ CONFIG_ARM_SCMI_POWER_CONTROL=y
CONFIG_ARM_SCPI_PROTOCOL=m
CONFIG_ARM_SDE_INTERFACE=y
+# CONFIG_ARM_SDEI_NMI is not set
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=y
@@ -2638,6 +2645,8 @@ CONFIG_ARM_PSCI_FW=y
#
# Qualcomm firmware drivers
#
+CONFIG_QCOM_PAS=y
+# CONFIG_QCOM_PAS_TEE is not set
CONFIG_QCOM_SCM=y
CONFIG_QCOM_TZMEM=y
CONFIG_QCOM_TZMEM_MODE_GENERIC=y
@@ -2964,7 +2973,6 @@ CONFIG_DW_XDATA_PCIE=m
# CONFIG_PCI_ENDPOINT_TEST is not set
CONFIG_XILINX_SDFEC=m
CONFIG_MISC_RTSX=m
-CONFIG_HISI_HIKEY_USB=m
CONFIG_OPEN_DICE=m
CONFIG_NTSYNC=m
CONFIG_VCPU_STALL_DETECTOR=m
@@ -2978,14 +2986,9 @@ CONFIG_NSM=m
#
# EEPROM support
#
-CONFIG_EEPROM_AT24=m
-CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
-CONFIG_EEPROM_93XX46=m
CONFIG_EEPROM_IDT_89HPESX=m
-CONFIG_EEPROM_EE1004=m
-CONFIG_EEPROM_M24LR=m
# end of EEPROM support
CONFIG_CB710_CORE=m
@@ -3008,7 +3011,9 @@ CONFIG_PVPANIC_PCI=m
CONFIG_GP_PCI1XXXX=m
# CONFIG_KEBA_CP500 is not set
# CONFIG_AMD_SBRMI_I2C is not set
+# CONFIG_AMD_SBTSI is not set
CONFIG_MISC_RP1=m
+# CONFIG_INTEL_SSEI is not set
# end of Misc devices
#
@@ -3086,6 +3091,7 @@ CONFIG_SCSI_MPT2SAS_MAX_SGE=128
CONFIG_SCSI_MPT3SAS_MAX_SGE=128
# CONFIG_SCSI_MPT2SAS is not set
CONFIG_SCSI_MPI3MR=m
+# CONFIG_SCSI_LEAPRAID is not set
CONFIG_SCSI_SMARTPQI=m
CONFIG_SCSI_HPTIOP=m
# CONFIG_SCSI_BUSLOGIC is not set
@@ -3565,7 +3571,9 @@ CONFIG_LIBETH=m
CONFIG_LIBETH_XDP=m
CONFIG_LIBIE=m
CONFIG_LIBIE_ADMINQ=m
+CONFIG_LIBIE_CP=m
CONFIG_LIBIE_FWLOG=m
+CONFIG_LIBIE_PCI=m
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
@@ -3590,9 +3598,11 @@ CONFIG_IGC=m
CONFIG_IGC_LEDS=y
CONFIG_IDPF=m
CONFIG_IDPF_SINGLEQ=y
+# CONFIG_IXD is not set
CONFIG_JME=m
CONFIG_NET_VENDOR_ADI=y
CONFIG_ADIN1110=m
+# CONFIG_ADIN1140 is not set
CONFIG_NET_VENDOR_LITEX=y
CONFIG_LITEX_LITEETH=m
CONFIG_NET_VENDOR_MARVELL=y
@@ -3802,6 +3812,8 @@ CONFIG_NET_VENDOR_XILINX=y
CONFIG_XILINX_EMACLITE=m
# CONFIG_XILINX_AXI_EMAC is not set
CONFIG_XILINX_LL_TEMAC=m
+CONFIG_NET_VENDOR_ZTE=y
+# CONFIG_DINGHAI is not set
# CONFIG_FDDI is not set
CONFIG_QCOM_IPA=m
CONFIG_PHYLINK=m
@@ -3826,6 +3838,7 @@ CONFIG_AMD_PHY=m
CONFIG_MESON_GXL_PHY=m
CONFIG_ADIN_PHY=m
# CONFIG_ADIN1100_PHY is not set
+# CONFIG_ADIN1140_PHY is not set
# CONFIG_AMCC_QT2025_PHY is not set
CONFIG_AQUANTIA_PHY=m
CONFIG_AX88796B_PHY=m
@@ -3839,6 +3852,7 @@ CONFIG_BCM_NET_PHYLIB=m
CONFIG_BCM_NET_PHYPTP=m
CONFIG_CICADA_PHY=m
CONFIG_CORTINA_PHY=m
+# CONFIG_DAP8211R_PHY is not set
CONFIG_DAVICOM_PHY=m
CONFIG_ICPLUS_PHY=m
CONFIG_LXT_PHY=m
@@ -3951,9 +3965,13 @@ CONFIG_CAN_PEAK_USB=m
CONFIG_MCTP_SERIAL=m
# CONFIG_MCTP_TRANSPORT_I2C is not set
CONFIG_MCTP_TRANSPORT_I3C=m
+CONFIG_MCTP_TRANSPORT_USBLIB=m
CONFIG_MCTP_TRANSPORT_USB=m
# end of MCTP Device Drivers
+#
+# MDIO controller drivers
+#
CONFIG_FWNODE_MDIO=y
CONFIG_OF_MDIO=y
CONFIG_ACPI_MDIO=y
@@ -3982,6 +4000,8 @@ CONFIG_MDIO_BUS_MUX_MESON_GXL=m
CONFIG_MDIO_BUS_MUX_GPIO=m
CONFIG_MDIO_BUS_MUX_MULTIPLEXER=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
+# end of MDIO Multiplexers
+# end of MDIO controller drivers
#
# PCS device drivers
@@ -4247,6 +4267,11 @@ CONFIG_MT7925U=m
CONFIG_WLAN_VENDOR_MICROCHIP=y
# CONFIG_WILC1000_SDIO is not set
# CONFIG_WILC1000_SPI is not set
+CONFIG_WLAN_VENDOR_MORSEMICRO=y
+# CONFIG_MM81X_USB is not set
+# CONFIG_MM81X_SDIO is not set
+CONFIG_WLAN_VENDOR_NXP=y
+# CONFIG_NXPWIFI_SDIO is not set
# CONFIG_WLAN_VENDOR_PURELIFI is not set
CONFIG_WLAN_VENDOR_RALINK=y
CONFIG_RT2X00=m
@@ -4360,8 +4385,11 @@ CONFIG_RTW89_8852CE=m
CONFIG_RTW89_8852CU=m
CONFIG_RTW89_8922AE=m
CONFIG_RTW89_8922AU=m
+# CONFIG_RTW89_8922DE is not set
# CONFIG_RTW89_DEBUGMSG is not set
# CONFIG_RTW89_DEBUGFS is not set
+CONFIG_RTW89_LEDS=y
+CONFIG_RTW89_LEDS_MC=y
CONFIG_WLAN_VENDOR_RSI=y
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4686,9 +4714,9 @@ CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_IQS269A=m
CONFIG_INPUT_IQS626A=m
CONFIG_INPUT_IQS7222=m
+# CONFIG_INPUT_ISA1200_HAPTIC is not set
CONFIG_INPUT_CMA3000=m
CONFIG_INPUT_CMA3000_I2C=m
-CONFIG_INPUT_SOC_BUTTON_ARRAY=m
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2665_HAPTICS is not set
# CONFIG_INPUT_DRV2667_HAPTICS is not set
@@ -4762,6 +4790,7 @@ CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCILIB=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_EXAR=m
+CONFIG_SERIAL_8250_MOXA_PCIE=y
CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_RUNTIME_UARTS=32
CONFIG_SERIAL_8250_EXTENDED=y
@@ -4780,7 +4809,7 @@ CONFIG_SERIAL_8250_OMAP=y
CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP=y
CONFIG_SERIAL_8250_PERICOM=y
CONFIG_SERIAL_8250_TEGRA=y
-CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_SERIAL_OF_PLATFORM is not set
CONFIG_SERIAL_8250_DWLIB=y
#
@@ -4852,6 +4881,7 @@ CONFIG_HVC_DRIVER=y
# CONFIG_HVC_DCC is not set
CONFIG_RPMSG_TTY=m
CONFIG_SERIAL_DEV_BUS=y
+# CONFIG_RUST_SERIAL_DEV_BUS_ABSTRACTIONS is not set
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
# CONFIG_TTY_PRINTK is not set
CONFIG_VIRTIO_CONSOLE=y
@@ -4861,6 +4891,7 @@ CONFIG_IPMI_PLAT_DATA=y
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
+# CONFIG_IPMI_SI_ASYNC_INIT is not set
CONFIG_IPMI_SSIF=m
CONFIG_IPMI_IPMB=m
CONFIG_IPMI_WATCHDOG=m
@@ -4887,6 +4918,7 @@ CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y
CONFIG_HW_RANDOM_CN10K=m
CONFIG_HW_RANDOM_ROCKCHIP=m
CONFIG_HW_RANDOM_XILINX=m
+# CONFIG_HW_RANDOM_QCOM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
CONFIG_TCG_TPM=y
@@ -4902,7 +4934,6 @@ CONFIG_TCG_TIS_I2C_CR50=m
CONFIG_TCG_TIS_I2C_ATMEL=m
CONFIG_TCG_TIS_I2C_INFINEON=m
CONFIG_TCG_TIS_I2C_NUVOTON=m
-CONFIG_TCG_ATMEL=m
# CONFIG_TCG_INFINEON is not set
CONFIG_TCG_CRB=y
CONFIG_TCG_ARM_CRB_FFA=y
@@ -5061,6 +5092,7 @@ CONFIG_SVC_I3C_MASTER=m
CONFIG_MIPI_I3C_HCI=m
CONFIG_MIPI_I3C_HCI_PCI=m
CONFIG_RENESAS_I3C=m
+# CONFIG_AMD_AXI_I3C_MASTER is not set
CONFIG_I3C_OR_I2C=m
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
@@ -5152,6 +5184,7 @@ CONFIG_SPI_MUX=m
# SPI Protocol Masters
#
CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_DMA_KUNIT_TEST=m
# CONFIG_SPI_LOOPBACK_TEST is not set
# CONFIG_SPI_TLE62X0 is not set
# CONFIG_SPI_SLAVE is not set
@@ -5220,7 +5253,7 @@ CONFIG_PINCTRL_AMD=y
CONFIG_PINCTRL_AMDISP=m
CONFIG_PINCTRL_APPLE_GPIO=m
CONFIG_PINCTRL_AS3722=y
-CONFIG_PINCTRL_AXP209=m
+# CONFIG_PINCTRL_AXP209 is not set
# CONFIG_PINCTRL_AW9523 is not set
CONFIG_PINCTRL_CY8C95X0=m
CONFIG_PINCTRL_GENERIC_MUX=m
@@ -5233,7 +5266,7 @@ CONFIG_PINCTRL_MCP23S08=m
CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_ROCKCHIP=y
CONFIG_PINCTRL_SCMI=y
-CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SINGLE is not set
# CONFIG_PINCTRL_STMFX is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL_TPS6594=m
@@ -5291,6 +5324,7 @@ CONFIG_PINCTRL_GLYMUR=y
# CONFIG_PINCTRL_IPQ9574 is not set
# CONFIG_PINCTRL_IPQ9650 is not set
# CONFIG_PINCTRL_KAANAPALI is not set
+CONFIG_PINCTRL_MAILI=y
# CONFIG_PINCTRL_MDM9607 is not set
CONFIG_PINCTRL_MSM8916=y
# CONFIG_PINCTRL_MSM8917 is not set
@@ -5587,8 +5621,8 @@ CONFIG_W1_SLAVE_DS28E04=m
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_AS3722=y
-CONFIG_POWER_RESET_GPIO=y
-CONFIG_POWER_RESET_GPIO_RESTART=y
+# CONFIG_POWER_RESET_GPIO is not set
+# CONFIG_POWER_RESET_GPIO_RESTART is not set
CONFIG_POWER_RESET_HISI=y
# CONFIG_POWER_RESET_LINKSTATION is not set
CONFIG_POWER_RESET_MACSMC=m
@@ -5667,8 +5701,10 @@ CONFIG_CHARGER_BQ24735=m
CONFIG_CHARGER_BQ2515X=m
# CONFIG_CHARGER_BQ25890 is not set
CONFIG_CHARGER_BQ25980=m
+# CONFIG_CHARGER_BQ25630 is not set
CONFIG_CHARGER_BQ256XX=m
CONFIG_CHARGER_RK817=m
+# CONFIG_CHARGER_SGM41542 is not set
CONFIG_CHARGER_SMB347=m
CONFIG_BATTERY_GAUGE_LTC2941=m
# CONFIG_BATTERY_GOLDFISH is not set
@@ -5721,6 +5757,7 @@ CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m
CONFIG_SENSORS_ASC7621=m
CONFIG_SENSORS_ASUS_ROG_RYUJIN=m
CONFIG_SENSORS_AXI_FAN_CONTROL=m
+# CONFIG_SENSORS_KB9002 is not set
CONFIG_SENSORS_ARCTIC_FAN_CONTROLLER=m
CONFIG_SENSORS_ARM_SCMI=m
CONFIG_SENSORS_ARM_SCPI=m
@@ -5894,7 +5931,9 @@ CONFIG_SENSORS_MP9941=m
CONFIG_SENSORS_MP9945=m
CONFIG_SENSORS_MPQ7932_REGULATOR=y
CONFIG_SENSORS_MPQ7932=m
+# CONFIG_SENSORS_MPQ82D00 is not set
CONFIG_SENSORS_MPQ8785=m
+# CONFIG_SENSORS_MPQ8646 is not set
CONFIG_SENSORS_PIM4328=m
CONFIG_SENSORS_PLI1209BC=m
CONFIG_SENSORS_PLI1209BC_REGULATOR=y
@@ -5902,6 +5941,7 @@ CONFIG_SENSORS_PM6764TR=m
# CONFIG_SENSORS_PXE1610 is not set
CONFIG_SENSORS_Q54SJ108A2=m
CONFIG_SENSORS_STEF48H28=m
+# CONFIG_SENSORS_SQ24860 is not set
# CONFIG_SENSORS_STPDDC60 is not set
CONFIG_SENSORS_TDA38640=m
CONFIG_SENSORS_TDA38640_REGULATOR=y
@@ -5912,6 +5952,7 @@ CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TPS546D24=m
CONFIG_SENSORS_UCD9000=m
CONFIG_SENSORS_UCD9200=m
+# CONFIG_SENSORS_VT7505 is not set
CONFIG_SENSORS_XDP710=m
# CONFIG_SENSORS_XDP720 is not set
CONFIG_SENSORS_XDPE152=m
@@ -5922,7 +5963,6 @@ CONFIG_SENSORS_PT5161L=m
CONFIG_SENSORS_PWM_FAN=m
CONFIG_SENSORS_QNAP_MCU_HWMON=m
CONFIG_SENSORS_RASPBERRYPI_HWMON=m
-CONFIG_SENSORS_SBTSI=m
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
CONFIG_SENSORS_SHT3x=m
@@ -6050,6 +6090,8 @@ CONFIG_TEGRA_BPMP_THERMAL=m
#
CONFIG_QCOM_TSENS=m
CONFIG_QCOM_SPMI_ADC_TM5=m
+# CONFIG_QCOM_SPMI_MBG_TM is not set
+# CONFIG_QCOM_SPMI_ADC_TM5_GEN3 is not set
CONFIG_QCOM_SPMI_TEMP_ALARM=m
CONFIG_QCOM_LMH=m
# end of Qualcomm thermal drivers
@@ -6296,6 +6338,7 @@ CONFIG_MFD_VX855=m
# CONFIG_MFD_WM831X_SPI is not set
# CONFIG_MFD_WM8350_I2C is not set
CONFIG_MFD_WM8994=m
+CONFIG_MFD_ROHM_PWRBUTTON=y
CONFIG_MFD_ROHM_BD718XX=y
# CONFIG_MFD_ROHM_BD71828 is not set
# CONFIG_MFD_ROHM_BD957XMUF is not set
@@ -6336,7 +6379,7 @@ CONFIG_REGULATOR_AXP20X=m
CONFIG_REGULATOR_BD718XX=m
CONFIG_REGULATOR_BD9571MWV=m
CONFIG_REGULATOR_BD96801=m
-CONFIG_REGULATOR_CROS_EC=m
+# CONFIG_REGULATOR_CROS_EC is not set
# CONFIG_REGULATOR_DA9121 is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -7066,6 +7109,8 @@ CONFIG_VIDEO_IMX335=m
CONFIG_VIDEO_IMX355=m
CONFIG_VIDEO_IMX412=m
CONFIG_VIDEO_IMX415=m
+# CONFIG_VIDEO_IMX471 is not set
+# CONFIG_VIDEO_IMX678 is not set
CONFIG_VIDEO_MAX9271_LIB=m
CONFIG_VIDEO_MT9M001=m
# CONFIG_VIDEO_MT9M111 is not set
@@ -7557,8 +7602,9 @@ CONFIG_DRM_CLIENT_SETUP=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_FBDEV_OVERALLOC=100
# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
-# CONFIG_DRM_CLIENT_LOG is not set
+CONFIG_DRM_CLIENT_LOG=y
CONFIG_DRM_CLIENT_DEFAULT_FBDEV=y
+# CONFIG_DRM_CLIENT_DEFAULT_LOG is not set
CONFIG_DRM_CLIENT_DEFAULT="fbdev"
# end of Supported DRM clients
@@ -7698,6 +7744,7 @@ CONFIG_DRM_IMX8QXP_PIXEL_COMBINER=m
CONFIG_DRM_IMX8QXP_PIXEL_LINK=m
CONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI=m
CONFIG_DRM_IMX93_MIPI_DSI=m
+# CONFIG_DRM_IMX93_PARALLEL_DISP_FMT_CONVERTER is not set
CONFIG_DRM_DW_DP=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
@@ -7766,6 +7813,7 @@ CONFIG_DRM_PANEL=y
# Display Panels
#
# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set
+# CONFIG_DRM_PANEL_ANBERNIC_TD4310 is not set
CONFIG_DRM_PANEL_ARM_VERSATILE=m
# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set
# CONFIG_DRM_PANEL_AUO_A030JTN01 is not set
@@ -7775,6 +7823,7 @@ CONFIG_DRM_PANEL_BOE_TD4320=m
CONFIG_DRM_PANEL_BOE_TH101MB31UIG002_28A=m
CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
CONFIG_DRM_PANEL_BOE_TV101WUM_LL2=m
+# CONFIG_DRM_PANEL_CHIPONE_ICNA35XX is not set
CONFIG_DRM_PANEL_CHIPWEALTH_CH13726A=m
# CONFIG_DRM_PANEL_EBBG_FT8719 is not set
CONFIG_DRM_PANEL_ELIDA_KD35T133=m
@@ -7790,8 +7839,10 @@ CONFIG_DRM_PANEL_HIMAX_HX83112B=m
CONFIG_DRM_PANEL_HIMAX_HX83121A=m
CONFIG_DRM_PANEL_HIMAX_HX8394=m
CONFIG_DRM_PANEL_HYDIS_HV101HD1=m
+# CONFIG_DRM_PANEL_ILITEK_ILI7807S is not set
CONFIG_DRM_PANEL_ILITEK_IL9322=m
CONFIG_DRM_PANEL_ILITEK_ILI9341=m
+# CONFIG_DRM_PANEL_ILITEK_ILI9488 is not set
# CONFIG_DRM_PANEL_ILITEK_ILI9805 is not set
CONFIG_DRM_PANEL_ILITEK_ILI9806E_CORE=m
CONFIG_DRM_PANEL_ILITEK_ILI9806E_DSI=m
@@ -7825,6 +7876,7 @@ CONFIG_DRM_PANEL_NOVATEK_NT35532=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_NT36536 is not set
# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set
# CONFIG_DRM_PANEL_NOVATEK_NT36672E is not set
CONFIG_DRM_PANEL_NOVATEK_NT37700F=m
@@ -7842,6 +7894,7 @@ CONFIG_DRM_PANEL_RAYDIUM_RM68200=m
CONFIG_DRM_PANEL_RAYDIUM_RM692E5=m
CONFIG_DRM_PANEL_RAYDIUM_RM69380=m
CONFIG_DRM_PANEL_RENESAS_R61307=m
+# CONFIG_DRM_PANEL_RENESAS_R63419 is not set
CONFIG_DRM_PANEL_RENESAS_R69328=m
CONFIG_DRM_PANEL_RONBO_RB070D30=m
CONFIG_DRM_PANEL_SAMSUNG_AMS581VF01=m
@@ -8096,6 +8149,7 @@ CONFIG_BACKLIGHT_AW99706=m
CONFIG_BACKLIGHT_KTD253=m
# CONFIG_BACKLIGHT_KTD2801 is not set
CONFIG_BACKLIGHT_KTZ8866=m
+# CONFIG_BACKLIGHT_SY7758 is not set
CONFIG_BACKLIGHT_PWM=m
CONFIG_BACKLIGHT_MAX25014=m
# CONFIG_BACKLIGHT_APPLE_DWI is not set
@@ -8328,6 +8382,7 @@ CONFIG_SND_HDA_CODEC_HDMI_NVIDIA_MCP=m
CONFIG_SND_HDA_CODEC_HDMI_TEGRA=m
CONFIG_SND_HDA_CIRRUS_SCODEC=m
CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST=m
+# CONFIG_SND_HDA_SCODEC_AW88399_I2C is not set
CONFIG_SND_HDA_SCODEC_CS35L41=m
CONFIG_SND_HDA_SCODEC_COMPONENT=m
CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m
@@ -8759,6 +8814,7 @@ CONFIG_SND_SOC_AW88166=m
CONFIG_SND_SOC_AW88261=m
CONFIG_SND_SOC_AW88081=m
CONFIG_SND_SOC_AW87390=m
+CONFIG_SND_SOC_AW88399_LIB=m
CONFIG_SND_SOC_AW88399=m
CONFIG_SND_SOC_BD28623=m
CONFIG_SND_SOC_BT_SCO=m
@@ -8922,6 +8978,7 @@ CONFIG_SND_SOC_RT722_SDCA_SDW=m
CONFIG_SND_SOC_RT715=m
CONFIG_SND_SOC_RT715_SDW=m
CONFIG_SND_SOC_RT715_SDCA_SDW=m
+# CONFIG_SND_SOC_RT766_SDCA_SDW is not set
# CONFIG_SND_SOC_RT9120 is not set
CONFIG_SND_SOC_RT9123=m
CONFIG_SND_SOC_RT9123P=m
@@ -9027,6 +9084,7 @@ CONFIG_SND_SOC_WM8994=m
# CONFIG_SND_SOC_WSA881X is not set
CONFIG_SND_SOC_WSA883X=m
CONFIG_SND_SOC_WSA884X=m
+# CONFIG_SND_SOC_WSA885X is not set
CONFIG_SND_SOC_ZL38060=m
CONFIG_SND_SOC_MAX9759=m
# CONFIG_SND_SOC_MT6351 is not set
@@ -9111,12 +9169,14 @@ CONFIG_HID_GFRM=m
CONFIG_HID_GLORIOUS=m
CONFIG_HID_HOLTEK=m
CONFIG_HOLTEK_FF=y
+# CONFIG_HID_HYPERX is not set
CONFIG_HID_VIVALDI_COMMON=m
CONFIG_HID_GOODIX_SPI=m
# CONFIG_HID_GOOGLE_HAMMER is not set
CONFIG_HID_GOOGLE_STADIA_FF=m
CONFIG_HID_VIVALDI=m
CONFIG_HID_GT683R=m
+# CONFIG_HID_MSI is not set
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_KYSONA=m
@@ -9195,6 +9255,7 @@ CONFIG_HID_RMI=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
CONFIG_HID_HYPERV_MOUSE=m
+# CONFIG_HID_HYPERV_MOUSE_KUNIT_TEST is not set
CONFIG_HID_SMARTJOYPLUS=m
CONFIG_SMARTJOYPLUS_FF=y
CONFIG_HID_TIVO=m
@@ -9853,6 +9914,7 @@ CONFIG_LEDS_USER=m
# CONFIG_LEDS_SPI_BYTE is not set
# CONFIG_LEDS_LM3697 is not set
CONFIG_LEDS_ST1202=m
+# CONFIG_LEDS_LTC3220 is not set
#
# Flash and Torch LED drivers
@@ -10114,6 +10176,7 @@ CONFIG_RTC_DRV_MESON_VRTC=m
# CONFIG_RTC_DRV_SH is not set
# CONFIG_RTC_DRV_PL030 is not set
CONFIG_RTC_DRV_PL031=y
+# CONFIG_RTC_DRV_RZN1 is not set
CONFIG_RTC_DRV_SUN6I=y
CONFIG_RTC_DRV_MV=m
CONFIG_RTC_DRV_ARMADA38X=m
@@ -10526,6 +10589,14 @@ CONFIG_COMMON_CLK_BD718XX=m
CONFIG_CLK_BCM2711_DVP=m
CONFIG_CLK_BCM2835=y
CONFIG_CLK_RASPBERRYPI=y
+
+#
+# Cixtech Audio Subsystem Clock Driver
+#
+# CONFIG_CLK_SKY1_AUDSS is not set
+# end of Cixtech Audio Subsystem Clock Driver
+
+CONFIG_COMMON_CLK_HISI=y
# CONFIG_COMMON_CLK_HI3516CV300 is not set
CONFIG_COMMON_CLK_HI3519=m
CONFIG_COMMON_CLK_HI3559A=y
@@ -10569,6 +10640,8 @@ CONFIG_COMMON_CLK_AXG=y
CONFIG_COMMON_CLK_AXG_AUDIO=y
# CONFIG_COMMON_CLK_A1_PLL is not set
# CONFIG_COMMON_CLK_A1_PERIPHERALS is not set
+CONFIG_COMMON_CLK_A9_PERIPHERALS=y
+CONFIG_COMMON_CLK_A9_AO=y
CONFIG_COMMON_CLK_C3_PLL=y
CONFIG_COMMON_CLK_C3_PERIPHERALS=y
CONFIG_COMMON_CLK_G12A=y
@@ -10588,7 +10661,9 @@ CONFIG_COMMON_CLK_QCOM=y
CONFIG_CLK_ELIZA_DISPCC=m
CONFIG_CLK_ELIZA_GCC=y
CONFIG_CLK_ELIZA_TCSRCC=y
+CONFIG_CLK_GLYMUR_CAMCC=m
CONFIG_CLK_GLYMUR_DISPCC=m
+CONFIG_CLK_GLYMUR_EVACC=m
CONFIG_CLK_GLYMUR_GCC=y
CONFIG_CLK_GLYMUR_GPUCC=m
CONFIG_CLK_GLYMUR_TCSRCC=y
@@ -10599,7 +10674,12 @@ CONFIG_CLK_GLYMUR_VIDEOCC=m
# CONFIG_CLK_KAANAPALI_GPUCC is not set
# CONFIG_CLK_KAANAPALI_TCSRCC is not set
# CONFIG_CLK_KAANAPALI_VIDEOCC is not set
-# CONFIG_CLK_NORD_GCC is not set
+CONFIG_CLK_NORD_DISPCC=m
+CONFIG_CLK_MAILI_VIDEOCC=m
+CONFIG_CLK_NORD_GCC=m
+CONFIG_CLK_SHIKRA_AUDIOCORECC=m
+CONFIG_CLK_SHIKRA_GCC=y
+CONFIG_CLK_NORD_GPUCC=m
CONFIG_CLK_X1E80100_CAMCC=m
CONFIG_CLK_X1E80100_DISPCC=m
CONFIG_CLK_X1E80100_GCC=y
@@ -10610,18 +10690,17 @@ CONFIG_CLK_X1P42100_GPUCC=m
CONFIG_CLK_X1P42100_VIDEOCC=m
CONFIG_CLK_QCM2290_GPUCC=m
CONFIG_QCOM_A53PLL=m
-# CONFIG_QCOM_A7PLL is not set
CONFIG_QCOM_CLK_APCS_MSM8916=m
# CONFIG_QCOM_CLK_APCC_MSM8996 is not set
CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_CLK_RPMH=y
-# CONFIG_CLK_HAWI_GCC is not set
+CONFIG_CLK_HAWI_GCC=m
# CONFIG_CLK_HAWI_TCSRCC is not set
+CONFIG_CLK_HAWI_VIDEOCC=m
# CONFIG_IPQ_APSS_PLL is not set
# CONFIG_IPQ_APSS_5424 is not set
# CONFIG_IPQ_APSS_6018 is not set
CONFIG_IPQ_CMN_PLL=m
-# CONFIG_IPQ_GCC_4019 is not set
CONFIG_IPQ_GCC_5018=m
# CONFIG_IPQ_GCC_5210 is not set
# CONFIG_IPQ_GCC_5332 is not set
@@ -10756,6 +10835,7 @@ CONFIG_CLK_GFM_LPASS_SM8250=m
# CONFIG_SM_VIDEOCC_8450 is not set
CONFIG_CLK_RENESAS=y
CONFIG_CLK_R8A774A1=y
+CONFIG_CLK_R8A78000=y
CONFIG_CLK_R9A07G043=y
CONFIG_CLK_R9A07G044=y
CONFIG_CLK_R9A07G054=y
@@ -10771,6 +10851,7 @@ CONFIG_CLK_RCAR_GEN3_CPG=y
# CONFIG_CLK_RCAR_USB2_CLOCK_SEL is not set
CONFIG_CLK_RZG2L=y
CONFIG_CLK_RZV2H=y
+CONFIG_CLK_RZV2H_CPG_LIB=y
# CONFIG_CLK_RENESAS_VBATTB is not set
CONFIG_CLK_RENESAS_CPG_MSSR=y
CONFIG_CLK_RENESAS_DIV6=y
@@ -10809,6 +10890,7 @@ CONFIG_CLK_KUNIT_TEST=m
CONFIG_CLK_FIXED_RATE_KUNIT_TEST=m
CONFIG_CLK_GATE_KUNIT_TEST=m
CONFIG_CLK_FD_KUNIT_TEST=m
+CONFIG_CLK_DIVIDER_KUNIT_TEST=m
CONFIG_HWSPINLOCK=y
CONFIG_HWSPINLOCK_OMAP=m
CONFIG_HWSPINLOCK_QCOM=m
@@ -10850,7 +10932,7 @@ CONFIG_ARM_MHU=m
CONFIG_ARM_MHU_V2=m
CONFIG_ARM_MHU_V3=m
CONFIG_IMX_MBOX=m
-CONFIG_PLATFORM_MHU=m
+# CONFIG_PLATFORM_MHU is not set
# CONFIG_PL320_MBOX is not set
CONFIG_ARMADA_37XX_RWTM_MBOX=m
CONFIG_OMAP2PLUS_MBOX=m
@@ -10907,6 +10989,7 @@ CONFIG_TEGRA241_CMDQV=y
CONFIG_QCOM_IOMMU=y
CONFIG_IOMMUFD_DRIVER_CORE=y
CONFIG_IOMMUFD=m
+CONFIG_IOMMUFD_NOIOMMU=y
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_SUN50I_IOMMU=y
CONFIG_TEGRA_IOMMU_SMMU=y
@@ -10914,12 +10997,21 @@ CONFIG_TEGRA_IOMMU_SMMU=y
CONFIG_APPLE_DART=m
CONFIG_VIRTIO_IOMMU=y
# CONFIG_VSI_IOMMU is not set
+CONFIG_GENERIC_PT=y
+# CONFIG_DEBUG_GENERIC_PT is not set
+CONFIG_IOMMU_PT=y
+CONFIG_IOMMU_PT_AMDV1=m
+# CONFIG_IOMMU_PT_VTDSS is not set
+# CONFIG_IOMMU_PT_RISCV64 is not set
+# CONFIG_IOMMU_PT_X86_64 is not set
+CONFIG_IOMMU_PT_KUNIT_TEST=m
#
# Remoteproc drivers
#
CONFIG_REMOTEPROC=y
# CONFIG_REMOTEPROC_CDEV is not set
+# CONFIG_AMD_MBV_BRAM_REMOTEPROC is not set
CONFIG_IMX_REMOTEPROC=m
CONFIG_IMX_DSP_REMOTEPROC=m
CONFIG_PRU_REMOTEPROC=m
@@ -10978,6 +11070,7 @@ CONFIG_MESON_GX_SOCINFO=y
# Apple SoC drivers
#
CONFIG_APPLE_MAILBOX=m
+# CONFIG_APPLE_PMGR_MISC is not set
CONFIG_APPLE_RTKIT=m
CONFIG_APPLE_SART=m
CONFIG_APPLE_TUNABLE=m
@@ -11028,24 +11121,15 @@ CONFIG_SOC_IMX9=m
# end of Enable LiteX SoC Builder specific drivers
CONFIG_WPCM450_SOC=m
-
-#
-# Qualcomm SoC drivers
-#
+CONFIG_QCOM_SOC=y
CONFIG_QCOM_AOSS_QMP=m
CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_GENI_SE=y
-CONFIG_QCOM_GSBI=y
CONFIG_QCOM_LLCC=m
-CONFIG_QCOM_KRYO_L2_ACCESSORS=y
-CONFIG_QCOM_MDT_LOADER=m
CONFIG_QCOM_OCMEM=m
CONFIG_QCOM_PD_MAPPER=m
-CONFIG_QCOM_PDR_HELPERS=m
-CONFIG_QCOM_PDR_MSG=m
CONFIG_QCOM_PMIC_PDCHARGER_ULOG=m
CONFIG_QCOM_PMIC_GLINK=m
-CONFIG_QCOM_QMI_HELPERS=m
CONFIG_QCOM_RAMP_CTRL=m
CONFIG_QCOM_RMTFS_MEM=m
CONFIG_QCOM_RPM_MASTER_STATS=m
@@ -11061,10 +11145,13 @@ CONFIG_QCOM_STATS=m
CONFIG_QCOM_WCNSS_CTRL=m
CONFIG_QCOM_APR=m
CONFIG_QCOM_ICC_BWMON=m
-CONFIG_QCOM_INLINE_CRYPTO_ENGINE=m
CONFIG_QCOM_PBS=m
-# end of Qualcomm SoC drivers
-
+CONFIG_QCOM_INLINE_CRYPTO_ENGINE=m
+CONFIG_QCOM_KRYO_L2_ACCESSORS=y
+CONFIG_QCOM_MDT_LOADER=m
+CONFIG_QCOM_PDR_HELPERS=m
+CONFIG_QCOM_PDR_MSG=m
+CONFIG_QCOM_QMI_HELPERS=m
CONFIG_QCOM_UBWC_CONFIG=m
CONFIG_SOC_RENESAS=y
CONFIG_ARCH_RCAR_GEN3=y
@@ -11166,7 +11253,7 @@ CONFIG_RASPBERRYPI_POWER=y
#
CONFIG_IMX_GPCV2_PM_DOMAINS=y
CONFIG_IMX8M_BLK_CTRL=y
-CONFIG_IMX9_BLK_CTRL=y
+CONFIG_IMX9_BLK_CTRL=m
CONFIG_IMX_SCU_PD=y
# end of i.MX PM Domains
@@ -11182,6 +11269,7 @@ CONFIG_QCOM_RPMPD=m
# Renesas PM Domains
#
CONFIG_SYSC_RCAR=y
+CONFIG_MDLC_R8A78000=y
CONFIG_SYSC_R8A774A1=y
# end of Renesas PM Domains
@@ -11385,6 +11473,7 @@ CONFIG_IMX7D_ADC=m
CONFIG_IMX8QXP_ADC=m
CONFIG_IMX93_ADC=m
# CONFIG_LTC2309 is not set
+# CONFIG_LTC2378 is not set
# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2496 is not set
@@ -11435,6 +11524,7 @@ CONFIG_TI_ADS1015=m
CONFIG_TI_ADS1018=m
CONFIG_TI_ADS1100=m
# CONFIG_TI_ADS1119 is not set
+# CONFIG_TI_ADS112C14 is not set
# CONFIG_TI_ADS124S08 is not set
# CONFIG_TI_ADS1298 is not set
CONFIG_TI_ADS131E08=m
@@ -11448,6 +11538,8 @@ CONFIG_TI_AM335X_ADC=m
CONFIG_TI_LMP92064=m
# CONFIG_TI_TLC4541 is not set
CONFIG_TI_TSC2046=m
+# CONFIG_VERSAL_SYSMON is not set
+# CONFIG_VERSAL_SYSMON_I2C is not set
# CONFIG_VF610_ADC is not set
CONFIG_XILINX_XADC=m
CONFIG_XILINX_AMS=m
@@ -11588,6 +11680,7 @@ CONFIG_MAX5522=m
# CONFIG_MAX5821 is not set
# CONFIG_MCP4725 is not set
CONFIG_MCP4728=m
+# CONFIG_MCP47A1 is not set
CONFIG_MCP47FEB02=m
CONFIG_MCP4821=m
# CONFIG_MCP4922 is not set
@@ -11611,6 +11704,12 @@ CONFIG_TI_DAC7311=m
# end of Filters
#
+# Flow sensors
+#
+# CONFIG_SENSIRION_SLF3S is not set
+# end of Flow sensors
+
+#
# Frequency Synthesizers DDS/PLL
#
@@ -11623,6 +11722,7 @@ CONFIG_TI_DAC7311=m
#
# Phase-Locked Loop (PLL) frequency synthesizers
#
+# CONFIG_ADF41513 is not set
# CONFIG_ADF4350 is not set
# CONFIG_ADF4371 is not set
CONFIG_ADF4377=m
@@ -11714,6 +11814,8 @@ CONFIG_FXOS8700_SPI=m
CONFIG_INV_ICM42600=m
CONFIG_INV_ICM42600_I2C=m
CONFIG_INV_ICM42600_SPI=m
+# CONFIG_INV_ICM42607_I2C is not set
+# CONFIG_INV_ICM42607_SPI is not set
CONFIG_INV_ICM45600=m
CONFIG_INV_ICM45600_I2C=m
CONFIG_INV_ICM45600_SPI=m
@@ -11828,6 +11930,8 @@ CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
# CONFIG_INFINEON_TLV493D is not set
+# CONFIG_QMC5883L is not set
+# CONFIG_QMC6308 is not set
# CONFIG_SENSORS_HMC5843_I2C is not set
# CONFIG_SENSORS_HMC5843_SPI is not set
CONFIG_SENSORS_RM3100=m
@@ -12088,6 +12192,7 @@ CONFIG_RESET_RZV2H_USB2PHY=m
CONFIG_RESET_SCMI=y
CONFIG_RESET_SIMPLE=y
CONFIG_RESET_SKY1=y
+# CONFIG_RESET_SKY1_AUDSS is not set
CONFIG_RESET_SUNXI=y
CONFIG_RESET_TI_SCI=m
CONFIG_RESET_TI_SYSCON=m
@@ -12172,6 +12277,7 @@ CONFIG_PHY_QCOM_PCIE2=m
CONFIG_PHY_QCOM_QMP=m
CONFIG_PHY_QCOM_QMP_COMBO=m
CONFIG_PHY_QCOM_QMP_PCIE=m
+# CONFIG_PHY_QCOM_QMP_PCIE_MULTIPHY is not set
CONFIG_PHY_QCOM_QMP_PCIE_8996=m
CONFIG_PHY_QCOM_QMP_UFS=m
CONFIG_PHY_QCOM_QMP_USB=m
@@ -12318,6 +12424,11 @@ CONFIG_NVMEM_LAYOUT_ONIE_TLV=m
CONFIG_NVMEM_LAYOUT_U_BOOT_ENV=m
# end of Layout Types
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_AT25=m
+CONFIG_EEPROM_93XX46=m
+CONFIG_EEPROM_EE1004=m
+CONFIG_EEPROM_M24LR=m
CONFIG_NVMEM_APPLE_EFUSES=m
CONFIG_NVMEM_APPLE_SPMI=m
# CONFIG_NVMEM_IMX_IIM is not set
@@ -12422,6 +12533,7 @@ CONFIG_INTERCONNECT_QCOM_ELIZA=y
CONFIG_INTERCONNECT_QCOM_GLYMUR=y
# CONFIG_INTERCONNECT_QCOM_HAWI is not set
# CONFIG_INTERCONNECT_QCOM_KAANAPALI is not set
+CONFIG_INTERCONNECT_QCOM_MAILI=y
CONFIG_INTERCONNECT_QCOM_MSM8916=m
# CONFIG_INTERCONNECT_QCOM_MSM8937 is not set
# CONFIG_INTERCONNECT_QCOM_MSM8939 is not set
@@ -12593,7 +12705,6 @@ CONFIG_FSCACHE_STATS=y
CONFIG_CACHEFILES=m
# CONFIG_CACHEFILES_DEBUG is not set
# CONFIG_CACHEFILES_ERROR_INJECTION is not set
-CONFIG_CACHEFILES_ONDEMAND=y
# end of Caches
#
@@ -12617,11 +12728,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
CONFIG_FAT_KUNIT_TEST=m
CONFIG_EXFAT_FS=m
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
-# CONFIG_NTFS_FS is not set
-CONFIG_NTFS3_FS=m
-# CONFIG_NTFS3_64BIT_CLUSTER is not set
-CONFIG_NTFS3_LZX_XPRESS=y
-CONFIG_NTFS3_FS_POSIX_ACL=y
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_FS_WOF_COMPRESSION is not set
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_FS_POSIX_ACL=y
+# CONFIG_NTFS3_FS is not set
# end of DOS/FAT/EXFAT/NT Filesystems
#
@@ -12631,7 +12742,7 @@ CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
CONFIG_PROC_VMCORE_DEVICE_DUMP=y
-CONFIG_PROC_SYSCTL=y
+CONFIG_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_CHILDREN=y
CONFIG_PROC_CPU_RESCTRL=y
@@ -12663,7 +12774,6 @@ CONFIG_HFSPLUS_FS=m
CONFIG_HFSPLUS_KUNIT_TEST=m
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -12703,7 +12813,6 @@ CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_VXFS_FS is not set
CONFIG_MINIX_FS=m
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
@@ -12936,6 +13045,7 @@ CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y
# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set
# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set
CONFIG_SECURITY_LANDLOCK=y
+CONFIG_SECURITY_LANDLOCK_LOG=y
CONFIG_SECURITY_IPE=y
CONFIG_IPE_BOOT_POLICY=""
CONFIG_IPE_POLICY_SIG_SECONDARY_KEYRING=y
@@ -12986,6 +13096,7 @@ CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT=y
# CONFIG_IMA_DISABLE_HTABLE is not set
CONFIG_IMA_KEXEC_EXTRA_MEMORY_KB=0
CONFIG_IMA_STAGING=y
+# CONFIG_IMA_INIT_LATE_SYNC is not set
CONFIG_EVM=y
CONFIG_EVM_ATTR_FSUUID=y
# CONFIG_EVM_ADD_XATTRS is not set
@@ -13229,11 +13340,9 @@ CONFIG_CRYPTO_DEV_SUN4I_SS=m
CONFIG_CRYPTO_DEV_SUN8I_CE=m
# CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG is not set
CONFIG_CRYPTO_DEV_SUN8I_CE_HASH=y
-CONFIG_CRYPTO_DEV_SUN8I_CE_PRNG=y
CONFIG_CRYPTO_DEV_SUN8I_CE_TRNG=y
CONFIG_CRYPTO_DEV_SUN8I_SS=m
# CONFIG_CRYPTO_DEV_SUN8I_SS_DEBUG is not set
-CONFIG_CRYPTO_DEV_SUN8I_SS_PRNG=y
CONFIG_CRYPTO_DEV_SUN8I_SS_HASH=y
CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=m
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=m
@@ -13250,7 +13359,6 @@ CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y
CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_PRNG_API=y
# CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_TEST is not set
CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m
# CONFIG_CRYPTO_DEV_SAHARA is not set
@@ -13281,8 +13389,6 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
# CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION is not set
-# CONFIG_CRYPTO_DEV_QCE is not set
-CONFIG_CRYPTO_DEV_QCOM_RNG=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
# CONFIG_CRYPTO_DEV_ROCKCHIP_DEBUG is not set
CONFIG_CRYPTO_DEV_TEGRA=m
@@ -13381,7 +13487,13 @@ CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_LIB_AES=y
CONFIG_CRYPTO_LIB_AES_ARCH=y
CONFIG_CRYPTO_LIB_AESCFB=y
+CONFIG_CRYPTO_LIB_AES_CBC=y
CONFIG_CRYPTO_LIB_AES_CBC_MACS=y
+CONFIG_CRYPTO_LIB_AES_CCM=y
+CONFIG_CRYPTO_LIB_AES_CTR=y
+CONFIG_CRYPTO_LIB_AES_ECB=y
+CONFIG_CRYPTO_LIB_AES_GCM=y
+CONFIG_CRYPTO_LIB_AES_XTS=y
CONFIG_CRYPTO_LIB_ARC4=m
CONFIG_CRYPTO_LIB_GF128MUL=m
CONFIG_CRYPTO_LIB_BLAKE2B=y
@@ -13412,15 +13524,16 @@ CONFIG_CRYPTO_LIB_SHA3_ARCH=y
CONFIG_XOR_BLOCKS=y
CONFIG_XOR_BLOCKS_ARCH=y
CONFIG_XOR_KUNIT_TEST=m
+# CONFIG_XOR_BENCHMARK is not set
CONFIG_RAID6_PQ=y
CONFIG_RAID6_PQ_ARCH=y
CONFIG_RAID6_PQ_KUNIT_TEST=m
+# CONFIG_RAID6_PQ_KUNIT_BENCHMARK is not set
# CONFIG_RAID6_PQ_BENCHMARK is not set
CONFIG_XXHASH=y
CONFIG_AUDIT_GENERIC=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
CONFIG_AUDIT_COMPAT_GENERIC=y
-# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_842_COMPRESS=y
CONFIG_842_DECOMPRESS=y
CONFIG_ZLIB_INFLATE=y
@@ -13482,6 +13595,7 @@ CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y
CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y
CONFIG_ARCH_HAS_BATCHED_DMA_SYNC=y
CONFIG_SWIOTLB=y
+CONFIG_SWIOTLB_DEFAULT_SIZE_MB=64
# CONFIG_SWIOTLB_DYNAMIC is not set
CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y
CONFIG_DMA_NEED_SYNC=y
@@ -13520,7 +13634,7 @@ CONFIG_DIMLIB=y
CONFIG_LIBFDT=y
CONFIG_OID_REGISTRY=y
CONFIG_UCS2_STRING=y
-CONFIG_HAVE_GENERIC_VDSO=y
+CONFIG_VDSO_DATASTORE=y
CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_VDSO_GETRANDOM=y
CONFIG_FONT_SUPPORT=y
@@ -13605,7 +13719,6 @@ CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
# CONFIG_VMLINUX_MAP is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# end of Compile-time checks and compiler options
#
@@ -13673,6 +13786,7 @@ CONFIG_PTDUMP=y
CONFIG_HAVE_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_PER_VMA_LOCK_STATS is not set
+# CONFIG_MEM_ALLOC_PROFILING is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SHRINKER_DEBUG is not set
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -13685,7 +13799,6 @@ CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
# CONFIG_DEBUG_VIRTUAL is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_MEM_ALLOC_PROFILING is not set
CONFIG_HAVE_ARCH_KASAN=y
CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y
CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y
@@ -13849,6 +13962,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_FPROBE_EVENTS=y
CONFIG_PROBE_EVENTS_BTF_ARGS=y
+# CONFIG_PROBE_EVENTS_DUMP_FETCHARG is not set
CONFIG_KPROBE_EVENTS=y
# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set
CONFIG_UPROBE_EVENTS=y
@@ -13899,6 +14013,7 @@ CONFIG_RV_MON_NOMISS=y
CONFIG_RV_REACTORS=y
CONFIG_RV_REACT_PRINTK=y
CONFIG_RV_REACT_PANIC=y
+CONFIG_RV_MONITORS_KUNIT_TEST=m
# CONFIG_TRACE_REMOTE_TEST is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
@@ -13994,6 +14109,7 @@ CONFIG_TEST_VMALLOC=m
# CONFIG_TEST_WORKQUEUE is not set
CONFIG_TEST_BPF=m
# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_REGION_ALLOC_BENCHMARK is not set
# CONFIG_FIND_BIT_BENCHMARK_RUST is not set
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_SYSCTL is not set
@@ -14025,6 +14141,8 @@ CONFIG_STACKINIT_KUNIT_TEST=m
CONFIG_FORTIFY_KUNIT_TEST=m
CONFIG_LONGEST_SYM_KUNIT_TEST=m
CONFIG_CRYPTO_LIB_AES_CBC_MACS_KUNIT_TEST=m
+CONFIG_CRYPTO_LIB_AES_CCM_KUNIT_TEST=m
+CONFIG_CRYPTO_LIB_AES_GCM_KUNIT_TEST=m
CONFIG_CRYPTO_LIB_BLAKE2B_KUNIT_TEST=m
CONFIG_CRYPTO_LIB_BLAKE2S_KUNIT_TEST=m
CONFIG_CRYPTO_LIB_CHACHA20POLY1305_KUNIT_TEST=m
@@ -14064,8 +14182,10 @@ CONFIG_INT_POW_KUNIT_TEST=m
CONFIG_INT_SQRT_KUNIT_TEST=m
CONFIG_INT_LOG_KUNIT_TEST=m
CONFIG_GCD_KUNIT_TEST=m
+CONFIG_POLYNOMIAL_KUNIT_TEST=m
CONFIG_PRIME_NUMBERS_KUNIT_TEST=m
CONFIG_GLOB_KUNIT_TEST=m
+CONFIG_PRANDOM_KUNIT_TEST=m
CONFIG_ARCH_USE_MEMTEST=y
CONFIG_MEMTEST=y
# CONFIG_HYPERV_TESTING is not set
diff --git a/config/foreign-socs.config b/config/foreign-socs.config
new file mode 100644
index 0000000..5926d06
--- /dev/null
+++ b/config/foreign-socs.config
@@ -0,0 +1,68 @@
+# Config fragment turning off the ARM64 platforms this machine is not.
+#
+# Two platforms are deliberately kept:
+#
+# ARCH_QCOM what this machine is.
+# ARCH_VEXPRESS cheap, and it is the ARM reference/model platform that pulls
+# in the AMBA PrimeCell parts a QEMU `virt` guest expects,
+# which is how an image built from this kernel can be smoke
+# tested without the hardware in hand.
+
+# Allwinner
+# CONFIG_ARCH_SUNXI is not set
+
+# Apple M-series
+# CONFIG_ARCH_APPLE is not set
+
+# Broadcom, including Raspberry Pi
+# CONFIG_ARCH_BCM is not set
+# CONFIG_ARCH_BCM2835 is not set
+
+# Black Sesame
+# CONFIG_ARCH_BST is not set
+
+# CIX
+# CONFIG_ARCH_CIX is not set
+
+# Texas Instruments K3
+# CONFIG_ARCH_K3 is not set
+
+# HiSilicon
+# CONFIG_ARCH_HISI is not set
+
+# Amlogic
+# CONFIG_ARCH_MESON is not set
+
+# Marvell EBU
+# CONFIG_ARCH_MVEBU is not set
+
+# NXP: i.MX, Layerscape and S32
+# CONFIG_ARCH_NXP is not set
+# CONFIG_ARCH_LAYERSCAPE is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_S32 is not set
+
+# Renesas
+# CONFIG_ARCH_RENESAS is not set
+
+# Rockchip
+# CONFIG_ARCH_ROCKCHIP is not set
+
+# AMD Seattle
+# CONFIG_ARCH_SEATTLE is not set
+
+# Socionext SynQuacer
+# CONFIG_ARCH_SYNQUACER is not set
+
+# NVIDIA Tegra
+# CONFIG_ARCH_TEGRA is not set
+
+# Cavium ThunderX and ThunderX2 servers
+# CONFIG_ARCH_THUNDER is not set
+# CONFIG_ARCH_THUNDER2 is not set
+
+# AppliedMicro X-Gene
+# CONFIG_ARCH_XGENE is not set
+
+# Xilinx ZynqMP
+# CONFIG_ARCH_ZYNQMP is not set
diff --git a/fixups/0012-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-add-camera-support.patch.sed b/fixups/0012-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-add-camera-support.patch.sed
new file mode 100644
index 0000000..b0ea155
--- /dev/null
+++ b/fixups/0012-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-add-camera-support.patch.sed
@@ -0,0 +1 @@
+s/^@@ -753,6 +768,260 @@/@@ -753,6 +768,232 @@/
diff --git a/kernel-sp12in.repo b/kernel-sp12in.repo
index 226108c..fa257a2 100644
--- a/kernel-sp12in.repo
+++ b/kernel-sp12in.repo
@@ -1,5 +1,5 @@
[kernel-sp12in]
name=kernel-sp12in for Fedora $releasever - $basearch
-baseurl=https://f003.backblazeb2.com/file/dist-sayagit-fedora-rpm/fedora/$releasever/$basearch/
+baseurl=https://rpm.sayag.it/kernel-sp12in/fedora/$releasever/$basearch/
enabled=1
gpgcheck=0
diff --git a/kernel-surface.spec b/kernel-surface.spec
index dc29ae3..22aa947 100644
--- a/kernel-surface.spec
+++ b/kernel-surface.spec
@@ -12,7 +12,7 @@
# passes them in with --define, which takes precedence -- so keep the plain
# `%%global <name> <value>` shape, which make-sources.sh reads with awk.
%if %{undefined upstream_ver}
-%global upstream_ver 7.2.3
+%global upstream_ver 7.3-rc3
%endif
# Bumped whenever the patch tarball changes without the upstream version moving.
@@ -25,6 +25,7 @@
# anyway -- 7.3-rc1 builds 7.3.0 -- and %%prep drops the EXTRAVERSION that would
# otherwise carry the -rcN into uname -r. A stable version passes through.
%global kversion %(echo %{upstream_ver} | sed -e 's/-rc[0-9]*$/.0/')
+%global kverextra %(echo %{upstream_ver} | cut -d'-' -f2 -s)
# The kernel's own release string: what uname -r reports and what names
# /usr/lib/modules/<...>. Matches Fedora's <version>-<release>.<arch> convention.
@@ -43,7 +44,7 @@
Name: kernel-surface
Version: %{kversion}
-Release: %{patchset_ver}%{?dist}
+Release: %(test -n "%{kverextra}" && printf "%{kverextra}.")%{patchset_ver}%{?dist}
Summary: Linux kernel for the Microsoft Surface Pro 12-inch (Snapdragon X1P-42-100)
License: GPL-2.0-only
URL: https://github.com/miasvanklei/Gentoo-overlay
@@ -56,6 +57,7 @@ Source2: base-aarch64.config
Source3: surface.config
Source4: live-image.config
Source5: no-debug-info.config
+Source6: foreign-socs.config
BuildRequires: bc
BuildRequires: binutils
@@ -71,6 +73,7 @@ BuildRequires: gzip
BuildRequires: hostname
BuildRequires: kmod
BuildRequires: make
+BuildRequires: openssl
BuildRequires: openssl-devel
BuildRequires: patch
BuildRequires: perl-interpreter
@@ -142,6 +145,18 @@ for patchdir in patches/*/; do
done
rm -rf patches
+# The camera series calls devm_phy_get_by_of_node(), which only the phy series
+# adds -- and the overlay's own 7.2.3 ebuild left phy out of its loop while
+# shipping the camera patch that needs it. Applying one without the other
+# compiles for twenty-odd minutes before failing in camss-csiphy.c, so assert
+# the declaration is here while it is still cheap to say so.
+grep -q 'devm_phy_get_by_of_node' include/linux/phy/phy.h || {
+ echo "ERROR: include/linux/phy/phy.h does not declare devm_phy_get_by_of_node."
+ echo "The camera patches need the phy ones; check phy is in patch-order.txt"
+ echo "and that it exists at the pinned overlay commit."
+ exit 1
+}
+
# Fold the -rcN suffix into the package release instead of carrying it in
# uname -r, so the module directory is named the way Fedora names it.
sed -i 's/^EXTRAVERSION[[:space:]]*=.*/EXTRAVERSION =/' Makefile
@@ -157,7 +172,7 @@ CONFIG_BUILD_SALT="%{kverrel}"
EOF
ARCH=arm64 scripts/kconfig/merge_config.sh -m -O . \
- .config .release.config %{SOURCE3} %{SOURCE4} %{SOURCE5}
+ .config .release.config %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6}
make ARCH=arm64 olddefconfig
# merge_config.sh is only advisory about symbols it could not set, so check the
@@ -179,6 +194,7 @@ test "${kernelrelease}" = "%{kverrel}" || {
}
%build
+export KCFLAGS="-mcpu=oryon-1+nopauth"
%make_build ARCH=arm64 Image modules dtbs
%install
@@ -204,7 +220,7 @@ install -Dm644 System.map \
install -Dm644 .config \
%{buildroot}/usr/lib/modules/%{kverrel}/config
install -Dm644 arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dtb \
- %{buildroot}/usr/lib/surface-dtb/x1p42100-microsoft-sp12in.dtb
+ %{buildroot}/usr/lib/surface-dtb/%{kverrel}/x1p42100-microsoft-sp12in.dtb
%post
/usr/sbin/depmod -a %{kverrel} || :
@@ -226,12 +242,43 @@ fi
%files
%license COPYING
/usr/lib/modules/%{kverrel}/
-/usr/lib/surface-dtb/x1p42100-microsoft-sp12in.dtb
+/usr/lib/surface-dtb/%{kverrel}/
%ghost %attr(0644,root,root) /boot/config-%{kverrel}
%ghost %attr(0644,root,root) /boot/initramfs-%{kverrel}.img
%ghost %attr(0600,root,root) /boot/System.map-%{kverrel}
%ghost %attr(0644,root,root) /boot/vmlinuz-%{kverrel}
%changelog
+* Fri Sep 18 2026 Saya Andy 7.3.0-rc3.1
+- Update Linux kernel to 7.3-rc3
+- Update Gentoo overlay from dbb15bd8 to 089d5857 (master)
+- Repair malformed hunk header in the overlay's Surface Pro 12in camera DTS
+ patch via sed fixups
+
+* Fri Sep 18 2026 Saya Andy 7.2.6-1
+- Update Linux kernel from 7.2.4 to 7.2.6
+
+* Wed Sep 09 2026 Saya Andy 7.2.4-2
+- Compile kernel specifically for Oryon v1 instruction set (Snapdragon X1 cpu)
+
+* Tue Sep 08 2026 Saya Andy 7.2.4-1
+- Update Linux kernel from 7.2.3 to 7.2.4
+
+* Mon Sep 07 2026 Saya Andy 7.2.3-4
+- Turn off all the ARM64 platform kernel modules besides qcom and vexpress
+ (used in qemu)
+- Fix Bayer order in rear camera resulting in color space shift
+
+* Mon Sep 07 2026 Saya Andy 7.2.3-3
+- Key the /usr/lib/surface-dtb copy of the device tree by kernel version. This
+ package is installonly, so an unqualified path there conflicts between two
+ installed releases as soon as the device tree they build differs.
+
+* Sun Sep 06 2026 Saya Andy 7.2.3-2
+- Local camera patch: report the right bayer order when mirrored (fixes the
+ black-green monochrome output issue)
+- Local surface patch: point iris at the OEM video firmware (fixes error -22
+ for video encoding/decoding)
+
* Sun Sep 06 2026 Saya Andy 7.2.3-1
- Initial package: vanilla 7.2.3 with the overlay's Surface Pro 12" patch set
diff --git a/make-sources.sh b/make-sources.sh
index b4abb4b..aa1c13b 100755
--- a/make-sources.sh
+++ b/make-sources.sh
@@ -3,8 +3,9 @@
# Assemble the rpmbuild sources for kernel-surface.spec:
#
# * kernel-surface-patches-<upstream_ver>-<patchset_ver>.tar.gz, built from the
-# overlay submodule's sys-kernel/vanilla-kernel/files directories listed in
-# patch-order.txt
+# directories listed in patch-order.txt: bare names come from the overlay
+# submodule's sys-kernel/vanilla-kernel/files, "local:" ones from this
+# repository's patches/
# * the upstream kernel tarball
# * the base kernel config and the fragments from config/
#
@@ -32,6 +33,7 @@ spec="${script_dir}/kernel-surface.spec"
order_file="${script_dir}/patch-order.txt"
overlay_dir=${OVERLAY_DIR:-${script_dir}/overlay}
patch_root="${overlay_dir}/sys-kernel/vanilla-kernel/files"
+local_patch_root="${script_dir}/patches"
output_dir=""
skip_download=false
@@ -95,7 +97,19 @@ while read -r dir; do
dir=${dir//[[:space:]]/}
[[ -n ${dir} ]] || continue
- src="${patch_root}/${dir}"
+ # "local:foo" is patches/foo in this repository, "foo" is the overlay's
+ # files/foo. The staging name keeps the prefix so the tarball, and the
+ # spec's "Applying ..." log, say where each patch came from.
+ if [[ ${dir} == local:* ]]; then
+ name=${dir#local:}
+ src="${local_patch_root}/${name}"
+ label="local-${name}"
+ else
+ name=${dir}
+ src="${patch_root}/${name}"
+ label=${name}
+ fi
+
if [[ ! -d ${src} ]]; then
echo "ERROR: ${src} does not exist (listed in patch-order.txt)" >&2
exit 1
@@ -107,15 +121,36 @@ while read -r dir; do
exit 1
fi
- dest=$(printf '%s/patches/%02d-%s' "${staging}" "${index}" "${dir}")
+ dest=$(printf '%s/patches/%02d-%s' "${staging}" "${index}" "${label}")
mkdir -p "${dest}"
cp "${src}"/*.patch "${dest}/"
- printf ' %02d %-12s %2d patches\n' "${index}" "${dir}" "${count}"
+ printf ' %02d %-18s %2d patches\n' "${index}" "${label}" "${count}"
index=$((index + 1))
total=$((total + count))
done < "${order_file}"
+# Repair known-bad overlay patches: fixups/<patch basename>.sed is applied to
+# the staged copy of that patch.
+shopt -s nullglob
+for fixup in "${script_dir}"/fixups/*.sed; do
+ fixup_name=${fixup##*/}
+ target=${fixup_name%.sed}
+ staged=$(find "${staging}/patches" -type f -name "${target}" -print -quit)
+ if [[ -z ${staged} ]]; then
+ echo "ERROR: fixups/${fixup_name} matches no staged patch; delete it" >&2
+ exit 1
+ fi
+ sed -f "${fixup}" "${staged}" > "${staging}/.fixed.patch"
+ if cmp -s "${staged}" "${staging}/.fixed.patch"; then
+ echo "ERROR: fixups/${fixup_name} changed nothing (overlay patch repaired?); delete it" >&2
+ exit 1
+ fi
+ mv "${staging}/.fixed.patch" "${staged}"
+ echo " fixup applied: ${target}"
+done
+shopt -u nullglob
+
tarball="${output_dir}/kernel-surface-patches-${upstream_ver}-${patchset_ver}.tar.gz"
# COPYFILE_DISABLE stops macOS tar from adding ._ AppleDouble members, which
# would show up as bogus patch files in the spec's glob.
@@ -125,10 +160,10 @@ echo "${tarball} (${index} directories, ${total} patches)"
#--------------------------------------
# Base config and fragments
#--------------------------------------
-for cfg in base-aarch64 surface live-image no-debug-info; do
+for cfg in base-aarch64 surface live-image no-debug-info foreign-socs; do
cp "${script_dir}/config/${cfg}.config" "${output_dir}/${cfg}.config"
done
-echo "${output_dir}/{base-aarch64,surface,live-image,no-debug-info}.config"
+echo "${output_dir}/{base-aarch64,surface,live-image,no-debug-info,foreign-socs}.config"
if [[ ${skip_download} == true ]]; then
exit 0
diff --git a/overlay b/overlay
-Subproject b8ef9b54f09965d7e30ce03b3a70f5a36f4591b
+Subproject 089d585765009758ab8387ea237e0f869354842
diff --git a/patch-order.txt b/patch-order.txt
index 334f847..c567bb0 100644
--- a/patch-order.txt
+++ b/patch-order.txt
@@ -1,20 +1,24 @@
-# Patch directories under the Gentoo overlay's sys-kernel/vanilla-kernel/files,
-# in application order.
+# Patch directories in application order.
#
-# This mirrors the loop in vanilla-kernel-7.2.3.ebuild's src_prepare(), minus
-# rockchip (irrelevant). There is no phy directory at this overlay commit; the
-# CSI-2 D-PHY driver is part of the camera series here.
+# A bare name is a directory under the Gentoo overlay's
+# sys-kernel/vanilla-kernel/files. A "local:" prefix means patches/<name> in
+# this repository, for fixes the overlay does not carry yet.
+#
+# This mirrors the loop in vanilla-kernel-7.3_rc3.ebuild's src_prepare(), minus
+# rockchip (irrelevant).
other
audio
clk
+icc
pci
remoteproc
-gpu
-usb
video
wifi
input
el2
+phy
camera
+local:camera
irq
surface
+local:surface
diff --git a/patches/camera/0027-media-i2c-ov13858-fix-bayer-order-when-mirrored.patch b/patches/camera/0027-media-i2c-ov13858-fix-bayer-order-when-mirrored.patch
new file mode 100644
index 0000000..d465f8d
--- /dev/null
+++ b/patches/camera/0027-media-i2c-ov13858-fix-bayer-order-when-mirrored.patch
@@ -0,0 +1,142 @@
+media: i2c: ov13858: report the right bayer order
+
+The driver advertises MEDIA_BUS_FMT_SGRBG10_1X10 unconditionally, but that is
+not what the sensor delivers in any flip state on the Surface Pro 12in. The
+horizontal mirror moves the Bayer phase by one column, and the native order is
+GBRG rather than GRBG, so the two correct codes are GBRG unmirrored and BGGR
+mirrored.
+
+The rear ov13858 is mounted upside down (rotation = <180> in DT), so userspace
+enables both flips to compensate and every frame is then debayered as RGGB
+while the sensor emits BGGR. Red and blue are exchanged: an orange object comes
+out cyan, warm wood comes out blue, while neutrals are unaffected, which is
+what makes it easy to mistake for a white balance problem.
+
+Two measurements on a Surface Pro 12in, from raw frames captured off the CAMSS
+RDI video node. The first locates the green pair by comparing the mean absolute
+difference of the diagonal against the antidiagonal samples of each 2x2 quad,
+the two greens correlating far better than red against blue:
+
+ hflip=0 vflip=0 diagonal 8.65 antidiagonal 56.82 -> greens diagonal
+ hflip=1 vflip=0 diagonal 56.25 antidiagonal 8.34 -> greens antidiagonal
+ hflip=0 vflip=1 diagonal 13.21 antidiagonal 55.94 -> greens diagonal
+ hflip=1 vflip=1 diagonal 56.04 antidiagonal 13.16 -> greens antidiagonal
+
+So only the horizontal mirror moves the phase; the ISP Y window offset written
+for VFLIP compensates the vertical one.
+
+That test cannot tell red from blue, because GBRG and GRBG share a green
+diagonal just as BGGR and RGGB share a green antidiagonal. Resolving the
+remaining ambiguity needs colour: a scene of objects with known colour was
+captured in all four states, and the red channel identified as the one whose
+ratio to blue matches the scene. The rejected assignment is the reciprocal, so
+the margin is large:
+
+ hflip=0 vflip=0 R/B 1.651 (reciprocal 0.606) -> GBRG
+ hflip=0 vflip=1 R/B 1.622 (reciprocal 0.616) -> GBRG
+ hflip=1 vflip=0 R/B 1.651 (reciprocal 0.606) -> BGGR
+ hflip=1 vflip=1 R/B 1.625 (reciprocal 0.615) -> BGGR
+
+Derive the media bus code from HFLIP and tag the control with
+V4L2_CTRL_FLAG_MODIFY_LAYOUT so userspace knows to renegotiate the format after
+toggling it.
+
+The native order disagreeing with upstream is suspicious in itself. The removal
+of the per-mode {0x3811, 0x04} and {0x3813, 0x05} ISP window offsets in
+"media: i2c: ov13858: add rotate control support", which now writes 1 or 2 into
+those registers from the flip handlers, changes the X parity, and that patch
+also sets BIT(3) of ROTATE_CONTROL when HFLIP is clear while VFLIP sets BIT(4)
+when set. Whether the phase should instead be corrected there is left alone
+here: this patch only reports what the sensor is measured to emit.
+
+--- a/drivers/media/i2c/ov13858.c
++++ b/drivers/media/i2c/ov13858.c
+@@ -1032,6 +1032,7 @@
+ struct v4l2_ctrl *vblank;
+ struct v4l2_ctrl *hblank;
+ struct v4l2_ctrl *exposure;
++ struct v4l2_ctrl *hflip;
+
+ struct clk *img_clk;
+ struct gpio_desc *reset_gpio;
+@@ -1222,8 +1223,10 @@
+ OV13858_DGTL_GAIN_MIN, OV13858_DGTL_GAIN_MAX,
+ OV13858_DGTL_GAIN_STEP, OV13858_DGTL_GAIN_DEFAULT);
+
+- v4l2_ctrl_new_std(ctrl_hdlr, &ov13858_ctrl_ops, V4L2_CID_HFLIP,
+- 0, 1, 1, 0);
++ ov13858->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &ov13858_ctrl_ops,
++ V4L2_CID_HFLIP, 0, 1, 1, 0);
++ if (ov13858->hflip)
++ ov13858->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
+
+ v4l2_ctrl_new_std(ctrl_hdlr, &ov13858_ctrl_ops, V4L2_CID_VFLIP,
+ 0, 1, 1, 0);
+@@ -1258,12 +1261,24 @@
+ return ret;
+ }
+
+-static void ov13858_update_pad_format(const struct ov13858_mode *mode,
++/*
++ * Mirroring shifts the Bayer phase by one column, so the native GBRG order
++ * becomes BGGR. The vertical flip is compensated by the ISP Y window offset
++ * and leaves the order alone.
++ */
++static u32 ov13858_get_format_code(struct ov13858 *ov13858)
++{
++ return ov13858->hflip->val ? MEDIA_BUS_FMT_SBGGR10_1X10
++ : MEDIA_BUS_FMT_SGBRG10_1X10;
++}
++
++static void ov13858_update_pad_format(struct ov13858 *ov13858,
++ const struct ov13858_mode *mode,
+ struct v4l2_mbus_framefmt *fmt)
+ {
+ fmt->width = mode->width;
+ fmt->height = mode->height;
+- fmt->code = MEDIA_BUS_FMT_SGRBG10_1X10;
++ fmt->code = ov13858_get_format_code(ov13858);
+ fmt->field = V4L2_FIELD_NONE;
+ }
+
+@@ -1418,7 +1433,7 @@
+ ARRAY_SIZE(supported_modes),
+ width, height,
+ fmt->format.width, fmt->format.height);
+- ov13858_update_pad_format(mode, &fmt->format);
++ ov13858_update_pad_format(ov13858, mode, &fmt->format);
+ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format;
+
+ if (fmt->which == V4L2_SUBDEV_FORMAT_TRY)
+@@ -1453,11 +1468,11 @@
+ struct v4l2_subdev_state *sd_state,
+ struct v4l2_subdev_mbus_code_enum *code)
+ {
+- /* Only one bayer order(GRBG) is supported */
++ /* Only one bayer order is supported, which one depends on the mirror */
+ if (code->index > 0)
+ return -EINVAL;
+
+- code->code = MEDIA_BUS_FMT_SGRBG10_1X10;
++ code->code = ov13858_get_format_code(to_ov13858(sd));
+
+ return 0;
+ }
+@@ -1469,7 +1484,7 @@
+ if (fse->index >= ARRAY_SIZE(supported_modes))
+ return -EINVAL;
+
+- if (fse->code != MEDIA_BUS_FMT_SGRBG10_1X10)
++ if (fse->code != ov13858_get_format_code(to_ov13858(sd)))
+ return -EINVAL;
+
+ fse->min_width = supported_modes[fse->index].width;
+@@ -1520,7 +1535,7 @@
+ {
+ struct ov13858 *ov13858 = to_ov13858(sd);
+
+- ov13858_update_pad_format(ov13858->cur_mode,
++ ov13858_update_pad_format(ov13858, ov13858->cur_mode,
+ v4l2_subdev_state_get_format(sd_state, 0));
+
+ return 0;
diff --git a/patches/surface/0016-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-iris-firmware-name.patch b/patches/surface/0016-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-iris-firmware-name.patch
new file mode 100644
index 0000000..b182b0b
--- /dev/null
+++ b/patches/surface/0016-arm64-dts-qcom-purwa-Microsoft-Surface-Pro-12in-iris-firmware-name.patch
@@ -0,0 +1,32 @@
+arm64: dts: qcom: purwa: Microsoft Surface Pro 12in: point iris at the OEM video firmware
+
+The generic qcom/vpu/vpu30_p1_s7.mbn shipped by linux-firmware is signed with
+the Qualcomm SecTools test key chain ("SECTOOLS SECP384R1 CURVE TEST ROOT" /
+"General Use Test Key (for testing only)"), which the TrustZone on a retail
+Surface Pro 12in refuses:
+
+ qcom-iris aa00000.video-codec: error -22 initializing firmware qcom/vpu/vpu30_p1_s7.mbn
+ qcom-iris aa00000.video-codec: firmware download failed
+ qcom-iris aa00000.video-codec: core init failed
+
+The -22 comes straight out of qcom_scm_pas_init_image() in
+__qcom_mdt_pas_init(), i.e. the image metadata is rejected before anything is
+loaded.
+
+The Windows driver package for this machine carries the same firmware signed
+with the production chain ("QMC Attestation Root CA 6"), in two builds:
+qcvss8380.mbn and qcvss8380_pa.mbn. The _pa one is what loads here. It has an
+identical 7 MiB load span, so it fits the existing video_mem reservation
+unchanged. Point the iris node at it, the same way the board already does for
+the aDSP, cDSP and GPU firmware.
+
+--- a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts
++++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts
+@@ -1098,6 +1098,7 @@
+ };
+
+ &iris {
++ firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcvss8380_pa.mbn";
+ status = "okay";
+ };
+