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