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 := lito
21USES_DEVICE_GOOGLE_REDBULL := true
22
23TARGET_ARCH := arm64
24TARGET_ARCH_VARIANT := armv8-a
25TARGET_CPU_ABI := arm64-v8a
26TARGET_CPU_ABI2 :=
27TARGET_CPU_VARIANT := generic
28TARGET_CPU_VARIANT_RUNTIME := cortex-a76
29
30ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
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 := cortex-a76
37endif
38
39BUILD_BROKEN_DUP_RULES := true
40BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8 androidboot.console=ttyMSM0 printk.devkmsg=on
41BOARD_KERNEL_CMDLINE += msm_rtb.filter=0x237
42BOARD_KERNEL_CMDLINE += ehci-hcd.park=3
43BOARD_KERNEL_CMDLINE += service_locator.enable=1
44BOARD_KERNEL_CMDLINE += androidboot.memcg=1 cgroup.memory=nokmem
45BOARD_KERNEL_CMDLINE += lpm_levels.sleep_disabled=1 # STOPSHIP b/113233473
46BOARD_KERNEL_CMDLINE += usbcore.autosuspend=7
47BOARD_KERNEL_CMDLINE += androidboot.usbcontroller=a600000.dwc3 swiotlb=2048
48BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc/1d84000.ufshc
49BOARD_KERNEL_CMDLINE += loop.max_part=7
50BOARD_KERNEL_CMDLINE += snd_soc_cs35l41_i2c.async_probe=1
51BOARD_KERNEL_CMDLINE += i2c_qcom_geni.async_probe=1
52BOARD_KERNEL_CMDLINE += st21nfc.async_probe=1
53BOARD_KERNEL_CMDLINE += spmi_pmic_arb.async_probe=1
54BOARD_KERNEL_CMDLINE += ufs_qcom.async_probe=1
55
56BOARD_KERNEL_BASE        := 0x00000000
57BOARD_KERNEL_PAGESIZE    := 4096
58
59BOARD_INCLUDE_DTB_IN_BOOTIMG := true
60BOARD_BOOT_HEADER_VERSION := 3
61BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
62
63BOARD_DTBOIMG_PARTITION_SIZE := 16777216
64
65TARGET_NO_KERNEL := false
66BOARD_USES_GENERIC_KERNEL_IMAGE := true
67BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true
68ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false)
69BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true
70endif
71
72BOARD_USES_METADATA_PARTITION := true
73
74AB_OTA_UPDATER := true
75
76ifneq ($(PRODUCT_BUILD_SYSTEM_IMAGE),false)
77AB_OTA_PARTITIONS += system
78AB_OTA_PARTITIONS += vbmeta_system
79endif
80ifneq ($(PRODUCT_BUILD_PRODUCT_IMAGE),false)
81AB_OTA_PARTITIONS += product
82endif
83ifneq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),false)
84AB_OTA_PARTITIONS += system_ext
85endif
86ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false)
87AB_OTA_PARTITIONS += boot
88endif
89ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false)
90AB_OTA_PARTITIONS += vendor_boot
91AB_OTA_PARTITIONS += dtbo
92endif
93ifneq ($(PRODUCT_BUILD_VBMETA_IMAGE),false)
94AB_OTA_PARTITIONS += vbmeta
95endif
96
97# Partitions (listed in the file) to be wiped under recovery.
98TARGET_RECOVERY_WIPE := device/google/redbull/recovery.wipe
99TARGET_RECOVERY_FSTAB := device/google/redbull/fstab.hardware
100TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
101TARGET_RECOVERY_UI_LIB := \
102    librecovery_ui_pixel \
103    libfstab
104
105# Enable chain partition for system.
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
111
112# Enable chained vbmeta for boot images
113BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
114BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048
115BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
116BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2
117
118# product.img
119BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
120
121# userdata.img
122TARGET_USERIMAGES_USE_F2FS := true
123BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240
124BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
125
126# persist.img
127BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432
128BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4
129
130# boot.img
131BOARD_BOOTIMAGE_PARTITION_SIZE := 0x06000000
132
133# vendor_boot.img
134BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 0x06000000
135
136# Allow LZ4 compression
137BOARD_RAMDISK_USE_LZ4 := true
138
139# Specify BOOT_KERNEL_MODULES
140#
141# modules for first stage in vendor_boot.img, remainder goes to vendor.img.
142# This list is a superset of all the possible modules required, and is
143# filtered and ordered as per the supplied kernel's modules.load file.
144# Any modules that do not exist will be silently dropped.  This is required
145# because some kernel configurations may have extra debug or test modules,
146# make sure any required to be loaded during first stage init are listed.
147BOOT_KERNEL_MODULES := \
148	msm_ipc_logging.ko \
149	qtee_shm_bridge.ko \
150	qcom_hwspinlock.ko \
151	smem.ko \
152	msm_minidump.ko \
153	watchdog_v2.ko \
154	early_random.ko \
155	qcom-pdc.ko \
156	cmd-db.ko \
157	qcom_rpmh.ko \
158	phy-qcom-ufs.ko \
159	phy-qcom-ufs-qrbtc-sdm845.ko \
160	phy-qcom-ufs-qmp-v4.ko \
161	phy-qcom-ufs-qmp-v4-lito.ko \
162	phy-qcom-ufs-qmp-v3-660.ko \
163	phy-qcom-ufs-qmp-v3.ko \
164	pinctrl-msm.ko \
165	pinctrl-lito.ko \
166	qcom-spmi-wled.ko \
167	msm_bus.ko \
168	clk-qcom.ko \
169	clk-aop-qmp.ko \
170	clk-rpmh.ko \
171	gcc-lito.ko \
172	clk-spmi-pmic-div.ko \
173	qrtr.ko \
174	qmi_helpers.ko \
175	secure_buffer.ko \
176	heap_mem_ext_v01.ko \
177	subsystem_notif.ko \
178	ramdump.ko \
179	msm_memshare.ko \
180	msm_bus_dbg_rpmh.ko \
181	msm_bus_rpmh.ko \
182	rpmh-regulator.ko \
183	qcom-geni-se.ko \
184	msm_geni_serial.ko \
185	msm_dma_iommu_mapping.ko \
186	arm-smmu-debug.ko \
187	iommu-logger.ko \
188	arm-smmu.ko \
189	ufshcd-core.ko \
190	ufshcd-pltfrm.ko \
191	ufs_qcom.ko \
192	spi-geni-qcom.ko \
193	i2c-qcom-geni.ko \
194	ion-alloc.ko \
195	msm_rtb.ko \
196	pinctrl-spmi-gpio.ko \
197	pinctrl-spmi-mpp.ko \
198	pwm-qti-lpg.ko \
199	debugcc-lito.ko \
200	dispcc-lito.ko \
201	gpucc-lito.ko \
202	npucc-lito.ko \
203	videocc-lito.ko \
204	virt-dma.ko \
205	gpi.ko \
206	msm_scm.ko \
207	mdt_loader.ko \
208	smem_state.ko \
209	smp2p.ko \
210	qcom_ipcc.ko \
211	llcc-slice.ko \
212	llcc-lito.ko \
213	core_hang_detect.ko \
214	gladiator_hang_detect.ko \
215	minidump_log.ko \
216	memory_dump_v2.ko \
217	dcc_v2.ko \
218	service-locator.ko \
219	service-notifier.ko \
220	subsystem-restart.ko \
221	peripheral-loader.ko \
222	subsys-pil-tz.ko \
223	cdsp-loader.ko \
224	qseecom.ko \
225	smcinvoke.ko \
226	microdump_collector.ko \
227	eud.ko \
228	qcom_socinfo.ko \
229	fsa4480-i2c.ko \
230	rpmsg_core.ko \
231	qcom_glink_native.ko \
232	qcom_glink_smem.ko \
233	qcom_glink_spss.ko \
234	glink_probe.ko \
235	glink_pkt.ko \
236	smp2p_sleepstate.ko \
237	event_timer.ko \
238	lpm-stats.ko \
239	msm_pm.ko \
240	rpmh_master_stat.ko \
241	system_pm.ko \
242	rpm_stats.ko \
243	ddr_stats.ko \
244	cdsprm.ko \
245	msm_icnss.ko \
246	modemsmem.ko \
247	qpnp-amoled-regulator.ko \
248	refgen.ko \
249	slg51000-regulator.ko \
250	tps-regulator.ko \
251	msm_rng.ko \
252	adsprpc_compat.ko \
253	adsprpc.ko \
254	fastcvpd.ko \
255	rdbg.ko \
256	qpnp-power-on.ko \
257	msm-poweroff.ko \
258	usb_f_diag.ko \
259	diagchar.ko \
260	governor_bw_vbif.ko \
261	governor_gpubw_mon.ko \
262	governor_msm_adreno_tz.ko \
263	msm_adreno.ko \
264	regmap-spmi.ko \
265	google-bms.ko \
266	at24.ko \
267	hdcp_qseecom.ko \
268	msm_hdcp.ko \
269	citadel-spi.ko \
270	qcom-i2c-pmic.ko \
271	qcom-spmi-pmic.ko \
272	st21nfc.ko \
273	st54j_se.ko \
274	qpnp-revid.ko \
275	devfreq_qcom_fw.ko \
276	adc_tm.ko \
277	msm_sps.ko \
278	qce50.ko \
279	qcedev-module.ko \
280	qcrypto.ko \
281	spmi-pmic-arb.ko \
282	cnss_utils.ko \
283	cnss_prealloc.ko \
284	cnss_nl.ko \
285	msm_sharedmem.ko \
286	phy-generic.ko \
287	phy-msm-ssusb-qmp.ko \
288	phy-msm-snps-hs.ko \
289	xhci-plat-hcd.ko \
290	rndis.ko \
291	usb_f_cdev.ko \
292	usb_f_ccid.ko \
293	dwc3.ko \
294	usb-dwc3-msm.ko \
295	usb_f_qdss.ko \
296	msm_gsi.ko \
297	ipa3.ko \
298	usb_f_gsi.ko \
299	usb_f_mtp.ko \
300	usb_f_ptp.ko \
301	roles.ko \
302	tcpm.ko \
303	logbuffer.ko \
304	pmic-voter.ko \
305	qpnp_pdphy.ko \
306	dwc3-haps.ko \
307	dwc3-of-simple.ko \
308	dwc3-qcom.ko \
309	touchscreen_tbn.ko \
310	vd6281_module.ko \
311	fpc1020_platform_tee.ko \
312	rtc-pm8xxx.ko \
313	i2c-qcom-geni.ko \
314	devfreq_devbw.ko \
315	msm_npu.ko \
316	qpnp-battery.ko \
317	of_batterydata.ko \
318	qpnp-smb5-charger.ko \
319	qpnp-qgauge.ko \
320	sm7250_bms.ko \
321	google_charger.ko \
322	google-battery.ko \
323	overheat_mitigation.ko \
324	p9221_charger.ko \
325	qti_qmi_sensor.ko \
326	bcl_pmic5.ko \
327	bcl_soc.ko \
328	qmi_cdev.ko \
329	lmh_dbg.ko \
330	msm_lmh_dcvs.ko \
331	regulator_aop_cdev.ko \
332	cpu_isolate.ko \
333	lmh_cpu_vdd_cdev.ko \
334	qcom-spmi-temp-alarm.ko \
335	thermal-tsens.ko \
336	slimbus.ko \
337	bluetooth_power.ko \
338	qcom_edac.ko \
339	qcom-cpufreq-hw.ko \
340	leds-qpnp-flash-common.ko \
341	leds-qpnp-flash-v2.ko \
342	of_slimbus.ko \
343	tz_log.ko \
344	google_wlan_mac.ko \
345	msm_ext_display.ko \
346	msm_qmp.ko \
347	governor_bw_hwmon.ko \
348	bimc-bwmon.ko \
349	governor_memlat.ko \
350	arm-memlat-mon.ko \
351	governor_cdsp_l3.ko \
352	qcom-vadc-common.ko \
353	qcom-spmi-adc5.ko \
354	pac193x.ko \
355	qcom_llcc_pmu.ko \
356	nvmem_qfprom.ko \
357	qcom-spmi-sdam.ko \
358	slim_msm_ngd.ko \
359	rpmsg_char.ko \
360	rmnet.ko \
361	usb-audio-qmi.ko \
362	msm-vidc.ko \
363	ebtables.ko \
364	ebtable_broute.ko \
365	sctp.ko \
366	sctp_diag.ko \
367	qrtr-smd.ko \
368	msm_drm.ko \
369	dm-user.ko \
370
371# system_ext.img
372BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
373
374BOARD_FLASH_BLOCK_SIZE := 131072
375
376BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp
377BOARD_ROOT_EXTRA_SYMLINKS += /mnt/vendor/persist:/persist
378
379include device/google/redbull-sepolicy/redbull-sepolicy.mk
380
381QCOM_BOARD_PLATFORMS += lito
382QC_PROP_ROOT := vendor/qcom/sm7250/proprietary
383QC_PROP_PATH := $(QC_PROP_ROOT)
384BOARD_HAVE_BLUETOOTH_QCOM := true
385BOARD_HAVE_QCOM_FM := false
386TARGET_USE_QTI_BT_SAR := true
387TARGET_USE_QTI_BT_CHANNEL_AVOIDANCE := true
388BOARD_USES_COMMON_BLUETOOTH_HAL := true
389
390# Camera
391TARGET_USES_AOSP := true
392BOARD_QTI_CAMERA_32BIT_ONLY := false
393CAMERA_DAEMON_NOT_PRESENT := true
394TARGET_USES_ION := true
395
396# GPS
397TARGET_NO_RPC := true
398TARGET_USES_HARDWARE_QCOM_GPS := false
399BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := default
400BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET := true
401
402# RenderScript
403OVERRIDE_RS_DRIVER := libRSDriver_adreno.so
404
405# Sensors
406TARGET_SUPPORT_DIRECT_REPORT := true
407
408# CHRE
409CHRE_DAEMON_ENABLED := true
410CHRE_DAEMON_LPMA_ENABLED := true
411CHRE_DAEMON_LOAD_INTO_SENSORSPD := true
412
413# wlan
414BOARD_WLAN_DEVICE := qcwcn
415BOARD_WPA_SUPPLICANT_DRIVER := NL80211
416BOARD_HOSTAPD_DRIVER := NL80211
417WIFI_DRIVER_DEFAULT := qca_cld3
418WPA_SUPPLICANT_VERSION := VER_0_8_X
419BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
420BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
421WIFI_HIDL_FEATURE_AWARE := true
422WIFI_HIDL_FEATURE_DUAL_INTERFACE:= true
423WIFI_FEATURE_WIFI_EXT_HAL := true
424WIFI_FEATURE_IMU_DETECTION := true
425WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
426
427# Audio
428BOARD_USES_ALSA_AUDIO := true
429AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
430AUDIO_FEATURE_ENABLED_SND_MONITOR := true
431AUDIO_FEATURE_ENABLED_USB_TUNNEL := true
432BOARD_SUPPORTS_SOUND_TRIGGER := true
433AUDIO_FEATURE_FLICKER_SENSOR_INPUT := true
434#SOUND_TRIGGER_FEATURE_LPMA_ENABLED := true
435AUDIO_FEATURE_ENABLED_MAXX_AUDIO := true
436AUDIO_FEATURE_ENABLED_AUDIO_THERMAL_LISTENER := true
437AUDIO_FEATURE_ENABLED_24BITS_CAMCORDER := true
438AUDIO_FEATURE_ENABLED_AUDIO_ZOOM := true
439AUDIO_FEATURE_ENABLED_INSTANCE_ID := true
440#Cirrus cs35l41 speaker amp
441AUDIO_FEATURE_ENABLED_CS35L41 := true
442AUDIO_FEATURE_ENABLED_CS35L41_CALIBRATION_TOOL := true
443AUDIO_FEATURE_ENABLED_SVA_MULTI_STAGE := true
444AUDIO_FEATURE_QSSI_COMPLIANCE := true
445
446# Audio hal flag
447TARGET_USES_HARDWARE_QCOM_AUDIO := true
448TARGET_USES_HARDWARE_QCOM_AUDIO_PLATFORM_8974 := true
449TARGET_USES_HARDWARE_QCOM_AUDIO_POSTPROC := true
450TARGET_USES_HARDWARE_QCOM_AUDIO_VOLUME_LISTENER := true
451TARGET_USES_HARDWARE_QCOM_AUDIO_GET_MMAP_DATA_FD := true
452TARGET_USES_HARDWARE_QCOM_AUDIO_APP_TYPE_CFG := true
453TARGET_USES_HARDWARE_QCOM_AUDIO_ACDB_INIT_V2_CVD := true
454TARGET_USES_HARDWARE_QCOM_AUDIO_MAX_TARGET_SPECIFIC_CHANNEL_CNT := "4"
455TARGET_USES_HARDWARE_QCOM_AUDIO_INCALL_MUSIC_ENABLED := true
456TARGET_USES_HARDWARE_QCOM_AUDIO_MULTIPLE_HW_VARIANTS_ENABLED := true
457TARGET_USES_HARDWARE_QCOM_AUDIO_INCALL_STEREO_CAPTURE_ENABLED := true
458
459# Graphics
460TARGET_USES_GRALLOC1 := true
461TARGET_USES_HWC2 := true
462
463# Display
464TARGET_USES_DISPLAY_RENDER_INTENTS := true
465TARGET_USES_COLOR_METADATA := true
466TARGET_USES_DRM_PP := true
467TARGET_HAS_WIDE_COLOR_DISPLAY := true
468TARGET_HAS_HDR_DISPLAY := true
469
470# Vendor Interface Manifest
471DEVICE_MANIFEST_FILE := device/google/redbull/manifest.xml
472ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
473# Omx is 32 bit only
474DEVICE_MANIFEST_FILE += device/google/redbull/manifest_omx.xml
475endif
476DEVICE_MATRIX_FILE := device/google/redbull/compatibility_matrix.xml
477
478# Use mke2fs to create ext4 images
479TARGET_USES_MKE2FS := true
480
481# dynamic partition
482BOARD_SUPER_PARTITION_SIZE := 9755951104
483BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
484ifneq ($(PRODUCT_BUILD_SYSTEM_IMAGE),false)
485BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += system
486endif
487ifneq ($(PRODUCT_BUILD_PRODUCT_IMAGE),false)
488BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += product
489endif
490ifneq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),false)
491BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += system_ext
492endif
493ifneq ($(PRODUCT_BUILD_VENDOR_IMAGE),false)
494BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += vendor
495endif
496
497#BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE is set to (5GB - 4MB)
498BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 5364514816
499
500# Set error limit to BOARD_SUPER_PARTITON_SIZE - 500MB
501BOARD_SUPER_PARTITION_ERROR_LIMIT := 9231663104
502
503BUILD_BROKEN_USES_BUILD_COPY_HEADERS := true
504
505-include device/google/redbull/soong/pixel_soong_config.mk
506
507# List of modules that should not load automatically
508PRODUCT_COPY_FILES += \
509    device/google/redbull/modules.blocklist:$(TARGET_COPY_OUT_VENDOR)/lib/modules/modules.blocklist \
510    device/google/redbull/init.insmod.charger.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.charger.cfg \
511
512# TARGET_BOOLOADER_BOARD_NAME sensitive common boilerplate
513
514TARGET_BOARD_NAME_DIR := device/google/$(TARGET_BOOTLOADER_BOARD_NAME)
515-include $(TARGET_BOARD_NAME_DIR:%/=%)-sepolicy/$(TARGET_BOOTLOADER_BOARD_NAME)-sepolicy.mk
516
517TARGET_BOARD_INFO_FILE := $(TARGET_BOARD_NAME_DIR)/board-info.txt
518TARGET_BOARD_COMMON_PATH := $(TARGET_BOARD_NAME_DIR)/sm7250
519
520# Common kernel file handling
521ifneq (,$(filter $(TARGET_DEVICE),bramble redfin))
522    TARGET_KERNEL_DIR := device/google/redbull-kernel
523else
524    TARGET_KERNEL_DIR := $(TARGET_BOARD_NAME_DIR:%/=%)-kernel
525endif
526
527# DTBO partition definitions
528ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
529    BOARD_PREBUILT_DTBOIMAGE := $(TARGET_KERNEL_DIR)/dtbo.img
530else
531    BOARD_PREBUILT_DTBOIMAGE := $(TARGET_KERNEL_DIR)/vintf/dtbo.img
532endif
533TARGET_FS_CONFIG_GEN := $(TARGET_BOARD_NAME_DIR)/config.fs
534
535# Kernel modules
536ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kasan, $(TARGET_PRODUCT)))
537    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/kasan
538else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_memory, $(TARGET_PRODUCT)))
539    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_memory
540else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_memory_accounting, $(TARGET_PRODUCT)))
541    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_memory_accounting
542BOARD_KERNEL_CMDLINE += page_owner=on
543else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_locking, $(TARGET_PRODUCT)))
544    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_locking
545else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_hang, $(TARGET_PRODUCT)))
546    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_hang
547else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_api, $(TARGET_PRODUCT)))
548    KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_api
549else
550    ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
551        KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)
552    else
553        KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/vintf
554    endif
555endif
556
557# Copy kheaders.ko to vendor/lib/modules for VTS test
558BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULE_DIR)/kheaders.ko
559
560KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko)
561KERNEL_MODULES_LOAD := $(strip $(shell cat $(firstword $(wildcard \
562        $(KERNEL_MODULE_DIR)/modules.load \
563        $(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)), \
564            $(TARGET_KERNEL_DIR)/vintf/modules.load,) \
565        $(TARGET_KERNEL_DIR)/modules.load))))
566
567# DTB
568BOARD_PREBUILT_DTBIMAGE_DIR := $(KERNEL_MODULE_DIR)
569
570ifeq (,$(BOOT_KERNEL_MODULES))
571    BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(KERNEL_MODULES)
572    BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(KERNEL_MODULES_LOAD)
573else
574    #
575    # BEWARE: This is a tuning exercise to get right, splitting between
576    # boot essential drivers, fastboot/recovery drivers, and the remainder
577    # used by Android, but not the blocklist (device specific drivers not
578    # common between platforms or drivers that must not be autoloaded) which
579    # are loaded later.
580    #
581    # BOOT_KERNEL_MODULES     - Modules loaded in first stage init.
582    # RECOVERY_KERNEL_MODULES - Additional modules loaded in recovery/fastbootd
583    #                           or in second stage init.
584    # file: modules.blocklist - Not autoloaded. loaded on demand product or HAL.
585    # Remainder               - In second stage init, but after recovery set;
586    #                           minus the blocklist.
587    #
588    BOOT_KERNEL_MODULES_FILTER := $(foreach m,$(BOOT_KERNEL_MODULES),%/$(m))
589    ifneq (,$(RECOVERY_KERNEL_MODULES))
590        RECOVERY_KERNEL_MODULES_FILTER := \
591            $(foreach m,$(RECOVERY_KERNEL_MODULES),%/$(m))
592    endif
593    BOARD_VENDOR_RAMDISK_KERNEL_MODULES += \
594            $(filter $(BOOT_KERNEL_MODULES_FILTER) \
595                     $(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES))
596
597    # ALL modules land in /vendor/lib/modules so they could be rmmod/insmod'd,
598    # and modules.list actually limits us to the ones we intend to load.
599    BOARD_VENDOR_KERNEL_MODULES := $(KERNEL_MODULES)
600    # To limit /vendor/lib/modules to just the ones loaded, use:
601    #
602    #   BOARD_VENDOR_KERNEL_MODULES := $(filter-out \
603    #       $(BOOT_KERNEL_MODULES_FILTER),$(KERNEL_MODULES))
604
605    # Group set of /vendor/lib/modules loading order to recovery modules first,
606    # then remainder, subtracting both recovery and boot modules.
607    BOARD_VENDOR_KERNEL_MODULES_LOAD := \
608            $(filter-out $(BOOT_KERNEL_MODULES_FILTER), \
609            $(filter $(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD)))
610    BOARD_VENDOR_KERNEL_MODULES_LOAD += \
611            $(filter-out $(BOOT_KERNEL_MODULES_FILTER) \
612                 $(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD))
613
614    # NB: Load order governed by modules.load and not by $(BOOT_KERNEL_MODULES)
615    BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := \
616            $(filter $(BOOT_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD))
617
618    ifneq (,$(RECOVERY_KERNEL_MODULES_FILTER))
619        # Group set of /vendor/lib/modules loading order to boot modules first,
620        # then remainder of recovery modules.
621        BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD := \
622            $(filter $(BOOT_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD))
623        BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD += \
624            $(filter-out $(BOOT_KERNEL_MODULES_FILTER), \
625            $(filter $(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD)))
626    endif
627endif
628
629BOARD_BUILD_VENDOR_RAMDISK_IMAGE := true
630
631# Testing related defines
632BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/b5r3-setup.sh
633