1# 2# Copyright (C) 2016 The Android Open-Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17include build/make/target/board/BoardConfigMainlineCommon.mk 18include build/make/target/board/BoardConfigPixelCommon.mk 19 20TARGET_BOARD_PLATFORM := sdm845 21TARGET_BOARD_INFO_FILE := device/google/crosshatch/board-info.txt 22USES_DEVICE_GOOGLE_B1C1 := true 23 24TARGET_ARCH := arm64 25TARGET_ARCH_VARIANT := armv8-a 26TARGET_CPU_ABI := arm64-v8a 27TARGET_CPU_ABI2 := 28TARGET_CPU_VARIANT := generic 29TARGET_CPU_VARIANT_RUNTIME := kryo385 30 31TARGET_2ND_ARCH := arm 32TARGET_2ND_ARCH_VARIANT := armv8-a 33TARGET_2ND_CPU_ABI := armeabi-v7a 34TARGET_2ND_CPU_ABI2 := armeabi 35TARGET_2ND_CPU_VARIANT := generic 36TARGET_2ND_CPU_VARIANT_RUNTIME := kryo385 37 38TARGET_BOARD_COMMON_PATH := device/google/crosshatch/sdm845 39 40BUILD_BROKEN_DUP_RULES := true 41 42BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8 androidboot.console=ttyMSM0 printk.devkmsg=on 43BOARD_KERNEL_CMDLINE += msm_rtb.filter=0x237 44BOARD_KERNEL_CMDLINE += ehci-hcd.park=3 45BOARD_KERNEL_CMDLINE += service_locator.enable=1 46BOARD_KERNEL_CMDLINE += cgroup.memory=nokmem 47BOARD_KERNEL_CMDLINE += lpm_levels.sleep_disabled=1 48BOARD_KERNEL_CMDLINE += usbcore.autosuspend=7 49BOARD_KERNEL_CMDLINE += loop.max_part=7 50BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc/1d84000.ufshc 51 52BOARD_KERNEL_BASE := 0x00000000 53BOARD_KERNEL_PAGESIZE := 4096 54 55BOARD_INCLUDE_DTB_IN_BOOTIMG := true 56BOARD_BOOT_HEADER_VERSION := 2 57BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) 58 59# DTBO partition definitions 60BOARD_PREBUILT_DTBOIMAGE := device/google/crosshatch-kernel/dtbo.img 61BOARD_DTBOIMG_PARTITION_SIZE := 8388608 62 63TARGET_NO_KERNEL := false 64BOARD_USES_RECOVERY_AS_BOOT := true 65BOARD_USES_METADATA_PARTITION := true 66 67# Board uses A/B OTA. 68AB_OTA_UPDATER := true 69 70AB_OTA_PARTITIONS += \ 71 system \ 72 dtbo 73 74ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false) 75AB_OTA_PARTITIONS += boot 76endif 77ifneq ($(PRODUCT_BUILD_VBMETA_IMAGE),false) 78AB_OTA_PARTITIONS += vbmeta 79endif 80 81# Skip product and system_ext partition for nodap build 82ifeq ($(filter %_nodap,$(TARGET_PRODUCT)),) 83AB_OTA_PARTITIONS += \ 84 product \ 85 system_ext 86endif 87 88ifneq ($(filter %_mainline,$(TARGET_PRODUCT)),) 89AB_OTA_PARTITIONS += \ 90 vbmeta_system 91endif 92 93# Partitions (listed in the file) to be wiped under recovery. 94TARGET_RECOVERY_WIPE := device/google/crosshatch/recovery.wipe 95ifneq ($(filter %_mainline,$(TARGET_PRODUCT)),) 96TARGET_RECOVERY_FSTAB := device/google/crosshatch/fstab.mainline.hardware 97else 98TARGET_RECOVERY_FSTAB := device/google/crosshatch/fstab.hardware 99endif 100TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888 101TARGET_RECOVERY_UI_LIB := \ 102 librecovery_ui_pixel \ 103 libfstab 104 105ifneq ($(filter %_mainline,$(TARGET_PRODUCT)),) 106BOARD_AVB_VBMETA_SYSTEM := system system_ext product 107BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem 108BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048 109BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 110BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1 111endif 112 113# product.img 114ifneq ($(PRODUCT_NO_PRODUCT_PARTITION), true) 115ifneq ($(PRODUCT_USE_DYNAMIC_PARTITIONS), true) 116 BOARD_PRODUCTIMAGE_PARTITION_SIZE := 314572800 117endif 118BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4 119else 120TARGET_COPY_OUT_PRODUCT := system/product 121endif 122 123# system.img 124ifneq ($(PRODUCT_USE_DYNAMIC_PARTITIONS), true) 125 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2952790016 126ifeq ($(PRODUCT_NO_PRODUCT_PARTITION), true) 127 # Increase inode count to add product modules 128 BOARD_SYSTEMIMAGE_EXTFS_INODE_COUNT := 8192 129else 130 BOARD_SYSTEMIMAGE_EXTFS_INODE_COUNT := 4096 131endif 132endif 133BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0 134 135# userdata.img 136BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240 137BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs 138 139# persist.img 140BOARD_PERSISTIMAGE_PARTITION_SIZE := 41943040 141BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4 142 143# boot.img 144BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 145 146# system_ext.img 147ifneq ($(PRODUCT_USE_DYNAMIC_PARTITIONS), true) 148TARGET_COPY_OUT_SYSTEM_EXT := system/system_ext 149else 150BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4 151endif 152ifeq ($(PRODUCT_NO_PRODUCT_PARTITION), true) 153# no system_ext partition as well 154TARGET_COPY_OUT_SYSTEM_EXT := system/system_ext 155endif 156 157ifeq ($(PRODUCT_USE_DYNAMIC_PARTITIONS), true) 158BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions 159BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := \ 160 system \ 161 vendor \ 162 product \ 163 system_ext 164 165ifeq ($(PRODUCT_RETROFIT_DYNAMIC_PARTITIONS), true) 166# Normal Pixel 3 must retrofit dynamic partitions. 167BOARD_SUPER_PARTITION_SIZE := 4072669184 168BOARD_SUPER_PARTITION_METADATA_DEVICE := system 169BOARD_SUPER_PARTITION_BLOCK_DEVICES := system vendor product 170BOARD_SUPER_PARTITION_SYSTEM_DEVICE_SIZE := 2952790016 171BOARD_SUPER_PARTITION_VENDOR_DEVICE_SIZE := 805306368 172BOARD_SUPER_PARTITION_PRODUCT_DEVICE_SIZE := 314572800 173# Assume 4MB metadata size. 174# TODO(b/117997386): Use correct metadata size. 175BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 4069523456 176else 177# Mainline Pixel 3 has an actual super partition. 178 179BOARD_SUPER_PARTITION_SIZE := 12884901888 180# Assume 1MB metadata size. 181# TODO(b/117997386): Use correct metadata size. 182BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 6441402368 183 184endif # PRODUCT_RETROFIT_DYNAMIC_PARTITIONS 185endif # PRODUCT_USE_DYNAMIC_PARTITIONS 186 187BOARD_FLASH_BLOCK_SIZE := 131072 188 189BOARD_ROOT_EXTRA_SYMLINKS := /vendor/dsp:/dsp 190BOARD_ROOT_EXTRA_SYMLINKS += /mnt/vendor/persist:/persist 191 192# Add QC specific symlinks for backward compatibility 193# Move the symlinks here instead of removing them 194ifeq ($(PRODUCT_USE_QC_SPECIFIC_SYMLINKS), true) 195BOARD_ROOT_EXTRA_SYMLINKS += /vendor/firmware_mnt:/firmware 196endif 197 198include device/google/crosshatch-sepolicy/crosshatch-sepolicy.mk 199 200TARGET_FS_CONFIG_GEN := device/google/crosshatch/config.fs 201 202QCOM_BOARD_PLATFORMS += sdm845 203BOARD_HAVE_BLUETOOTH_QCOM := true 204BOARD_HAVE_QCOM_FM := false 205BOARD_USES_COMMON_BLUETOOTH_HAL := true 206 207# Camera 208TARGET_USES_AOSP := true 209BOARD_QTI_CAMERA_32BIT_ONLY := false 210CAMERA_DAEMON_NOT_PRESENT := true 211TARGET_USES_ION := true 212TARGET_USES_EASEL := true 213BOARD_USES_EASEL := true 214 215# GPS 216TARGET_NO_RPC := true 217BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := default 218BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET := true 219 220# RenderScript 221OVERRIDE_RS_DRIVER := libRSDriver_adreno.so 222 223# Sensors 224USE_SENSOR_MULTI_HAL := true 225TARGET_SUPPORT_DIRECT_REPORT := true 226# Enable sensor Version V_2 227USE_SENSOR_HAL_VER := 2.0 228 229# CHRE 230CHRE_DAEMON_ENABLED := true 231CHRE_DAEMON_LPMA_ENABLED := true 232CHRE_DAEMON_USE_SDSPRPC := true 233 234# wlan 235BOARD_WLAN_DEVICE := qcwcn 236BOARD_WPA_SUPPLICANT_DRIVER := NL80211 237BOARD_HOSTAPD_DRIVER := NL80211 238WIFI_DRIVER_DEFAULT := qca_cld3 239WPA_SUPPLICANT_VERSION := VER_0_8_X 240BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) 241BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) 242WIFI_HIDL_FEATURE_AWARE := true 243WIFI_HIDL_FEATURE_DUAL_INTERFACE:= true 244WIFI_FEATURE_WIFI_EXT_HAL := true 245WIFI_FEATURE_IMU_DETECTION := false 246WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true 247 248# Audio 249BOARD_USES_ALSA_AUDIO := true 250AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true 251AUDIO_FEATURE_ENABLED_SND_MONITOR := true 252AUDIO_FEATURE_ENABLED_USB_TUNNEL := true 253AUDIO_FEATURE_ENABLED_CIRRUS_SPKR_PROTECTION := true 254BOARD_SUPPORTS_SOUND_TRIGGER := true 255AUDIO_FEATURE_FLICKER_SENSOR_INPUT := true 256SOUND_TRIGGER_FEATURE_LPMA_ENABLED := true 257AUDIO_FEATURE_ENABLED_MAXX_AUDIO := true 258AUDIO_FEATURE_ENABLED_24BITS_CAMCORDER := true 259 260# Graphics 261TARGET_USES_GRALLOC1 := true 262TARGET_USES_HWC2 := true 263 264VSYNC_EVENT_PHASE_OFFSET_NS := 2000000 265SF_VSYNC_EVENT_PHASE_OFFSET_NS := 6000000 266 267# Display 268TARGET_HAS_WIDE_COLOR_DISPLAY := true 269TARGET_HAS_HDR_DISPLAY := true 270TARGET_USES_DISPLAY_RENDER_INTENTS := true 271TARGET_USES_COLOR_METADATA := true 272TARGET_USES_DRM_PP := true 273 274# Vendor Interface Manifest 275DEVICE_MANIFEST_FILE := device/google/crosshatch/manifest.xml 276DEVICE_MATRIX_FILE := device/google/crosshatch/compatibility_matrix.xml 277DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := device/google/crosshatch/device_framework_matrix.xml 278 279# Userdebug only Vendor Interface Manifest 280ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) 281DEVICE_FRAMEWORK_MANIFEST_FILE += device/google/crosshatch/framework_manifest_userdebug.xml 282DEVICE_MATRIX_FILE += device/google/crosshatch/compatibility_matrix_userdebug.xml 283endif 284 285ODM_MANIFEST_SKUS += \ 286 G013A \ 287 G013B \ 288 G013C \ 289 G013D \ 290 291ODM_MANIFEST_G013A_FILES := device/google/crosshatch/nfc/manifest_se_SIM1.xml 292ODM_MANIFEST_G013B_FILES := device/google/crosshatch/nfc/manifest_se_eSE1.xml 293ODM_MANIFEST_G013C_FILES := device/google/crosshatch/nfc/manifest_se_SIM1.xml 294ODM_MANIFEST_G013D_FILES := device/google/crosshatch/nfc/manifest_se_eSE1.xml 295 296# Use mke2fs to create ext4 images 297TARGET_USES_MKE2FS := true 298 299# Kernel modules 300ifeq (,$(filter-out blueline_kasan crosshatch_kasan, $(TARGET_PRODUCT))) 301BOARD_VENDOR_KERNEL_MODULES += \ 302 $(wildcard device/google/crosshatch-kernel/kasan/*.ko) 303else ifeq (,$(filter-out blueline_kernel_debug_memory crosshatch_kernel_debug_memory, $(TARGET_PRODUCT))) 304BOARD_VENDOR_KERNEL_MODULES += \ 305 $(wildcard device/google/crosshatch-kernel/debug_memory/*.ko) 306else ifeq (,$(filter-out blueline_kernel_debug_memory_accounting crosshatch_kernel_debug_memory_accounting, $(TARGET_PRODUCT))) 307BOARD_VENDOR_KERNEL_MODULES += \ 308 $(wildcard device/google/crosshatch-kernel/debug_memory_accounting/*.ko) 309BOARD_KERNEL_CMDLINE += page_owner=on 310else ifeq (,$(filter-out blueline_kernel_debug_locking crosshatch_kernel_debug_locking, $(TARGET_PRODUCT))) 311BOARD_VENDOR_KERNEL_MODULES += \ 312 $(wildcard device/google/crosshatch-kernel/debug_locking/*.ko) 313else ifeq (,$(filter-out blueline_kernel_debug_hang crosshatch_kernel_debug_hang, $(TARGET_PRODUCT))) 314BOARD_VENDOR_KERNEL_MODULES += \ 315 $(wildcard device/google/crosshatch-kernel/debug_hang/*.ko) 316else ifeq (,$(filter-out blueline_kernel_debug_api crosshatch_kernel_debug_api, $(TARGET_PRODUCT))) 317BOARD_VENDOR_KERNEL_MODULES += \ 318 $(wildcard device/google/crosshatch-kernel/debug_api/*.ko) 319else ifneq (,$(TARGET_PREBUILT_KERNEL)) 320 # If TARGET_PREBUILT_KERNEL is set, check whether there are modules packaged with that kernel 321 # image. If so, use them, otherwise fall back to the default directory. 322 TARGET_PREBUILT_KERNEL_PREBUILT_VENDOR_KERNEL_MODULES := \ 323 $(wildcard $(dir $(TARGET_PREBUILT_KERNEL))/*.ko) 324 ifneq (,$(TARGET_PREBUILT_KERNEL_PREBUILT_VENDOR_KERNEL_MODULES)) 325 BOARD_VENDOR_KERNEL_MODULES += $(TARGET_PREBUILT_KERNEL_PREBUILT_VENDOR_KERNEL_MODULES) 326 else 327 BOARD_VENDOR_KERNEL_MODULES += $(wildcard device/google/crosshatch-kernel/*.ko) 328 endif 329 # Do NOT delete TARGET_PREBUILT..., it will lead to empty BOARD_VENDOR_KERNEL_MODULES. 330else 331BOARD_VENDOR_KERNEL_MODULES += \ 332 $(wildcard device/google/crosshatch-kernel/*.ko) 333endif 334 335# DTB 336ifeq (,$(filter-out blueline_kasan crosshatch_kasan, $(TARGET_PRODUCT))) 337BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel/kasan 338else ifeq (,$(filter-out blueline_kernel_debug_memory crosshatch_kernel_debug_memory, $(TARGET_PRODUCT))) 339BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel/debug_memory 340else ifeq (,$(filter-out blueline_kernel_debug_memory_accounting crosshatch_kernel_debug_memory_accounting, $(TARGET_PRODUCT))) 341BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel/debug_memory_accounting 342else ifeq (,$(filter-out blueline_kernel_debug_locking crosshatch_kernel_debug_locking, $(TARGET_PRODUCT))) 343BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel/debug_locking 344else ifeq (,$(filter-out blueline_kernel_debug_hang crosshatch_kernel_debug_hang, $(TARGET_PRODUCT))) 345BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel/debug_hang 346else ifeq (,$(filter-out blueline_kernel_debug_api crosshatch_kernel_debug_api, $(TARGET_PRODUCT))) 347BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel/debug_api 348else ifneq (,$(TARGET_PREBUILT_KERNEL)) 349 # If TARGET_PREBUILT_KERNEL is set, check whether there are dtb files packaged with that kernel 350 # image. If so, use them, otherwise fall back to the default directory. 351 PREBUILT_PREBUILT_DTBIMAGE_DIR := $(wildcard $(dir $(TARGET_PREBUILT_KERNEL))/*.dtb) 352 ifneq (,$(PREBUILT_PREBUILT_DTBIMAGE_DIR) 353 BOARD_PREBUILT_DTBIMAGE_DIR := $(dir $(TARGET_PREBUILT_KERNEL)) 354 else 355 BOARD_PREBUILT_DTBIMAGE_DIR += device/google/crosshatch-kernel 356 endif 357 PREBUILT_VENDOR_KERNEL_MODULES := 358else 359BOARD_PREBUILT_DTBIMAGE_DIR := device/google/crosshatch-kernel 360endif 361 362# Testing related defines 363BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/b1c1-setup.sh 364-include vendor/google_devices/crosshatch/proprietary/BoardConfigVendor.mk 365