You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

633 lines
19 KiB

#
# Copyright (C) 2016 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
include build/make/target/board/BoardConfigMainlineCommon.mk
include build/make/target/board/BoardConfigPixelCommon.mk
TARGET_BOARD_PLATFORM := lito
USES_DEVICE_GOOGLE_REDBULL := true
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-a76
ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := generic
TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a76
endif
BUILD_BROKEN_DUP_RULES := true
BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8 androidboot.console=ttyMSM0 printk.devkmsg=on
BOARD_KERNEL_CMDLINE += msm_rtb.filter=0x237
BOARD_KERNEL_CMDLINE += ehci-hcd.park=3
BOARD_KERNEL_CMDLINE += service_locator.enable=1
BOARD_KERNEL_CMDLINE += androidboot.memcg=1 cgroup.memory=nokmem
BOARD_KERNEL_CMDLINE += lpm_levels.sleep_disabled=1 # STOPSHIP b/113233473
BOARD_KERNEL_CMDLINE += usbcore.autosuspend=7
BOARD_KERNEL_CMDLINE += androidboot.usbcontroller=a600000.dwc3 swiotlb=2048
BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc/1d84000.ufshc
BOARD_KERNEL_CMDLINE += loop.max_part=7
BOARD_KERNEL_CMDLINE += snd_soc_cs35l41_i2c.async_probe=1
BOARD_KERNEL_CMDLINE += i2c_qcom_geni.async_probe=1
BOARD_KERNEL_CMDLINE += st21nfc.async_probe=1
BOARD_KERNEL_CMDLINE += spmi_pmic_arb.async_probe=1
BOARD_KERNEL_CMDLINE += ufs_qcom.async_probe=1
BOARD_KERNEL_BASE := 0x00000000
BOARD_KERNEL_PAGESIZE := 4096
BOARD_INCLUDE_DTB_IN_BOOTIMG := true
BOARD_BOOT_HEADER_VERSION := 3
BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
BOARD_DTBOIMG_PARTITION_SIZE := 16777216
TARGET_NO_KERNEL := false
BOARD_USES_GENERIC_KERNEL_IMAGE := true
BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true
ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false)
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true
endif
BOARD_USES_METADATA_PARTITION := true
AB_OTA_UPDATER := true
ifneq ($(PRODUCT_BUILD_SYSTEM_IMAGE),false)
AB_OTA_PARTITIONS += system
AB_OTA_PARTITIONS += vbmeta_system
endif
ifneq ($(PRODUCT_BUILD_PRODUCT_IMAGE),false)
AB_OTA_PARTITIONS += product
endif
ifneq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),false)
AB_OTA_PARTITIONS += system_ext
endif
ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false)
AB_OTA_PARTITIONS += boot
endif
ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false)
AB_OTA_PARTITIONS += vendor_boot
AB_OTA_PARTITIONS += dtbo
endif
ifneq ($(PRODUCT_BUILD_VBMETA_IMAGE),false)
AB_OTA_PARTITIONS += vbmeta
endif
# Partitions (listed in the file) to be wiped under recovery.
TARGET_RECOVERY_WIPE := device/google/redbull/recovery.wipe
TARGET_RECOVERY_FSTAB := device/google/redbull/fstab.hardware
TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
TARGET_RECOVERY_UI_LIB := \
librecovery_ui_pixel \
libfstab
# Enable chain partition for system.
BOARD_AVB_VBMETA_SYSTEM := system system_ext product
BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1
# Enable chained vbmeta for boot images
BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048
BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2
# product.img
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
# userdata.img
TARGET_USERIMAGES_USE_F2FS := true
BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240
BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
# persist.img
BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432
BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4
# boot.img
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x06000000
# vendor_boot.img
BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 0x06000000
# Allow LZ4 compression
BOARD_RAMDISK_USE_LZ4 := true
# Specify BOOT_KERNEL_MODULES
#
# modules for first stage in vendor_boot.img, remainder goes to vendor.img.
# This list is a superset of all the possible modules required, and is
# filtered and ordered as per the supplied kernel's modules.load file.
# Any modules that do not exist will be silently dropped. This is required
# because some kernel configurations may have extra debug or test modules,
# make sure any required to be loaded during first stage init are listed.
BOOT_KERNEL_MODULES := \
msm_ipc_logging.ko \
qtee_shm_bridge.ko \
qcom_hwspinlock.ko \
smem.ko \
msm_minidump.ko \
watchdog_v2.ko \
early_random.ko \
qcom-pdc.ko \
cmd-db.ko \
qcom_rpmh.ko \
phy-qcom-ufs.ko \
phy-qcom-ufs-qrbtc-sdm845.ko \
phy-qcom-ufs-qmp-v4.ko \
phy-qcom-ufs-qmp-v4-lito.ko \
phy-qcom-ufs-qmp-v3-660.ko \
phy-qcom-ufs-qmp-v3.ko \
pinctrl-msm.ko \
pinctrl-lito.ko \
qcom-spmi-wled.ko \
msm_bus.ko \
clk-qcom.ko \
clk-aop-qmp.ko \
clk-rpmh.ko \
gcc-lito.ko \
clk-spmi-pmic-div.ko \
qrtr.ko \
qmi_helpers.ko \
secure_buffer.ko \
heap_mem_ext_v01.ko \
subsystem_notif.ko \
ramdump.ko \
msm_memshare.ko \
msm_bus_dbg_rpmh.ko \
msm_bus_rpmh.ko \
rpmh-regulator.ko \
qcom-geni-se.ko \
msm_geni_serial.ko \
msm_dma_iommu_mapping.ko \
arm-smmu-debug.ko \
iommu-logger.ko \
arm-smmu.ko \
ufshcd-core.ko \
ufshcd-pltfrm.ko \
ufs_qcom.ko \
spi-geni-qcom.ko \
i2c-qcom-geni.ko \
ion-alloc.ko \
msm_rtb.ko \
pinctrl-spmi-gpio.ko \
pinctrl-spmi-mpp.ko \
pwm-qti-lpg.ko \
debugcc-lito.ko \
dispcc-lito.ko \
gpucc-lito.ko \
npucc-lito.ko \
videocc-lito.ko \
virt-dma.ko \
gpi.ko \
msm_scm.ko \
mdt_loader.ko \
smem_state.ko \
smp2p.ko \
qcom_ipcc.ko \
llcc-slice.ko \
llcc-lito.ko \
core_hang_detect.ko \
gladiator_hang_detect.ko \
minidump_log.ko \
memory_dump_v2.ko \
dcc_v2.ko \
service-locator.ko \
service-notifier.ko \
subsystem-restart.ko \
peripheral-loader.ko \
subsys-pil-tz.ko \
cdsp-loader.ko \
qseecom.ko \
smcinvoke.ko \
microdump_collector.ko \
eud.ko \
qcom_socinfo.ko \
fsa4480-i2c.ko \
rpmsg_core.ko \
qcom_glink_native.ko \
qcom_glink_smem.ko \
qcom_glink_spss.ko \
glink_probe.ko \
glink_pkt.ko \
smp2p_sleepstate.ko \
event_timer.ko \
lpm-stats.ko \
msm_pm.ko \
rpmh_master_stat.ko \
system_pm.ko \
rpm_stats.ko \
ddr_stats.ko \
cdsprm.ko \
msm_icnss.ko \
modemsmem.ko \
qpnp-amoled-regulator.ko \
refgen.ko \
slg51000-regulator.ko \
tps-regulator.ko \
msm_rng.ko \
adsprpc_compat.ko \
adsprpc.ko \
fastcvpd.ko \
rdbg.ko \
qpnp-power-on.ko \
msm-poweroff.ko \
usb_f_diag.ko \
diagchar.ko \
governor_bw_vbif.ko \
governor_gpubw_mon.ko \
governor_msm_adreno_tz.ko \
msm_adreno.ko \
regmap-spmi.ko \
google-bms.ko \
at24.ko \
hdcp_qseecom.ko \
msm_hdcp.ko \
citadel-spi.ko \
qcom-i2c-pmic.ko \
qcom-spmi-pmic.ko \
st21nfc.ko \
st54j_se.ko \
qpnp-revid.ko \
devfreq_qcom_fw.ko \
adc_tm.ko \
msm_sps.ko \
qce50.ko \
qcedev-module.ko \
qcrypto.ko \
spmi-pmic-arb.ko \
cnss_utils.ko \
cnss_prealloc.ko \
cnss_nl.ko \
msm_sharedmem.ko \
phy-generic.ko \
phy-msm-ssusb-qmp.ko \
phy-msm-snps-hs.ko \
xhci-plat-hcd.ko \
rndis.ko \
usb_f_cdev.ko \
usb_f_ccid.ko \
dwc3.ko \
usb-dwc3-msm.ko \
usb_f_qdss.ko \
msm_gsi.ko \
ipa3.ko \
usb_f_gsi.ko \
usb_f_mtp.ko \
usb_f_ptp.ko \
roles.ko \
tcpm.ko \
logbuffer.ko \
pmic-voter.ko \
qpnp_pdphy.ko \
dwc3-haps.ko \
dwc3-of-simple.ko \
dwc3-qcom.ko \
touchscreen_tbn.ko \
vd6281_module.ko \
fpc1020_platform_tee.ko \
rtc-pm8xxx.ko \
i2c-qcom-geni.ko \
devfreq_devbw.ko \
msm_npu.ko \
qpnp-battery.ko \
of_batterydata.ko \
qpnp-smb5-charger.ko \
qpnp-qgauge.ko \
sm7250_bms.ko \
google_charger.ko \
google-battery.ko \
overheat_mitigation.ko \
p9221_charger.ko \
qti_qmi_sensor.ko \
bcl_pmic5.ko \
bcl_soc.ko \
qmi_cdev.ko \
lmh_dbg.ko \
msm_lmh_dcvs.ko \
regulator_aop_cdev.ko \
cpu_isolate.ko \
lmh_cpu_vdd_cdev.ko \
qcom-spmi-temp-alarm.ko \
thermal-tsens.ko \
slimbus.ko \
bluetooth_power.ko \
qcom_edac.ko \
qcom-cpufreq-hw.ko \
leds-qpnp-flash-common.ko \
leds-qpnp-flash-v2.ko \
of_slimbus.ko \
tz_log.ko \
google_wlan_mac.ko \
msm_ext_display.ko \
msm_qmp.ko \
governor_bw_hwmon.ko \
bimc-bwmon.ko \
governor_memlat.ko \
arm-memlat-mon.ko \
governor_cdsp_l3.ko \
qcom-vadc-common.ko \
qcom-spmi-adc5.ko \
pac193x.ko \
qcom_llcc_pmu.ko \
nvmem_qfprom.ko \
qcom-spmi-sdam.ko \
slim_msm_ngd.ko \
rpmsg_char.ko \
rmnet.ko \
usb-audio-qmi.ko \
msm-vidc.ko \
ebtables.ko \
ebtable_broute.ko \
sctp.ko \
sctp_diag.ko \
qrtr-smd.ko \
msm_drm.ko \
dm-user.ko \
# system_ext.img
BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
BOARD_FLASH_BLOCK_SIZE := 131072
BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp
BOARD_ROOT_EXTRA_SYMLINKS += /mnt/vendor/persist:/persist
include device/google/redbull-sepolicy/redbull-sepolicy.mk
QCOM_BOARD_PLATFORMS += lito
QC_PROP_ROOT := vendor/qcom/sm7250/proprietary
QC_PROP_PATH := $(QC_PROP_ROOT)
BOARD_HAVE_BLUETOOTH_QCOM := true
BOARD_HAVE_QCOM_FM := false
TARGET_USE_QTI_BT_SAR := true
TARGET_USE_QTI_BT_CHANNEL_AVOIDANCE := true
BOARD_USES_COMMON_BLUETOOTH_HAL := true
# Camera
TARGET_USES_AOSP := true
BOARD_QTI_CAMERA_32BIT_ONLY := false
CAMERA_DAEMON_NOT_PRESENT := true
TARGET_USES_ION := true
# GPS
TARGET_NO_RPC := true
TARGET_USES_HARDWARE_QCOM_GPS := false
BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE := default
BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET := true
# RenderScript
OVERRIDE_RS_DRIVER := libRSDriver_adreno.so
# Sensors
TARGET_SUPPORT_DIRECT_REPORT := true
# CHRE
CHRE_DAEMON_ENABLED := true
CHRE_DAEMON_LPMA_ENABLED := true
CHRE_DAEMON_LOAD_INTO_SENSORSPD := true
# wlan
BOARD_WLAN_DEVICE := qcwcn
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_HOSTAPD_DRIVER := NL80211
WIFI_DRIVER_DEFAULT := qca_cld3
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
WIFI_HIDL_FEATURE_AWARE := true
WIFI_HIDL_FEATURE_DUAL_INTERFACE:= true
WIFI_FEATURE_WIFI_EXT_HAL := true
WIFI_FEATURE_IMU_DETECTION := true
WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
# Audio
BOARD_USES_ALSA_AUDIO := true
AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
AUDIO_FEATURE_ENABLED_USB_TUNNEL := true
BOARD_SUPPORTS_SOUND_TRIGGER := true
AUDIO_FEATURE_FLICKER_SENSOR_INPUT := true
#SOUND_TRIGGER_FEATURE_LPMA_ENABLED := true
AUDIO_FEATURE_ENABLED_MAXX_AUDIO := true
AUDIO_FEATURE_ENABLED_AUDIO_THERMAL_LISTENER := true
AUDIO_FEATURE_ENABLED_24BITS_CAMCORDER := true
AUDIO_FEATURE_ENABLED_AUDIO_ZOOM := true
AUDIO_FEATURE_ENABLED_INSTANCE_ID := true
#Cirrus cs35l41 speaker amp
AUDIO_FEATURE_ENABLED_CS35L41 := true
AUDIO_FEATURE_ENABLED_CS35L41_CALIBRATION_TOOL := true
AUDIO_FEATURE_ENABLED_SVA_MULTI_STAGE := true
AUDIO_FEATURE_QSSI_COMPLIANCE := true
# Audio hal flag
TARGET_USES_HARDWARE_QCOM_AUDIO := true
TARGET_USES_HARDWARE_QCOM_AUDIO_PLATFORM_8974 := true
TARGET_USES_HARDWARE_QCOM_AUDIO_POSTPROC := true
TARGET_USES_HARDWARE_QCOM_AUDIO_VOLUME_LISTENER := true
TARGET_USES_HARDWARE_QCOM_AUDIO_GET_MMAP_DATA_FD := true
TARGET_USES_HARDWARE_QCOM_AUDIO_APP_TYPE_CFG := true
TARGET_USES_HARDWARE_QCOM_AUDIO_ACDB_INIT_V2_CVD := true
TARGET_USES_HARDWARE_QCOM_AUDIO_MAX_TARGET_SPECIFIC_CHANNEL_CNT := "4"
TARGET_USES_HARDWARE_QCOM_AUDIO_INCALL_MUSIC_ENABLED := true
TARGET_USES_HARDWARE_QCOM_AUDIO_MULTIPLE_HW_VARIANTS_ENABLED := true
TARGET_USES_HARDWARE_QCOM_AUDIO_INCALL_STEREO_CAPTURE_ENABLED := true
# Graphics
TARGET_USES_GRALLOC1 := true
TARGET_USES_HWC2 := true
# Display
TARGET_USES_DISPLAY_RENDER_INTENTS := true
TARGET_USES_COLOR_METADATA := true
TARGET_USES_DRM_PP := true
TARGET_HAS_WIDE_COLOR_DISPLAY := true
TARGET_HAS_HDR_DISPLAY := true
# Vendor Interface Manifest
DEVICE_MANIFEST_FILE := device/google/redbull/manifest.xml
ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
# Omx is 32 bit only
DEVICE_MANIFEST_FILE += device/google/redbull/manifest_omx.xml
endif
DEVICE_MATRIX_FILE := device/google/redbull/compatibility_matrix.xml
# Use mke2fs to create ext4 images
TARGET_USES_MKE2FS := true
# dynamic partition
BOARD_SUPER_PARTITION_SIZE := 9755951104
BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
ifneq ($(PRODUCT_BUILD_SYSTEM_IMAGE),false)
BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += system
endif
ifneq ($(PRODUCT_BUILD_PRODUCT_IMAGE),false)
BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += product
endif
ifneq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),false)
BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += system_ext
endif
ifneq ($(PRODUCT_BUILD_VENDOR_IMAGE),false)
BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST += vendor
endif
#BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE is set to (5GB - 4MB)
BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 5364514816
# Set error limit to BOARD_SUPER_PARTITON_SIZE - 500MB
BOARD_SUPER_PARTITION_ERROR_LIMIT := 9231663104
BUILD_BROKEN_USES_BUILD_COPY_HEADERS := true
-include device/google/redbull/soong/pixel_soong_config.mk
# List of modules that should not load automatically
PRODUCT_COPY_FILES += \
device/google/redbull/modules.blocklist:$(TARGET_COPY_OUT_VENDOR)/lib/modules/modules.blocklist \
device/google/redbull/init.insmod.charger.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.charger.cfg \
# TARGET_BOOLOADER_BOARD_NAME sensitive common boilerplate
TARGET_BOARD_NAME_DIR := device/google/$(TARGET_BOOTLOADER_BOARD_NAME)
-include $(TARGET_BOARD_NAME_DIR:%/=%)-sepolicy/$(TARGET_BOOTLOADER_BOARD_NAME)-sepolicy.mk
TARGET_BOARD_INFO_FILE := $(TARGET_BOARD_NAME_DIR)/board-info.txt
TARGET_BOARD_COMMON_PATH := $(TARGET_BOARD_NAME_DIR)/sm7250
# Common kernel file handling
ifneq (,$(filter $(TARGET_DEVICE),bramble redfin))
TARGET_KERNEL_DIR := device/google/redbull-kernel
else
TARGET_KERNEL_DIR := $(TARGET_BOARD_NAME_DIR:%/=%)-kernel
endif
# DTBO partition definitions
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
BOARD_PREBUILT_DTBOIMAGE := $(TARGET_KERNEL_DIR)/dtbo.img
else
BOARD_PREBUILT_DTBOIMAGE := $(TARGET_KERNEL_DIR)/vintf/dtbo.img
endif
TARGET_FS_CONFIG_GEN := $(TARGET_BOARD_NAME_DIR)/config.fs
# Kernel modules
ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kasan, $(TARGET_PRODUCT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/kasan
else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_memory, $(TARGET_PRODUCT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_memory
else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_memory_accounting, $(TARGET_PRODUCT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_memory_accounting
BOARD_KERNEL_CMDLINE += page_owner=on
else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_locking, $(TARGET_PRODUCT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_locking
else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_hang, $(TARGET_PRODUCT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_hang
else ifeq (,$(filter-out $(TARGET_BOOTLOADER_BOARD_NAME)_kernel_debug_api, $(TARGET_PRODUCT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/debug_api
else
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)
else
KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)/vintf
endif
endif
# Copy kheaders.ko to vendor/lib/modules for VTS test
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULE_DIR)/kheaders.ko
KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko)
KERNEL_MODULES_LOAD := $(strip $(shell cat $(firstword $(wildcard \
$(KERNEL_MODULE_DIR)/modules.load \
$(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)), \
$(TARGET_KERNEL_DIR)/vintf/modules.load,) \
$(TARGET_KERNEL_DIR)/modules.load))))
# DTB
BOARD_PREBUILT_DTBIMAGE_DIR := $(KERNEL_MODULE_DIR)
ifeq (,$(BOOT_KERNEL_MODULES))
BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(KERNEL_MODULES)
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(KERNEL_MODULES_LOAD)
else
#
# BEWARE: This is a tuning exercise to get right, splitting between
# boot essential drivers, fastboot/recovery drivers, and the remainder
# used by Android, but not the blocklist (device specific drivers not
# common between platforms or drivers that must not be autoloaded) which
# are loaded later.
#
# BOOT_KERNEL_MODULES - Modules loaded in first stage init.
# RECOVERY_KERNEL_MODULES - Additional modules loaded in recovery/fastbootd
# or in second stage init.
# file: modules.blocklist - Not autoloaded. loaded on demand product or HAL.
# Remainder - In second stage init, but after recovery set;
# minus the blocklist.
#
BOOT_KERNEL_MODULES_FILTER := $(foreach m,$(BOOT_KERNEL_MODULES),%/$(m))
ifneq (,$(RECOVERY_KERNEL_MODULES))
RECOVERY_KERNEL_MODULES_FILTER := \
$(foreach m,$(RECOVERY_KERNEL_MODULES),%/$(m))
endif
BOARD_VENDOR_RAMDISK_KERNEL_MODULES += \
$(filter $(BOOT_KERNEL_MODULES_FILTER) \
$(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES))
# ALL modules land in /vendor/lib/modules so they could be rmmod/insmod'd,
# and modules.list actually limits us to the ones we intend to load.
BOARD_VENDOR_KERNEL_MODULES := $(KERNEL_MODULES)
# To limit /vendor/lib/modules to just the ones loaded, use:
#
# BOARD_VENDOR_KERNEL_MODULES := $(filter-out \
# $(BOOT_KERNEL_MODULES_FILTER),$(KERNEL_MODULES))
# Group set of /vendor/lib/modules loading order to recovery modules first,
# then remainder, subtracting both recovery and boot modules.
BOARD_VENDOR_KERNEL_MODULES_LOAD := \
$(filter-out $(BOOT_KERNEL_MODULES_FILTER), \
$(filter $(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD)))
BOARD_VENDOR_KERNEL_MODULES_LOAD += \
$(filter-out $(BOOT_KERNEL_MODULES_FILTER) \
$(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD))
# NB: Load order governed by modules.load and not by $(BOOT_KERNEL_MODULES)
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := \
$(filter $(BOOT_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD))
ifneq (,$(RECOVERY_KERNEL_MODULES_FILTER))
# Group set of /vendor/lib/modules loading order to boot modules first,
# then remainder of recovery modules.
BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD := \
$(filter $(BOOT_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD))
BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD += \
$(filter-out $(BOOT_KERNEL_MODULES_FILTER), \
$(filter $(RECOVERY_KERNEL_MODULES_FILTER),$(KERNEL_MODULES_LOAD)))
endif
endif
BOARD_BUILD_VENDOR_RAMDISK_IMAGE := true
# Testing related defines
BOARD_PERFSETUP_SCRIPT := platform_testing/scripts/perf-setup/b5r3-setup.sh