1# 2# Copyright (C) 2019 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# 16include build/make/target/board/BoardConfigMainlineCommon.mk 17include build/make/target/board/BoardConfigPixelCommon.mk 18 19# HACK : To fix up after bring up multimedia devices. 20TARGET_SOC := gs101 21 22TARGET_SOC_NAME := google 23 24USES_DEVICE_GOOGLE_GS101 := true 25$(call soong_config_set,CitadelProvision,target_soc,gs101) 26 27TARGET_ARCH := arm64 28TARGET_ARCH_VARIANT := armv8-2a 29TARGET_CPU_ABI := arm64-v8a 30TARGET_CPU_VARIANT := cortex-a55 31 32DEVICE_IS_64BIT_ONLY ?= $(if $(filter %_64,$(TARGET_PRODUCT)),true,false) 33 34ifneq ($(DEVICE_IS_64BIT_ONLY),true) 35TARGET_2ND_ARCH := arm 36TARGET_2ND_ARCH_VARIANT := armv8-a 37TARGET_2ND_CPU_ABI := armeabi-v7a 38TARGET_2ND_CPU_ABI2 := armeabi 39TARGET_2ND_CPU_VARIANT := generic 40TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a53 41endif 42 43BOARD_KERNEL_CMDLINE += dyndbg=\"func alloc_contig_dump_pages +p\" 44BOARD_KERNEL_CMDLINE += earlycon=exynos4210,0x10A00000 console=ttySAC0,115200 androidboot.console=ttySAC0 printk.devkmsg=on 45BOARD_KERNEL_CMDLINE += cma_sysfs.experimental=Y 46BOARD_KERNEL_CMDLINE += rcupdate.rcu_expedited=1 rcu_nocbs=all rcutree.enable_rcu_lazy 47BOARD_KERNEL_CMDLINE += swiotlb=noforce 48BOARD_KERNEL_CMDLINE += cgroup.memory=nokmem 49BOARD_BOOTCONFIG += androidboot.boot_devices=14700000.ufs 50 51TARGET_NO_BOOTLOADER := true 52TARGET_NO_RADIOIMAGE := true 53BOARD_PREBUILT_BOOTIMAGE := $(wildcard $(TARGET_KERNEL_DIR)/boot.img) 54ifneq (,$(BOARD_PREBUILT_BOOTIMAGE)) 55TARGET_NO_KERNEL := true 56else 57TARGET_NO_KERNEL := false 58endif 59BOARD_USES_GENERIC_KERNEL_IMAGE := true 60BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true 61BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true 62TARGET_RECOVERY_WIPE := device/google/gs101/conf/recovery.wipe 63 64# This is the fstab file that will be included in the recovery image. Note that 65# recovery doesn't care about the encryption settings, so it doesn't matter 66# whether we use the normal or the fips fstab here. 67TARGET_RECOVERY_FSTAB_GENRULE = gen_fstab.gs101 68 69TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888 70TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165 71TARGET_RECOVERY_UI_LIB := \ 72 //hardware/google/pixel/recovery:librecovery_ui_pixel \ 73 libfstab 74 75AB_OTA_UPDATER := true 76 77AB_OTA_PARTITIONS += \ 78 system \ 79 system_ext \ 80 product \ 81 vbmeta_system 82 83ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false) 84AB_OTA_PARTITIONS += boot 85endif 86ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false) 87AB_OTA_PARTITIONS += vendor_boot 88AB_OTA_PARTITIONS += dtbo 89endif 90ifneq ($(PRODUCT_BUILD_VBMETA_IMAGE),false) 91AB_OTA_PARTITIONS += vbmeta 92endif 93 94# EMULATOR common modules 95BOARD_EMULATOR_COMMON_MODULES := liblight 96 97OVERRIDE_RS_DRIVER := libRSDriverArm.so 98BOARD_EGL_CFG := device/google/gs101/conf/egl.cfg 99#BOARD_USES_HGL := true 100USE_OPENGL_RENDERER := true 101NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3 102BOARD_USES_EXYNOS5_COMMON_GRALLOC := true 103BOARD_USES_ALIGN_RESTRICTION := false 104BOARD_USES_GRALLOC_ION_SYNC := true 105 106# This should be the same value as USE_SWIFTSHADER in device.mk 107BOARD_USES_SWIFTSHADER := false 108 109# Gralloc4 110ifeq ($(BOARD_USES_SWIFTSHADER),true) 111$(call soong_config_set,arm_gralloc,gralloc_arm_no_external_afbc,true) 112$(call soong_config_set,arm_gralloc,mali_gpu_support_afbc_basic,false) 113$(call soong_config_set,arm_gralloc,mali_gpu_support_afbc_wideblk,false) 114$(call soong_config_set,arm_gralloc,gralloc_init_afbc,false) 115$(call soong_config_set,arm_gralloc,dpu_support_1010102_afbc,false) 116else 117$(call soong_config_set,arm_gralloc,gralloc_arm_no_external_afbc,false) 118$(call soong_config_set,arm_gralloc,mali_gpu_support_afbc_basic,true) 119$(call soong_config_set,arm_gralloc,mali_gpu_support_afbc_wideblk,true) 120$(call soong_config_set,arm_gralloc,gralloc_init_afbc,true) 121$(call soong_config_set,arm_gralloc,dpu_support_1010102_afbc,true) 122endif # ifeq ($(BOARD_USES_SWIFTSHADER),true) 123$(call soong_config_set,arm_gralloc,gralloc_ion_sync_on_lock,$(BOARD_USES_GRALLOC_ION_SYNC)) 124 125# Graphics 126#BOARD_USES_EXYNOS_DATASPACE_FEATURE := true 127 128# Enable chain partition for system. 129BOARD_AVB_VBMETA_SYSTEM := system system_ext product 130BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem 131BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048 132BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 133BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1 134 135ifneq ($(PRODUCT_BUILD_PVMFW_IMAGE),false) 136BOARD_AVB_VBMETA_SYSTEM += pvmfw 137endif 138 139# Enable chained vbmeta for boot images 140BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem 141BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048 142BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 143BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2 144 145TARGET_USERIMAGES_USE_EXT4 := true 146TARGET_USERIMAGES_USE_F2FS := true 147BOARD_USERDATAIMAGE_PARTITION_SIZE := 11796480000 148BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs 149PRODUCT_FS_COMPRESSION := 1 150BOARD_FLASH_BLOCK_SIZE := 4096 151BOARD_MOUNT_SDCARD_RW := true 152 153# product.img 154BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4 155TARGET_COPY_OUT_PRODUCT := product 156 157# system_ext.img 158BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4 159TARGET_COPY_OUT_SYSTEM_EXT := system_ext 160 161######################## 162# Video Codec 163######################## 164# 1. Exynos C2 165BOARD_USE_CODEC2_HIDL_1_2 := true 166BOARD_USE_CSC_FILTER := false 167BOARD_USE_DEC_SW_CSC := true 168BOARD_USE_ENC_SW_CSC := true 169BOARD_SUPPORT_MFC_ENC_RGB := true 170BOARD_USE_BLOB_ALLOCATOR := false 171BOARD_SUPPORT_MFC_ENC_BT2020 := true 172BOARD_SUPPORT_FLEXIBLE_P010 := true 173$(call soong_config_set,video_codec,target_soc_name,$(TARGET_SOC_NAME)) 174$(call soong_config_set_bool,video_codec,board_use_codec2_hidl_1_2,$(BOARD_USE_CODEC2_HIDL_1_2)) 175$(call soong_config_set_bool,video_codec,board_use_csc_filter,$(BOARD_USE_CSC_FILTER)) 176$(call soong_config_set_bool,video_codec,board_use_dec_sw_csc,$(BOARD_USE_DEC_SW_CSC)) 177$(call soong_config_set_bool,video_codec,board_use_enc_sw_csc,$(BOARD_USE_ENC_SW_CSC)) 178$(call soong_config_set_bool,video_codec,board_support_mfc_enc_rgb,$(BOARD_SUPPORT_MFC_ENC_RGB)) 179$(call soong_config_set_bool,video_codec,board_use_blob_allocator,$(BOARD_USE_BLOB_ALLOCATOR)) 180$(call soong_config_set_bool,video_codec,board_support_mfc_enc_bt2020,$(BOARD_SUPPORT_MFC_ENC_BT2020)) 181$(call soong_config_set_bool,video_codec,board_support_flexible_p010,$(BOARD_SUPPORT_FLEXIBLE_P010)) 182$(call soong_config_set_bool,video_codec,board_use_codec2_aidl,$(if $(BOARD_USE_CODEC2_AIDL),true,false)) 183######################## 184 185BOARD_SUPER_PARTITION_SIZE := 8531214336 186BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions 187# Set size to BOARD_SUPER_PARTITION_SIZE - overhead (4MiB) (b/182237294) 188BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 8527020032 189BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := \ 190 system \ 191 system_ext \ 192 product \ 193 vendor \ 194 vendor_dlkm 195 196# Set error limit to BOARD_SUPER_PARTITON_SIZE - 400MB 197BOARD_SUPER_PARTITION_ERROR_LIMIT := 8111783936 198 199# Testing related defines 200BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/r4o6-setup.sh 201 202# 203# AUDIO & VOICE 204# 205BOARD_USES_GENERIC_AUDIO := true 206 207$(call soong_config_set,aoc_audio_func,ext_hidl,true) 208 209ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) 210$(call soong_config_set,aoc_audio_func,dump_usecase_data,true) 211$(call soong_config_set,aoc_audio_func,hal_socket_control,true) 212$(call soong_config_set,aoc_audio_func,record_tuning_keys,true) 213endif 214 215ifneq (,$(filter aosp_%,$(TARGET_PRODUCT))) 216$(call soong_config_set,aoc_audio_func,aosp_build,true) 217endif 218 219$(call soong_config_set,haptics,actuator_model,$(ACTUATOR_MODEL)) 220 221# Primary AudioHAL Configuration 222#BOARD_USE_COMMON_AUDIOHAL := true 223#BOARD_USE_CALLIOPE_AUDIOHAL := false 224#BOARD_USE_AUDIOHAL := true 225 226# Compress Offload Configuration 227#BOARD_USE_OFFLOAD_AUDIO := true 228#BOARD_USE_OFFLOAD_EFFECT := false 229 230# SoundTriggerHAL Configuration 231#BOARD_USE_SOUNDTRIGGER_HAL := false 232 233# Vibrator HAL actuator model and adaptive haptics configuration 234$(call soong_config_set,haptics,actuator_model,$(ACTUATOR_MODEL)) 235$(call soong_config_set,haptics,adaptive_haptics_feature,$(ADAPTIVE_HAPTICS_FEATURE)) 236 237# HWComposer 238BOARD_HWC_VERSION := libhwc2.1 239TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK := false 240BOARD_HDMI_INCAPABLE := true 241TARGET_USES_HWC2 := true 242HWC_SUPPORT_RENDER_INTENT := true 243HWC_SUPPORT_COLOR_TRANSFORM := true 244#BOARD_USES_DISPLAYPORT := true 245# if AFBC is enabled, must set ro.vendor.ddk.set.afbc=1 246BOARD_USES_EXYNOS_AFBC_FEATURE := true 247#BOARD_USES_HDRUI_GLES_CONVERSION := true 248 249BOARD_LIBACRYL_DEFAULT_COMPOSITOR := fimg2d_gs101 250BOARD_LIBACRYL_G2D_HDR_PLUGIN := libacryl_hdr_plugin 251$(call soong_config_set,acryl,libacryl_g2d_hdr_plugin,//hardware/google/graphics/gs101/libacryl_plugins:libacryl_hdr_plugin) 252$(call soong_config_set,acryl,libacryl_c_include,hardware/google/graphics/$(TARGET_BOARD_PLATFORM)/libcap) 253 254# HWCServices 255BOARD_USES_HWC_SERVICES := true 256 257# WiFiDisplay 258# BOARD_USES_VIRTUAL_DISPLAY := true 259# BOARD_USES_VDS_EXYNOS_HWC := true 260# BOARD_USES_WIFI_DISPLAY:= true 261# BOARD_USES_EGL_SURFACE_FOR_COMPOSITION_MIXED := true 262# BOARD_USES_VDS_YUV420SPM := true 263# BOARD_USES_VDS_OTHERFORMAT := true 264# BOARD_USES_VDS_DEBUG_FLAG := true 265# BOARD_USES_DISABLE_COMPOSITIONTYPE_GLES := true 266# BOARD_USES_SECURE_ENCODER_ONLY := true 267# BOARD_USES_TSMUX := true 268 269# SCALER 270BOARD_USES_DEFAULT_CSC_HW_SCALER := true 271BOARD_DEFAULT_CSC_HW_SCALER := 4 272BOARD_USES_SCALER_M2M1SHOT := true 273 274# Device Tree 275BOARD_USES_DT := true 276BOARD_INCLUDE_DTB_IN_BOOTIMG := true 277BOARD_PREBUILT_DTBIMAGE_DIR := $(TARGET_KERNEL_DIR) 278BOARD_PREBUILT_DTBOIMAGE := $(BOARD_PREBUILT_DTBIMAGE_DIR)/dtbo.img 279 280# PLATFORM LOG 281TARGET_USES_LOGD := true 282 283# LIBHWJPEG 284#TARGET_USES_UNIVERSAL_LIBHWJPEG := true 285#LIBHWJPEG_HWSCALER_ID := 0 286 287#Keymaster 288#BOARD_USES_KEYMASTER_VER1 := true 289 290#FMP 291#BOARD_USES_FMP_DM_CRYPT := true 292#BOARD_USES_FMP_FSCRYPTO := true 293BOARD_USES_METADATA_PARTITION := true 294 295# SKIA 296#BOARD_USES_SKIA_MULTITHREADING := true 297#BOARD_USES_FIMGAPI_V5X := true 298 299# SECCOMP Policy 300BOARD_SECCOMP_POLICY = device/google/gs101/seccomp_policy 301 302#CURL 303BOARD_USES_CURL := true 304 305# Sensor HAL 306BOARD_USES_EXYNOS_SENSORS_DUMMY := true 307 308# VISION 309# Exynos vision framework (EVF) 310#TARGET_USES_EVF := true 311# HW acceleration 312#TARGET_USES_VPU_KERNEL := true 313#TARGET_USES_SCORE_KERNEL := true 314#TARGET_USES_CL_KERNEL := false 315 316# exynos RIL 317TARGET_EXYNOS_RIL_SOURCE := true 318ENABLE_VENDOR_RIL_SERVICE := true 319 320# GNSS 321# BOARD_USES_EXYNOS_GNSS_DUMMY := true 322 323# Bluetooth defines 324# TODO(b/123695868): Remove the need for this 325BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := \ 326 build/make/target/board/mainline_arm64/bluetooth 327 328#VNDK 329BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true 330BOARD_VNDK_VERSION := current 331 332# H/W align restriction of MM IPs 333BOARD_EXYNOS_S10B_FORMAT_ALIGN := 64 334 335# Boot.img 336BOARD_RAMDISK_USE_LZ4 := true 337#BOARD_KERNEL_BASE := 0x80000000 338#BOARD_KERNEL_PAGESIZE := 2048 339#BOARD_KERNEL_OFFSET := 0x80000 340#BOARD_RAMDISK_OFFSET := 0x4000000 341BOARD_BOOT_HEADER_VERSION := 4 342BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) 343 344BOARD_VENDOR_RAMDISK_FRAGMENTS := dlkm 345BOARD_VENDOR_RAMDISK_FRAGMENT.dlkm.KERNEL_MODULE_DIRS := top 346 347# Enable AVB2.0 348BOARD_AVB_ENABLE := true 349BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 350BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 0x04000000 351BOARD_DTBOIMG_PARTITION_SIZE := 0x01000000 352 353# Vendor ramdisk image for kernel development 354BOARD_BUILD_VENDOR_RAMDISK_IMAGE := true 355 356KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR) 357KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko) 358 359BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.blocklist 360 361# Since Pixel 6/6pro doesn't have a system_dlkm partition, the GKI modules are 362# on the vendor_dlkm partition. In order to allow them to load properly, we 363# need to retain the module signature which would normally get stripped during 364# packaging. Disable stripping the vendor_dlkm modules to retain the GKI 365# modules' signature. Note, the pixel kernel builds always strip the modules in 366# favor of saving space via the kleaf property: strip_modules = True. 367BOARD_DO_NOT_STRIP_VENDOR_MODULES := true 368 369# Prebuilt kernel modules that are *not* listed in vendor_boot.modules.load 370BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES = fips140.ko 371BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA = $(foreach k,$(BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES),$(if $(wildcard $(KERNEL_MODULE_DIR)/$(k)), $(k))) 372 373# Kernel modules that are listed in vendor_boot.modules.load 374# Starting from 6.1, use modules.load instead. It lists modules for vendor ramdisk regardless of the partition name. 375ifneq ($(wildcard $(KERNEL_MODULE_DIR)/modules.load),) 376 BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE := $(strip $(shell cat $(KERNEL_MODULE_DIR)/modules.load)) 377else 378 BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_boot.modules.load)) 379endif 380ifndef BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE 381$(error vendor_boot.modules.load not found or empty) 382endif 383BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA) 384BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD += $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE) 385BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(addprefix $(KERNEL_MODULE_DIR)/, $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA)) 386BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(addprefix $(KERNEL_MODULE_DIR)/, $(notdir $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE))) 387 388BOARD_VENDOR_KERNEL_MODULES_LOAD += $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.load)) 389ifndef BOARD_VENDOR_KERNEL_MODULES_LOAD 390$(error vendor_dlkm.modules.load not found or empty) 391endif 392BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES) 393 394# Using BUILD_COPY_HEADERS 395BUILD_BROKEN_USES_BUILD_COPY_HEADERS := true 396 397include device/google/gs101-sepolicy/gs101-sepolicy.mk 398 399# Battery options 400BOARD_KERNEL_CMDLINE += at24.write_timeout=100 401 402# Enable larger logbuf 403BOARD_KERNEL_CMDLINE += log_buf_len=1024K 404 405# Protected VM firmware 406BOARD_PVMFWIMAGE_PARTITION_SIZE := 0x00100000 407 408-include vendor/google_devices/gs-common/proprietary/BoardConfigVendor.mk 409