# # 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