diff --git a/Android.bp b/Android.bp
index 9515b25..a4191fa 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,2 +1,9 @@
soong_namespace {
}
+
+sh_binary {
+ name: "init.ferrari.modules.sh",
+ src: "init/init.ferrari.modules.sh",
+ vendor: true,
+ init_rc: ["init/init.ferrari.modules.rc"],
+}
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 2f0ce7a..06a529b 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -4,18 +4,78 @@
# SPDX-License-Identifier: Apache-2.0
#
-# Kernel
-TARGET_USES_KERNEL_6_6 := true
-
-# Include the common OEM chipset BoardConfig.
-include device/oneplus/sm8450-common/BoardConfigCommon.mk
-
DEVICE_PATH := device/realme/ferrari
+# WAIPIO hardware with the common 6.6 kernel and userspace build rules.
+COMMON_VENDOR_PATH := vendor/oneplus/sm8450-common
+TARGET_BOARD_PLATFORM := taro
+TARGET_BOOTLOADER_BOARD_NAME := taro
+TARGET_ARCH_VARIANT := armv8-a-branchprot
+TARGET_CPU_VARIANT_RUNTIME := kryo300
+TARGET_USES_INIT_BOOT := false
+BOOT_SECURITY_PATCH := 2025-05-01
+VENDOR_SECURITY_PATCH := $(BOOT_SECURITY_PATCH)
+BOARD_BOOTIMAGE_PARTITION_SIZE := 201326592
+BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 201326592
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 112362319872
+BOARD_SUPER_PARTITION_SIZE := 11274289152
+BOARD_BOOTCONFIG := \
+ androidboot.hardware=qcom \
+ androidboot.memcg=1 \
+ androidboot.serialconsole=0 \
+ androidboot.usbcontroller=a600000.dwc3
+
# Kernel
-TARGET_KERNEL_CONFIG += vendor/oplus/ferrari.config
+TARGET_KERNEL_VERSION := 6.6
+TARGET_KERNEL_CLANG_VERSION := r547379
+MERGE_ALL_KERNEL_CONFIGS_AT_ONCE := true
+TARGET_KERNEL_CONFIG := \
+ gki_defconfig \
+ vendor/waipio_perf.config \
+ vendor/oplus/waipio_perf.config \
+ vendor/oplus/ferrari.config
+TARGET_KERNEL_ADDITIONAL_FLAGS := \
+ CONFIG_MSM_BT_POWER=m \
+ CONFIG_BTFM_SLIM=m \
+ CONFIG_I2C_RTC6226_QCA=m
TARGET_MERGE_DTBS_WILDCARD := waipio*
TARGET_MERGE_DTBOS_WILDCARD := ferrari-21631-waipio-overlay
+TARGET_KERNEL_EXT_MODULES := \
+ qcom/opensource/mmrm-driver \
+ qcom/opensource/mm-drivers/msm_ext_display \
+ qcom/opensource/mm-drivers/hw_fence \
+ qcom/opensource/mm-drivers/sync_fence \
+ qcom/opensource/securemsm-kernel \
+ qcom/opensource/synx-kernel \
+ qcom/opensource/dsp-kernel \
+ qcom/opensource/audio-kernel \
+ qcom/opensource/camera-kernel \
+ qcom/opensource/datarmnet-ext/mem \
+ qcom/opensource/dataipa/drivers/platform/msm \
+ qcom/opensource/datarmnet/core \
+ qcom/opensource/datarmnet-ext/aps \
+ qcom/opensource/datarmnet-ext/offload \
+ qcom/opensource/datarmnet-ext/shs \
+ qcom/opensource/datarmnet-ext/perf \
+ qcom/opensource/datarmnet-ext/perf_tether \
+ qcom/opensource/datarmnet-ext/sch \
+ qcom/opensource/datarmnet-ext/wlan \
+ qcom/opensource/display-drivers/msm \
+ qcom/opensource/eva-kernel \
+ qcom/opensource/video-driver \
+ qcom/opensource/wlan/platform \
+ qcom/opensource/wlan/qcacld-3.0/.qca6490 \
+ qcom/opensource/bt-kernel
+BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := kernel/oneplus/sm8750/modules.vendor_blocklist.msm.waipio
+BOARD_VENDOR_KERNEL_MODULES_LOAD := $(strip $(shell cat $(DEVICE_PATH)/modules.load))
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(strip $(shell cat $(DEVICE_PATH)/modules.load.vendor_boot))
+BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD := $(strip $(shell cat $(DEVICE_PATH)/modules.load.recovery))
+BOOT_KERNEL_MODULES := $(BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD)
+SYSTEM_KERNEL_MODULES := $(strip $(shell sed 's/#.*$$//;/^$$/d' device/oneplus/sm8750-common/modules.load.system_dlkm))
+TARGET_AUTO_COLLECT_KERNEL_MODULE_DEPS := true
+
+# Include the common OEM chipset BoardConfig.
+include device/oneplus/sm8750-common/BoardConfigCommon.mk
# Biometrics (Face)
PRODUCT_COPY_FILES += \
diff --git a/configs/audio/audio_effects_config.xml b/configs/audio/audio_effects_config.xml
new file mode 100644
index 0000000..c5a9892
--- /dev/null
+++ b/configs/audio/audio_effects_config.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/configs/audio/audio_module_config_primary.xml b/configs/audio/audio_module_config_primary.xml
new file mode 100644
index 0000000..2375d9d
--- /dev/null
+++ b/configs/audio/audio_module_config_primary.xml
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/device.mk b/device.mk
index a423121..8ac8f45 100644
--- a/device.mk
+++ b/device.mk
@@ -9,6 +9,15 @@ PRODUCT_AAPT_CONFIG := normal
PRODUCT_AAPT_PREF_CONFIG := xxxhdpi
# Audio
+PRODUCT_PACKAGES += \
+ libaudiocorehal.qti \
+ libaudioeffecthal.qti
+
+PRODUCT_COPY_FILES += \
+ $(LOCAL_PATH)/configs/audio/audio_module_config_primary.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_module_config_primary.xml \
+ $(LOCAL_PATH)/configs/audio/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_effects_config.xml \
+ $(LOCAL_PATH)/configs/audio/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_taro/audio_effects_config.xml
+
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/audio/backend_conf.xml:$(TARGET_COPY_OUT_ODM)/etc/backend_conf.xml \
$(LOCAL_PATH)/audio/mixer_paths_waipio_mtp.xml:$(TARGET_COPY_OUT_ODM)/etc/mixer_paths.xml \
@@ -58,6 +67,9 @@ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/com.android.nfc_extras.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.nfc_extras.xml \
frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml
+# Kernel modules
+PRODUCT_PACKAGES += init.ferrari.modules.sh
+
# Overlays
DEVICE_PACKAGE_OVERLAYS += \
$(LOCAL_PATH)/overlay-lineage
@@ -73,8 +85,28 @@ PRODUCT_PACKAGES += \
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)
+# Ferrari retains its own hardware blobs and WAIPIO configuration.
+COMMON_VENDOR_PATH := vendor/oneplus/sm8450-common
+COMMON_AUDIO_PLATFORM := taro
+COMMON_POWER_PLATFORM := lahaina
+COMMON_SYSTEM_DLKM_BLOCKLIST := kernel/oneplus/sm8750/modules.systemdlkm_blocklist.msm.waipio
+BOARD_SHIPPING_API_LEVEL := 31
+PRODUCT_SHIPPING_API_LEVEL := 31
+COMMON_AUDIO_CONFIG_FILES := \
+ hardware/qcom-caf/sm8750/audio/primary-hal/configs/taro/microphone_characteristics.xml:$(TARGET_COPY_OUT_VENDOR)/etc/microphone_characteristics.xml \
+ hardware/qcom-caf/sm8750/audio/primary-hal/configs/taro/card-defs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/card-defs.xml
+COMMON_DEVICE_MANIFEST_FILES := \
+ $(LOCAL_PATH)/vintf/manifest_common.xml \
+ hardware/qcom-caf/sm8750/audio/primary-hal/hal/core/manifest_audiocoreservices_qti.xml \
+ hardware/qcom-caf/sm8750/audio/primary-hal/configs/sun/manifest_audio_qti_services.xml
+COMMON_GPS_CONFIG_FILES :=
+COMMON_PERF_CONFIG_FILES :=
+COMMON_NETWORK_MANIFEST_FILES :=
+COMMON_ODM_MANIFEST_FILES := $(LOCAL_PATH)/vintf/manifest_common_odm.xml
+DEVICE_FRAMEWORK_MANIFEST_FILE += $(LOCAL_PATH)/vintf/framework_manifest.xml
+
# Inherit from the common OEM chipset makefile.
-$(call inherit-product, device/oneplus/sm8450-common/common.mk)
+$(call inherit-product, device/oneplus/sm8750-common/common.mk)
# Inherit from the proprietary files makefile.
$(call inherit-product, vendor/realme/ferrari/ferrari-vendor.mk)
diff --git a/init/init.ferrari.modules.rc b/init/init.ferrari.modules.rc
new file mode 100644
index 0000000..8fa31cc
--- /dev/null
+++ b/init/init.ferrari.modules.rc
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: Apache-2.0
+# Copyright (C) 2026 The LineageOS Project
+
+service vendor.modprobe /vendor/bin/init.ferrari.modules.sh
+ override
+ class main
+ user root
+ group root system
+ disabled
+ stdio_to_kmsg
+ seclabel u:r:vendor_modprobe:s0
+ oneshot
diff --git a/init/init.ferrari.modules.sh b/init/init.ferrari.modules.sh
new file mode 100644
index 0000000..63930e3
--- /dev/null
+++ b/init/init.ferrari.modules.sh
@@ -0,0 +1,6 @@
+#!/vendor/bin/sh
+# SPDX-License-Identifier: Apache-2.0
+# Copyright (C) 2026 The LineageOS Project
+
+/vendor/bin/modprobe -b -s -p --all=/system_dlkm/lib/modules/modules.load || exit $?
+exec /vendor/bin/vendor_modprobe.sh
diff --git a/lineage.dependencies b/lineage.dependencies
index 70e8c0c..d1cb9da 100644
--- a/lineage.dependencies
+++ b/lineage.dependencies
@@ -1,18 +1,6 @@
[
{
- "repository": "android_device_oneplus_sm8450-common",
- "target_path": "device/oneplus/sm8450-common"
- },
- {
- "repository": "android_kernel_oneplus_sm8750",
- "target_path": "kernel/oneplus/sm8750"
- },
- {
- "repository": "android_kernel_oneplus_sm8750-devicetrees",
- "target_path": "kernel/oneplus/sm8750-devicetrees"
- },
- {
- "repository": "android_kernel_oneplus_sm8750-modules",
- "target_path": "kernel/oneplus/sm8750-modules"
+ "repository": "android_device_oneplus_sm8750-common",
+ "target_path": "device/oneplus/sm8750-common"
}
]
diff --git a/modules.load b/modules.load
new file mode 100644
index 0000000..cb056cc
--- /dev/null
+++ b/modules.load
@@ -0,0 +1,354 @@
+msm_sysstats.ko
+msm_show_resume_irq.ko
+mhi_dev_uci.ko
+mhi.ko
+pinctrl-spmi-gpio.ko
+pinctrl-spmi-mpp.ko
+pwm-qti-lpg.ko
+pci-msm-drv.ko
+camcc-waipio.ko
+videocc-waipio.ko
+gpucc-waipio.ko
+debugcc-waipio.ko
+bam_dma.ko
+mdt_loader.ko
+qcom_ramdump.ko
+pdr_interface.ko
+qmi_helpers.ko
+heap_mem_ext_v01.ko
+msm_memshare.ko
+boot_stats.ko
+smp2p.ko
+adsp_sleepmon.ko
+sysmon_subsystem_stats.ko
+qsee_ipc_irq_bridge.ko
+core_hang_detect.ko
+rq_stats.ko
+dcc_v2.ko
+smcinvoke_dlkm.ko
+llcc_perfmon.ko
+smp2p_sleepstate.ko
+sensors_ssc.ko
+glink_pkt.ko
+glink_probe.ko
+qti_battery_debug.ko
+altmode-glink.ko
+pmic-pon-log.ko
+msm_performance.ko
+qpnp-pbs.ko
+cdsprm.ko
+fsa4480-i2c.ko
+msm_show_epoch.ko
+eud.ko
+qcom_soc_wdt.ko
+sys_pm_vx.ko
+msm_ext_display.ko
+memlat.ko
+qcom_logbuf_vendor_hooks.ko
+panel_event_notifier.ko
+hung_task_enh.ko
+oplus_sensor_deviceinfo.ko
+oplus_sensor_interact.ko
+oplus_sensor_feedback.ko
+qcom_pm8008-regulator.ko
+hvc_gunyah.ko
+rdbg.ko
+hdcp_qseecom_dlkm.ko
+qseecom_dlkm.ko
+qcom-i2c-pmic.ko
+sg.ko
+spi-msm-geni.ko
+spmi-pmic-arb-debug.ko
+cnss2.ko
+cnss_utils.ko
+wlan_firmware_service.ko
+cnss_plat_ipc_qmi_svc.ko
+cnss_nl.ko
+cnss_prealloc.ko
+msm_sharedmem.ko
+phy-qcom-emu.ko
+phy-msm-ssusb-qmp.ko
+phy-msm-snps-hs.ko
+phy-msm-snps-eusb2.ko
+dwc3-msm.ko
+ehset.ko
+lvstest.ko
+usb_f_qdss.ko
+usb_f_ccid.ko
+usb_f_cdev.ko
+usb_f_gsi.ko
+repeater.ko
+repeater-i2c-eusb2.ko
+redriver.ko
+nb7vpq904m.ko
+oplus_bsp_tp_custom.ko
+oplus_bsp_tp_common.ko
+oplus_bsp_tp_notify.ko
+oplus_bsp_tp_tcm_oncell.ko
+oplus_bsp_tp_syna_common.ko
+pm8941-pwrkey.ko
+qcom-hv-haptics.ko
+oplus_fp_common.ko
+gf_qcom.ko
+i2c-msm-geni.ko
+i3c-master-msm-geni.ko
+synx-driver.ko
+radio-i2c-rtc6226-qca.ko
+qcom-pon.ko
+oplus_chg.ko
+oplus_chg_v2.ko
+oplus_chg_symbol.ko
+qcom-spmi-temp-alarm.ko
+horae_shell_temp.ko
+qti_qmi_sensor_v2.ko
+qti_qmi_cdev.ko
+bcl_soc.ko
+msm_lmh_dcvs.ko
+cpu_voltage_cooling.ko
+policy_engine.ko
+sdpm_clk.ko
+ddr_cdev.ko
+qti_userspace_cdev.ko
+qti_cpufreq_cdev.ko
+qti_devfreq_cdev.ko
+btpower.ko
+bt_fm_slim.ko
+qcom_edac.ko
+qcom-cpufreq-hw-debug.ko
+qcom_lpm.ko
+sdhci-msm.ko
+leds-qti-flash.ko
+leds-qti-tri-led.ko
+leds-qpnp-vibrator-ldo.ko
+usb_bam.ko
+sps_drv.ko
+qcom_pil_info.ko
+rproc_qcom_common.ko
+qcom_q6v5.ko
+qcom_q6v5_pas.ko
+qcom_spss.ko
+qcom_sysmon.ko
+qcom_glink.ko
+qcom_glink_smem.ko
+qcom_glink_spss.ko
+qcom_smd.ko
+gh_irq_lend.ko
+gh_mem_notifier.ko
+qcom-spmi-adc5.ko
+qcom-vadc-common.ko
+nvmem_qfprom.ko
+slimbus.ko
+slim-qcom-ngd-ctrl.ko
+hwmon.ko
+qti_amoled_ecm.ko
+coresight.ko
+coresight-tmc.ko
+coresight-funnel.ko
+coresight-replicator.ko
+coresight-stm.ko
+coresight-cti.ko
+coresight-tpda.ko
+coresight-tpdm.ko
+coresight-csr.ko
+coresight-dummy.ko
+coresight-remote-etm.ko
+coresight-tgu.ko
+stm_core.ko
+stm_p_basic.ko
+stm_p_ost.ko
+stm_console.ko
+stm_ftrace.ko
+snd-usb-audio-qmi.ko
+qrtr-smd.ko
+qrtr-mhi.ko
+qrtr-gunyah.ko
+qca_cld3_qca6490.ko
+q6_notifier_dlkm.ko
+spf_core_dlkm.ko
+audpkt_ion_dlkm.ko
+gpr_dlkm.ko
+audio_pkt_dlkm.ko
+q6_dlkm.ko
+adsp_loader_dlkm.ko
+audio_prm_dlkm.ko
+q6_pdr_dlkm.ko
+pinctrl_lpi_dlkm.ko
+swr_dlkm.ko
+swr_ctrl_dlkm.ko
+snd_event_dlkm.ko
+wcd_core_dlkm.ko
+mbhc_dlkm.ko
+swr_dmic_dlkm.ko
+wcd9xxx_dlkm.ko
+swr_haptics_dlkm.ko
+stub_dlkm.ko
+machine_dlkm.ko
+lpass_cdc_wsa2_macro_dlkm.ko
+lpass_cdc_wsa_macro_dlkm.ko
+lpass_cdc_va_macro_dlkm.ko
+lpass_cdc_rx_macro_dlkm.ko
+lpass_cdc_tx_macro_dlkm.ko
+lpass_cdc_dlkm.ko
+wsa883x_dlkm.ko
+wcd938x_dlkm.ko
+wcd938x_slave_dlkm.ko
+hdmi_dlkm.ko
+oplus_audio_tfa98xx_v6.ko
+oplus_audio_extend.ko
+camera.ko
+gsim.ko
+ipam.ko
+ipanetm.ko
+rmnet_mem.ko
+rmnet_core.ko
+rmnet_ctl.ko
+rmnet_offload.ko
+rmnet_perf_tether.ko
+rmnet_perf.ko
+rmnet_shs.ko
+rmnet_wlan.ko
+rmnet_aps.ko
+rmnet_sch.ko
+msm_drm.ko
+msm-eva.ko
+msm-mmrm.ko
+msm_video.ko
+gh_arm_drv.ko
+qti-regmap-debugfs.ko
+clk-dummy.ko
+clk-qcom.ko
+clk-rpmh.ko
+dispcc-waipio.ko
+gcc-waipio.ko
+gdsc-regulator.ko
+qcom-cpufreq-hw.ko
+qcom-rng.ko
+governor_gpubw_mon.ko
+governor_msm_adreno_tz.ko
+qcom_dma_heaps.ko
+msm_gpi.ko
+qcom-scm.ko
+lontium-lt9611uxc.ko
+drm_display_helper.ko
+drm_dp_aux_bus.ko
+qcom_hwspinlock.ko
+coresight-tmc-sec.ko
+atmel_mxt_ts.ko
+icc-bcm-voter.ko
+icc-debug.ko
+icc-rpmh.ko
+qnoc-qos.ko
+qnoc-waipio.ko
+arm_smmu.ko
+iommu-logger.ko
+msm_dma_iommu_mapping.ko
+qcom_iommu_debug.ko
+qcom_iommu_util.ko
+qcom-pdc.ko
+msm_qmp.ko
+qcom-ipcc.ko
+qcom-spmi-pmic.ko
+nxp-nci.ko
+oplus_rf_cable_monitor.ko
+cqhci.ko
+nvmem_qcom-spmi-sdam.ko
+qcom_llcc_pmu.ko
+phy-qcom-ufs-qmp-v4-cape.ko
+phy-qcom-ufs-qmp-v4-waipio.ko
+phy-qcom-ufs.ko
+pinctrl-msm.ko
+pinctrl-waipio.ko
+qcom-dload-mode.ko
+qcom-reboot-reason.ko
+reboot-mode.ko
+debug-regulator.ko
+proxy-consumer.ko
+qcom-amoled-regulator.ko
+qti-fixed-regulator.ko
+rpmh-regulator.ko
+stub-regulator.ko
+rtc-pm8xxx.ko
+bootloader_log.ko
+boot_mode.ko
+buildvariant.ko
+cdt_integrity.ko
+oplus_charger_present.ko
+oplus_ftm_mode.ko
+oplusboot.ko
+oplus_bsp_boot_projectinfo.ko
+device_info.ko
+kernel_fb.ko
+oplus_bsp_fpga_notify.ko
+oplus_mm_kevent.ko
+oplus_mm_kevent_fb.ko
+ufs-oplus-dbg.ko
+oplus_trackpoint_report.ko
+charger-ulog-glink.ko
+cmd-db.ko
+cpucp_log.ko
+bwmon.ko
+dcvs_fp.ko
+qcom-dcvs.ko
+qcom-pmu-lib.ko
+debug_symbol.ko
+llcc-qcom.ko
+mem-hooks.ko
+mem-offline.ko
+mem_buf.ko
+mem_buf_dev.ko
+memory_dump_v2.ko
+minidump.ko
+qcom_aoss.ko
+qcom_cpu_vendor_hooks.ko
+qcom_cpucp.ko
+qcom_cpuss_sleep_stats.ko
+qcom_ice.ko
+qcom_pd_mapper.ko
+qcom_pdr_msg.ko
+qcom_rpmh.ko
+qcom_stats.ko
+qcom_wdt_core.ko
+qti_pmic_glink.ko
+secure_buffer.ko
+smem.ko
+socinfo.ko
+tmecom-intf.ko
+spmi-pmic-arb.ko
+oplus_ipa_thermal.ko
+thermal_pa_adc.ko
+bcl_pmic5.ko
+cpu_hotplug.ko
+qcom-spmi-adc-tm5.ko
+qcom_tsens.ko
+thermal_pause.ko
+msm_geni_serial.ko
+ufs-qcom.ko
+ufshcd-crypto-qti.ko
+f_fs_ipc_log.ko
+xhci-sideband.ko
+phy-generic.ko
+ucsi_qti_glink.ko
+gh_ctrl.ko
+gh_dbl.ko
+gh_msgq.ko
+gh_rm_drv.ko
+gh_virt_wdt.ko
+gunyah_loader.ko
+sched-walt.ko
+qcom_ipc_logging.ko
+mac80211.ko
+qrtr.ko
+cfg80211.ko
+snd-soc-hdmi-codec.ko
+oplus_audio_daemon.ko
+oplus_audio_pa_manager.ko
+oplus_audio_netlink.ko
+ipclite.ko
+tz_log_dlkm.ko
+qce50_dlkm.ko
+qcedev-mod_dlkm.ko
+qrng_dlkm.ko
+qcrypto-msm_dlkm.ko
+msm_hw_fence.ko
+sync_fence.ko
+frpc-adsprpc.ko
diff --git a/modules.load.recovery b/modules.load.recovery
new file mode 100644
index 0000000..a4867d1
--- /dev/null
+++ b/modules.load.recovery
@@ -0,0 +1,97 @@
+gh_virt_wdt.ko
+qcom_wdt_core.ko
+qcom_cpu_vendor_hooks.ko
+clk-rpmh.ko
+gcc-waipio.ko
+icc-rpmh.ko
+qcom-ipcc.ko
+qcom_ipc_logging.ko
+qcom-pdc.ko
+qcom_tsens.ko
+rpmh-regulator.ko
+bwmon.ko
+qcom-cpufreq-hw.ko
+sched-walt.ko
+thermal_pause.ko
+cpu_hotplug.ko
+cfg80211.ko
+clk-dummy.ko
+clk-qcom.ko
+cmd-db.ko
+cqhci.ko
+dcvs_fp.ko
+debug-regulator.ko
+dispcc-waipio.ko
+gdsc-regulator.ko
+gh_arm_drv.ko
+gh_ctrl.ko
+gh_dbl.ko
+gh_msgq.ko
+gh_rm_drv.ko
+icc-bcm-voter.ko
+icc-debug.ko
+iommu-logger.ko
+llcc-qcom.ko
+mac80211.ko
+mem_buf_dev.ko
+mem_buf.ko
+mem-hooks.ko
+memory_dump_v2.ko
+debug_symbol.ko
+minidump.ko
+msm_dma_iommu_mapping.ko
+pinctrl-waipio.ko
+qnoc-waipio.ko
+qti-fixed-regulator.ko
+reboot-mode.ko
+msm_geni_serial.ko
+nvmem_qcom-spmi-sdam.ko
+phy-generic.ko
+phy-qcom-ufs.ko
+phy-qcom-ufs-qmp-v4-cape.ko
+phy-qcom-ufs-qmp-v4-waipio.ko
+pinctrl-msm.ko
+proxy-consumer.ko
+qcom-dcvs.ko
+qcom-dload-mode.ko
+qcom_dma_heaps.ko
+qcom_hwspinlock.ko
+qcom_iommu_util.ko
+qcom_llcc_pmu.ko
+qcom-pmu-lib.ko
+qcom-spmi-pmic.ko
+spmi-pmic-arb.ko
+qcom-reboot-reason.ko
+qcom_rpmh.ko
+qcom-scm.ko
+qnoc-qos.ko
+qrtr.ko
+qti-regmap-debugfs.ko
+rtc-pm8xxx.ko
+secure_buffer.ko
+smem.ko
+socinfo.ko
+stub-regulator.ko
+tmecom-intf.ko
+ufshcd-crypto-qti.ko
+ufs-qcom.ko
+arm_smmu.ko
+mem-offline.ko
+qcom_aoss.ko
+msm_qmp.ko
+qcom_cpucp.ko
+bcl_pmic5.ko
+qcom-rng.ko
+msm_ext_display.ko
+synx-driver.ko
+smcinvoke_dlkm.ko
+hdcp_qseecom_dlkm.ko
+msm_drm.ko
+oplus_bsp_tp_notify.ko
+oplus_bsp_tp_custom.ko
+oplus_bsp_tp_common.ko
+oplus_bsp_tp_syna_common.ko
+oplus_bsp_tp_tcm_oncell.ko
+oplus_chg_symbol.ko
+oplus_chg.ko
+oplus_chg_v2.ko
diff --git a/modules.load.vendor_boot b/modules.load.vendor_boot
new file mode 100644
index 0000000..017217e
--- /dev/null
+++ b/modules.load.vendor_boot
@@ -0,0 +1,84 @@
+gh_virt_wdt.ko
+qcom_wdt_core.ko
+qcom_cpu_vendor_hooks.ko
+clk-rpmh.ko
+gcc-waipio.ko
+icc-rpmh.ko
+qcom-ipcc.ko
+qcom_ipc_logging.ko
+qcom-pdc.ko
+qcom_tsens.ko
+rpmh-regulator.ko
+bwmon.ko
+qcom-cpufreq-hw.ko
+sched-walt.ko
+thermal_pause.ko
+cpu_hotplug.ko
+cfg80211.ko
+clk-dummy.ko
+clk-qcom.ko
+cmd-db.ko
+cqhci.ko
+dcvs_fp.ko
+debug-regulator.ko
+dispcc-waipio.ko
+gdsc-regulator.ko
+gh_arm_drv.ko
+gh_ctrl.ko
+gh_dbl.ko
+gh_msgq.ko
+gh_rm_drv.ko
+icc-bcm-voter.ko
+icc-debug.ko
+iommu-logger.ko
+llcc-qcom.ko
+mac80211.ko
+mem_buf_dev.ko
+mem_buf.ko
+mem-hooks.ko
+memory_dump_v2.ko
+debug_symbol.ko
+minidump.ko
+msm_dma_iommu_mapping.ko
+pinctrl-waipio.ko
+qnoc-waipio.ko
+qti-fixed-regulator.ko
+reboot-mode.ko
+msm_geni_serial.ko
+nvmem_qcom-spmi-sdam.ko
+phy-generic.ko
+phy-qcom-ufs.ko
+phy-qcom-ufs-qmp-v4-cape.ko
+phy-qcom-ufs-qmp-v4-waipio.ko
+pinctrl-msm.ko
+proxy-consumer.ko
+qcom-dcvs.ko
+qcom-dload-mode.ko
+qcom_dma_heaps.ko
+qcom_hwspinlock.ko
+qcom_iommu_util.ko
+qcom_llcc_pmu.ko
+qcom-pmu-lib.ko
+qcom-spmi-pmic.ko
+spmi-pmic-arb.ko
+qcom-reboot-reason.ko
+qcom_rpmh.ko
+qcom-scm.ko
+qnoc-qos.ko
+qrtr.ko
+qti-regmap-debugfs.ko
+rtc-pm8xxx.ko
+secure_buffer.ko
+smem.ko
+socinfo.ko
+stub-regulator.ko
+tmecom-intf.ko
+ufshcd-crypto-qti.ko
+ufs-qcom.ko
+arm_smmu.ko
+mem-offline.ko
+qcom_aoss.ko
+msm_qmp.ko
+qcom_cpucp.ko
+bcl_pmic5.ko
+qcom-rng.ko
diff --git a/vintf/framework_manifest.xml b/vintf/framework_manifest.xml
new file mode 100644
index 0000000..87b00a2
--- /dev/null
+++ b/vintf/framework_manifest.xml
@@ -0,0 +1,11 @@
+
+
+ vendor.qti.hardware.qccsyshal
+ hwbinder
+ 1.2
+
+ IQccsyshal
+ qccsyshal
+
+
+
diff --git a/vintf/manifest_common.xml b/vintf/manifest_common.xml
new file mode 100644
index 0000000..bc758ac
--- /dev/null
+++ b/vintf/manifest_common.xml
@@ -0,0 +1,473 @@
+
+
+ android.hardware.bluetooth
+ hwbinder
+ 1.0
+
+ IBluetoothHci
+ default
+
+
+
+ android.hardware.camera.provider
+ hwbinder
+ 2.7
+
+ ICameraProvider
+ legacy/1
+
+
+
+ android.hardware.drm
+ hwbinder
+ @1.3::ICryptoFactory/wfdhdcp
+ @1.3::IDrmFactory/wfdhdcp
+
+
+ android.hardware.gatekeeper
+ hwbinder
+ 1.0
+
+ IGatekeeper
+ default
+
+
+
+ android.hardware.keymaster
+ hwbinder
+ 4.1
+
+ IKeymasterDevice
+ default
+
+
+
+ android.hardware.radio
+ hwbinder
+ @1.6::IRadio/slot1
+ @1.6::IRadio/slot2
+ @1.2::ISap/slot1
+ @1.2::ISap/slot2
+
+
+ android.hardware.radio.config
+ hwbinder
+ 1.3
+
+ IRadioConfig
+ default
+
+
+
+ android.hardware.tetheroffload.config
+ hwbinder
+ 1.0
+
+ IOffloadConfig
+ default
+
+
+
+ android.hardware.tetheroffload.control
+ hwbinder
+ 1.1
+
+ IOffloadControl
+ default
+
+
+
+ com.dsi.ant
+ hwbinder
+ 1.0
+
+ IAnt
+ default
+
+
+
+ com.qualcomm.qti.dpm.api
+ hwbinder
+ 1.0
+
+ IdpmQmi
+ dpmQmiService
+
+
+
+ com.qualcomm.qti.imscmservice
+ hwbinder
+ 2.2
+
+ IImsCmService
+ qti.ims.connectionmanagerservice
+
+
+
+ com.qualcomm.qti.uceservice
+ hwbinder
+ 2.3
+
+ IUceService
+ com.qualcomm.qti.uceservice
+
+
+
+ vendor.qti.data.factory
+ hwbinder
+ 2.5
+
+ IFactory
+ default
+
+
+
+ vendor.qti.hardware.alarm
+ hwbinder
+ 1.0
+
+ IAlarm
+ default
+
+
+
+ vendor.qti.hardware.bluetooth_audio
+ hwbinder
+ 2.1
+
+ IBluetoothAudioProvidersFactory
+ default
+
+
+
+ vendor.qti.hardware.bluetooth_sar
+ hwbinder
+ 1.1
+
+ IBluetoothSar
+ default
+
+
+
+ vendor.qti.hardware.btconfigstore
+ hwbinder
+ 2.0
+
+ IBTConfigStore
+ default
+
+
+
+ vendor.qti.hardware.cacert
+ hwbinder
+ 1.0
+
+ IService
+ default
+
+
+
+ vendor.qti.hardware.camera.aon
+ hwbinder
+ 1.0
+
+ IAONService
+ aoncameraservice
+
+
+
+ vendor.qti.hardware.camera.postproc
+ hwbinder
+ 1.0
+
+ IPostProcService
+ camerapostprocservice
+
+
+
+ vendor.qti.hardware.capabilityconfigstore
+ hwbinder
+ 1.0
+
+ ICapabilityConfigStore
+ default
+
+
+
+ vendor.qti.hardware.data.connection
+ hwbinder
+ 1.1
+
+ IDataConnection
+ slot1
+ slot2
+
+
+
+ vendor.qti.hardware.data.connectionfactory
+
+ IFactory
+ slot0
+ slot1
+
+
+
+ vendor.qti.hardware.data.iwlan
+ hwbinder
+ 1.1
+
+ IIWlan
+ slot1
+ slot2
+
+
+
+ vendor.qti.hardware.data.latency
+ hwbinder
+ 1.0
+
+ ILinkLatency
+ default
+
+
+
+ vendor.qti.hardware.dpmservice
+ hwbinder
+ 1.1
+
+ IDpmService
+ DpmService
+
+
+
+ vendor.qti.hardware.dsp
+ hwbinder
+ 1.0
+
+ IDspService
+ dspservice
+
+
+
+ vendor.qti.hardware.mwqemadapter
+ hwbinder
+ 1.0
+
+ IMwqemAdapter
+ MwqemAdapter
+
+
+
+ vendor.qti.hardware.qseecom
+ hwbinder
+ 1.0
+
+ IQSEECom
+ default
+
+
+
+ vendor.qti.hardware.qteeconnector
+ hwbinder
+ 1.0
+
+ IAppConnector
+ default
+
+
+ IGPAppConnector
+ default
+
+
+
+ vendor.qti.hardware.radio.am
+ hwbinder
+ 1.0
+
+ IQcRilAudio
+ slot1
+ slot2
+
+
+
+ vendor.qti.hardware.radio.ims
+ 7
+
+ IImsRadio
+ imsradio0
+ imsradio1
+
+
+
+ vendor.qti.hardware.radio.internal.deviceinfo
+ hwbinder
+ 1.0
+
+ IDeviceInfo
+ deviceinfo
+
+
+
+ vendor.qti.hardware.radio.lpa
+ hwbinder
+ 1.1
+
+ IUimLpa
+ UimLpa0
+ UimLpa1
+
+
+
+ vendor.qti.hardware.radio.qcrilhook
+ hwbinder
+ 1.0
+
+ IQtiOemHook
+ oemhook0
+ oemhook1
+
+
+
+ vendor.qti.hardware.radio.qtiradio
+ 8
+
+ IQtiRadioStable
+ slot1
+ slot2
+
+
+
+ vendor.qti.hardware.radio.qtiradio
+ hwbinder
+ 1.0
+ 2.6
+
+ IQtiRadio
+ slot1
+ slot2
+
+
+
+ vendor.qti.hardware.radio.uim
+ hwbinder
+ 1.2
+
+ IUim
+ Uim0
+ Uim1
+
+
+
+ vendor.qti.hardware.radio.uim_remote_client
+ hwbinder
+ 1.0
+
+ IUimRemoteServiceClient
+ uimRemoteClient0
+ uimRemoteClient1
+
+
+
+ vendor.qti.hardware.radio.uim_remote_server
+ hwbinder
+ 1.0
+
+ IUimRemoteServiceServer
+ uimRemoteServer0
+ uimRemoteServer1
+
+
+
+ vendor.qti.hardware.sensorscalibrate
+ hwbinder
+ 1.0
+
+ ISensorsCalibrate
+ default
+
+
+
+ vendor.qti.hardware.soter
+ hwbinder
+ 1.0
+
+ ISoter
+ default
+
+
+
+ vendor.qti.hardware.trustedui
+ hwbinder
+ @1.2::ITrustedUI/default
+ @1.2::ITrustedUI/qtee-vm
+ @1.1::ITrustedInput/default
+ @1.1::ITrustedInput/qtee-vm
+
+
+ vendor.qti.hardware.tui_comm
+ hwbinder
+ 1.0
+
+ ITuiComm
+ default
+
+
+
+ vendor.qti.hardware.wifidisplaysession
+ hwbinder
+ 1.0
+
+ IWifiDisplaySession
+ wifidisplaysession
+
+
+ IWifiDisplaySessionAudioTrack
+ wifidisplaysessionaudiotrack
+
+
+ IWifiDisplaySessionImageTrack
+ wifidisplaysessionimagetrack
+
+
+ IWifiDisplaySessionVideoTrack
+ wifidisplaysessionvideotrack
+
+
+
+ vendor.qti.ims.callinfo
+ hwbinder
+ 1.0
+
+ IService
+ default
+
+
+
+ vendor.qti.ims.factory
+ hwbinder
+ 1.1
+ 2.2
+
+ IImsFactory
+ default
+
+
+
+ vendor.qti.imsrtpservice
+ hwbinder
+ 3.0
+
+ IRTPService
+ imsrtpservice
+
+
+
+ vendor.qti.qspmhal
+ hwbinder
+ 1.0
+
+ IQspmhal
+ default
+
+
+
diff --git a/vintf/manifest_common_odm.xml b/vintf/manifest_common_odm.xml
new file mode 100644
index 0000000..0f65907
--- /dev/null
+++ b/vintf/manifest_common_odm.xml
@@ -0,0 +1,27 @@
+
+
+ vendor.oplus.hardware.appradioaidl
+ 1
+
+ IAppRadioStable
+ OplusAppRadio0
+ OplusAppRadio1
+
+
+
+ vendor.oplus.hardware.ims
+ 1
+ IImsStable/OplusImsRadio0
+ IImsStable/OplusImsRadio1
+
+
+ vendor.oplus.hardware.radio
+ hwbinder
+ 1.0
+
+ IOplusRadio
+ oplus_slot1
+ oplus_slot2
+
+
+