commit 6d87e2bac5b5a36550c3d5e02730d263b38ebb3d Author: hhjmk Date: Fri Aug 22 23:50:58 2025 +0800 add file diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..b9d39e9 --- /dev/null +++ b/Android.bp @@ -0,0 +1,9 @@ +// +// Copyright (C) 2025 The Android Open Source Project +// Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +// +// SPDX-License-Identifier: Apache-2.0 +// + +soong_namespace { +} diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..ab4bf5b --- /dev/null +++ b/Android.mk @@ -0,0 +1,12 @@ +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# + +LOCAL_PATH := $(call my-dir) + +ifeq ($(TARGET_DEVICE),ossi) +include $(call all-subdir-makefiles,$(LOCAL_PATH)) +endif diff --git a/AndroidProducts.mk b/AndroidProducts.mk new file mode 100644 index 0000000..abc5a7a --- /dev/null +++ b/AndroidProducts.mk @@ -0,0 +1,14 @@ +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# + +PRODUCT_MAKEFILES := \ + $(LOCAL_DIR)/omni_ossi.mk + +COMMON_LUNCH_CHOICES := \ + omni_ossi-user \ + omni_ossi-userdebug \ + omni_ossi-eng diff --git a/BoardConfig.mk b/BoardConfig.mk new file mode 100644 index 0000000..5488fff --- /dev/null +++ b/BoardConfig.mk @@ -0,0 +1,113 @@ +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# + +DEVICE_PATH := device/oplus/ossi + +# For building with minimal manifest +ALLOW_MISSING_DEPENDENCIES := true + +# A/B +AB_OTA_UPDATER := true +AB_OTA_PARTITIONS += \ + vendor \ + system \ + odm \ + vbmeta_system \ + product \ + vbmeta_vendor +BOARD_USES_RECOVERY_AS_BOOT := true + +# Architecture +TARGET_ARCH := arm64 +TARGET_ARCH_VARIANT := armv8-a +TARGET_CPU_ABI := arm64-v8a +TARGET_CPU_ABI2 := +TARGET_CPU_VARIANT := generic +TARGET_CPU_VARIANT_RUNTIME := cortex-a55 + +TARGET_2ND_ARCH := arm +TARGET_2ND_ARCH_VARIANT := armv7-a-neon +TARGET_2ND_CPU_ABI := armeabi-v7a +TARGET_2ND_CPU_ABI2 := armeabi +TARGET_2ND_CPU_VARIANT := generic +TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a55 + +# APEX +DEXPREOPT_GENERATE_APEX_IMAGE := true + +# Bootloader +TARGET_BOOTLOADER_BOARD_NAME := mgvi_64_64only_armv82 +TARGET_NO_BOOTLOADER := true + +# Display +TARGET_SCREEN_DENSITY := 480 + +# Kernel +BOARD_BOOTIMG_HEADER_VERSION := 4 +BOARD_KERNEL_BASE := 0x7fff8000 +BOARD_KERNEL_CMDLINE := bootopt=64S3,32N2,64N2 buildvariant=user +BOARD_KERNEL_PAGESIZE := 4096 +BOARD_RAMDISK_OFFSET := 0x26f08000 +BOARD_KERNEL_TAGS_OFFSET := 0x07c88000 +BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION) +BOARD_MKBOOTIMG_ARGS += --ramdisk_offset $(BOARD_RAMDISK_OFFSET) +BOARD_MKBOOTIMG_ARGS += --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) +BOARD_KERNEL_IMAGE_NAME := Image +BOARD_INCLUDE_DTB_IN_BOOTIMG := true +TARGET_KERNEL_CONFIG := ossi_defconfig +TARGET_KERNEL_SOURCE := kernel/oplus/ossi + +# Kernel - prebuilt +TARGET_FORCE_PREBUILT_KERNEL := true +ifeq ($(TARGET_FORCE_PREBUILT_KERNEL),true) +TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuilt/kernel +TARGET_PREBUILT_DTB := $(DEVICE_PATH)/prebuilt/dtb.img +BOARD_MKBOOTIMG_ARGS += --dtb $(TARGET_PREBUILT_DTB) +BOARD_INCLUDE_DTB_IN_BOOTIMG := +endif + +# Partitions +BOARD_FLASH_BLOCK_SIZE := 262144 # (BOARD_KERNEL_PAGESIZE * 64) +BOARD_BOOTIMAGE_PARTITION_SIZE := 100663296 +BOARD_RECOVERYIMAGE_PARTITION_SIZE := 100663296 +BOARD_HAS_LARGE_FILESYSTEM := true +BOARD_SYSTEMIMAGE_PARTITION_TYPE := ext4 +BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := ext4 +BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4 +TARGET_COPY_OUT_VENDOR := vendor +BOARD_SUPER_PARTITION_SIZE := 9126805504 # TODO: Fix hardcoded value +BOARD_SUPER_PARTITION_GROUPS := oplus_dynamic_partitions +BOARD_OPLUS_DYNAMIC_PARTITIONS_PARTITION_LIST := system system vendor vendor product product odm odm my_product my_product my_engineering my_engineering my_company my_company my_carrier my_carrier my_region my_region my_heytap my_heytap my_stock my_stock my_preload my_preload my_bigball my_bigball my_manifest my_manifest +BOARD_OPLUS_DYNAMIC_PARTITIONS_SIZE := 9122611200 # TODO: Fix hardcoded value + +# Platform +TARGET_BOARD_PLATFORM := common + +# Recovery +TARGET_RECOVERY_PIXEL_FORMAT := BGRA_8888 +TARGET_USERIMAGES_USE_EXT4 := true +TARGET_USERIMAGES_USE_F2FS := true + +# Security patch level +VENDOR_SECURITY_PATCH := 2021-08-01 + +# Verified Boot +BOARD_AVB_ENABLE := true +BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3 + +# Hack: prevent anti rollback +PLATFORM_SECURITY_PATCH := 2099-12-31 +VENDOR_SECURITY_PATCH := 2099-12-31 +PLATFORM_VERSION := 16.1.0 + +# TWRP Configuration +TW_THEME := portrait_hdpi +TW_EXTRA_LANGUAGES := true +TW_SCREEN_BLANK_ON_BOOT := true +TW_INPUT_BLACKLIST := "hbtp_vm" +TW_USE_TOOLBOX := true +TW_INCLUDE_REPACKTOOLS := true diff --git a/README.md b/README.md new file mode 100644 index 0000000..5941619 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Android device tree for oplus ossi (ossi) + +``` +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# +``` diff --git a/device.mk b/device.mk new file mode 100644 index 0000000..55f7eb8 --- /dev/null +++ b/device.mk @@ -0,0 +1,35 @@ +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# + +LOCAL_PATH := device/oplus/ossi +# A/B +AB_OTA_POSTINSTALL_CONFIG += \ + RUN_POSTINSTALL_system=true \ + POSTINSTALL_PATH_system=system/bin/otapreopt_script \ + FILESYSTEM_TYPE_system=ext4 \ + POSTINSTALL_OPTIONAL_system=true + +# Boot control HAL +PRODUCT_PACKAGES += \ + android.hardware.boot@1.0-impl \ + android.hardware.boot@1.0-service + +PRODUCT_PACKAGES += \ + bootctrl.common + +PRODUCT_STATIC_BOOT_CONTROL_HAL := \ + bootctrl.common \ + libgptutils \ + libz \ + libcutils + +PRODUCT_PACKAGES += \ + otapreopt_script \ + cppreopts.sh \ + update_engine \ + update_verifier \ + update_engine_sideload diff --git a/extract-files.sh b/extract-files.sh new file mode 100644 index 0000000..c4eb4bc --- /dev/null +++ b/extract-files.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# SPDX-License-Identifier: Apache-2.0 +# + +set -e + +DEVICE=ossi +VENDOR=oplus + +# Load extract_utils and do some sanity checks +MY_DIR="${BASH_SOURCE%/*}" +if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi + +ANDROID_ROOT="${MY_DIR}/../../.." + +HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh" +if [ ! -f "${HELPER}" ]; then + echo "Unable to find helper script at ${HELPER}" + exit 1 +fi +source "${HELPER}" + +# Default to sanitizing the vendor folder before extraction +CLEAN_VENDOR=true + +KANG= +SECTION= + +while [ "${#}" -gt 0 ]; do + case "${1}" in + -n | --no-cleanup ) + CLEAN_VENDOR=false + ;; + -k | --kang ) + KANG="--kang" + ;; + -s | --section ) + SECTION="${2}"; shift + CLEAN_VENDOR=false + ;; + * ) + SRC="${1}" + ;; + esac + shift +done + +if [ -z "${SRC}" ]; then + SRC="adb" +fi + +# Initialize the helper +setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}" + +extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}" + +"${MY_DIR}/setup-makefiles.sh" diff --git a/omni_ossi.mk b/omni_ossi.mk new file mode 100644 index 0000000..db1222f --- /dev/null +++ b/omni_ossi.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# + +# Inherit from those products. Most specific first. +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) + +# Inherit some common Omni stuff. +$(call inherit-product, vendor/omni/config/common.mk) + +# Inherit from ossi device +$(call inherit-product, device/oplus/ossi/device.mk) + +PRODUCT_DEVICE := ossi +PRODUCT_NAME := omni_ossi +PRODUCT_BRAND := oplus +PRODUCT_MODEL := ossi +PRODUCT_MANUFACTURER := oplus + +PRODUCT_GMS_CLIENTID_BASE := android-oplus + +PRODUCT_BUILD_PROP_OVERRIDES += \ + PRIVATE_BUILD_DESC="hal_mgvi_64_64only_armv82-user 15 AP3A.240617.008 1753972703812 release-keys" + +BUILD_FINGERPRINT := oplus/ossi/ossi:15/AP3A.240617.008/1753972703812:user/release-keys diff --git a/prebuilt/dtb.img b/prebuilt/dtb.img new file mode 100644 index 0000000..8398756 Binary files /dev/null and b/prebuilt/dtb.img differ diff --git a/recovery.fstab b/recovery.fstab new file mode 100644 index 0000000..fdd1272 --- /dev/null +++ b/recovery.fstab @@ -0,0 +1,84 @@ +/system ext4 system flags=display=system;logical;slotselect +/system erofs system flags=display=system;logical;slotselect +/vendor ext4 vendor flags=display=vendor;logical;slotselect +/vendor erofs vendor flags=display=vendor;logical;slotselect +/product ext4 product flags=display=product;logical;slotselect +/product erofs product flags=display=product;logical;slotselect +/odm ext4 odm flags=display=odm;logical;slotselect +/odm erofs odm flags=display=odm;logical;slotselect +/my_product ext4 my_product flags=display=my_product;logical;slotselect +/my_product erofs my_product flags=display=my_product;logical;slotselect +/my_engineering ext4 my_engineering flags=display=my_engineering;logical;slotselect +/my_engineering erofs my_engineering flags=display=my_engineering;logical;slotselect +/my_company ext4 my_company flags=display=my_company;logical;slotselect +/my_company erofs my_company flags=display=my_company;logical;slotselect +/my_carrier ext4 my_carrier flags=display=my_carrier;logical;slotselect +/my_carrier erofs my_carrier flags=display=my_carrier;logical;slotselect +/my_region ext4 my_region flags=display=my_region;logical;slotselect +/my_region erofs my_region flags=display=my_region;logical;slotselect +/my_heytap ext4 my_heytap flags=display=my_heytap;logical;slotselect +/my_heytap erofs my_heytap flags=display=my_heytap;logical;slotselect +/my_stock ext4 my_stock flags=display=my_stock;logical;slotselect +/my_stock erofs my_stock flags=display=my_stock;logical;slotselect +/my_preload ext4 my_preload flags=display=my_preload;logical;slotselect +/my_preload erofs my_preload flags=display=my_preload;logical;slotselect +/my_bigball ext4 my_bigball flags=display=my_bigball;logical;slotselect +/my_bigball erofs my_bigball flags=display=my_bigball;logical;slotselect +/my_manifest ext4 my_manifest flags=display=my_manifest;logical;slotselect +/my_manifest erofs my_manifest flags=display=my_manifest;logical;slotselect +/cdt_engineering emmc /dev/block/by-name/cdt_engineering flags=display=cdt_engineering +/vbmeta_vendor emmc /dev/block/by-name/vbmeta_vendor flags=display=vbmeta_vendor;slotselect +/vbmeta_system emmc /dev/block/by-name/vbmeta_system flags=display=vbmeta_system;slotselect +/cache ext4 /dev/block/by-name/oplusreserve2 flags=display=cache +/data f2fs /dev/block/by-name/userdata flags=display=data +/metadata f2fs /dev/block/by-name/metadata flags=display=metadata +/mnt/vendor/protect_f ext4 /dev/block/by-name/protect1 flags=display=protect_f +/mnt/vendor/protect_s ext4 /dev/block/by-name/protect2 flags=display=protect_s +/mnt/vendor/nvdata ext4 /dev/block/by-name/nvdata flags=display=nvdata +/mnt/vendor/nvcfg ext4 /dev/block/by-name/nvcfg flags=display=nvcfg +auto auto /devices/platform/externdevice* flags=display=auto +auto vfat /devices/platform/11200000.usb3_xhci* flags=display=auto +/persistent emmc /dev/block/by-name/frp flags=display=persistent +/nvram emmc /dev/block/by-name/nvram flags=display=nvram +/proinfo emmc /dev/block/by-name/proinfo flags=display=proinfo +/bootloader emmc /dev/block/by-name/lk flags=display=bootloader +/bootloader2 emmc /dev/block/by-name/lk2 flags=display=bootloader2 +/para emmc /dev/block/by-name/para flags=display=para +/misc emmc /dev/block/by-name/misc flags=display=misc +/boot emmc /dev/block/by-name/boot flags=display=boot +/recovery emmc /dev/block/by-name/recovery flags=display=recovery +/logo emmc /dev/block/by-name/logo flags=display=logo +/expdb emmc /dev/block/by-name/expdb flags=display=expdb +/seccfg emmc /dev/block/by-name/seccfg flags=display=seccfg +/tee1 emmc /dev/block/by-name/tee1 flags=display=tee1 +/tee2 emmc /dev/block/by-name/tee2 flags=display=tee2 +/scp1 emmc /dev/block/by-name/scp1 flags=display=scp1 +/scp2 emmc /dev/block/by-name/scp2 flags=display=scp2 +/sspm_1 emmc /dev/block/by-name/sspm_1 flags=display=sspm_1 +/sspm_2 emmc /dev/block/by-name/sspm_2 flags=display=sspm_2 +/dpm_1 emmc /dev/block/by-name/dpm_1 flags=display=dpm_1 +/dpm_2 emmc /dev/block/by-name/dpm_2 flags=display=dpm_2 +/mcupm_1 emmc /dev/block/by-name/mcupm_1 flags=display=mcupm_1 +/mcupm_2 emmc /dev/block/by-name/mcupm_2 flags=display=mcupm_2 +/md1img emmc /dev/block/by-name/md1img flags=display=md1img +/md1dsp emmc /dev/block/by-name/md1dsp flags=display=md1dsp +/md1arm7 emmc /dev/block/by-name/md1arm7 flags=display=md1arm7 +/md3img emmc /dev/block/by-name/md3img flags=display=md3img +/cam_vpu1 emmc /dev/block/by-name/cam_vpu1 flags=display=cam_vpu1 +/cam_vpu2 emmc /dev/block/by-name/cam_vpu2 flags=display=cam_vpu2 +/cam_vpu3 emmc /dev/block/by-name/cam_vpu3 flags=display=cam_vpu3 +/gz1 emmc /dev/block/by-name/gz1 flags=display=gz1 +/gz2 emmc /dev/block/by-name/gz2 flags=display=gz2 +/spmfw emmc /dev/block/by-name/spmfw flags=display=spmfw +/audio_dsp emmc /dev/block/by-name/audio_dsp flags=display=audio_dsp +/pi_img emmc /dev/block/by-name/pi_img flags=display=pi_img +/boot_para emmc /dev/block/by-name/boot_para flags=display=boot_para +/odmdtbo emmc /dev/block/by-name/odmdtbo flags=display=odmdtbo +/dtbo emmc /dev/block/by-name/dtbo flags=display=dtbo +/otp emmc /dev/block/by-name/otp flags=display=otp +/custom ext4 /dev/block/by-name/odm flags=display=custom +/external_sd vfat /dev/block/mmcblk0p1 flags=display=external_sd +/usb_otg vfat /dev/block/sdd1 flags=display=usb_otg +/vbmeta emmc /dev/block/by-name/vbmeta flags=display=vbmeta +/reserve2 emmc /dev/block/by-name/reserve2 flags=display=reserve2 +/opporeserve ext4 /dev/block/by-name/oplusreserve2 flags=display=opporeserve diff --git a/setup-makefiles.sh b/setup-makefiles.sh new file mode 100644 index 0000000..ea77bc3 --- /dev/null +++ b/setup-makefiles.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# SPDX-License-Identifier: Apache-2.0 +# + +set -e + +DEVICE=ossi +VENDOR=oplus + +# Load extract_utils and do some sanity checks +MY_DIR="${BASH_SOURCE%/*}" +if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi + +ANDROID_ROOT="${MY_DIR}/../../.." + +HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh" +if [ ! -f "${HELPER}" ]; then + echo "Unable to find helper script at ${HELPER}" + exit 1 +fi +source "${HELPER}" + +# Initialize the helper +setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" + +# Warning headers and guards +write_headers + +write_makefiles "${MY_DIR}/proprietary-files.txt" true + +# Finish +write_footers diff --git a/vendorsetup.sh b/vendorsetup.sh new file mode 100644 index 0000000..a5ba878 --- /dev/null +++ b/vendorsetup.sh @@ -0,0 +1,10 @@ +# +# Copyright (C) 2025 The Android Open Source Project +# Copyright (C) 2025 SebaUbuntu's TWRP device tree generator +# +# SPDX-License-Identifier: Apache-2.0 +# + +add_lunch_combo omni_ossi-user +add_lunch_combo omni_ossi-userdebug +add_lunch_combo omni_ossi-eng