#
-# Copyright (C) 2020 The LineageOS Project
+# Copyright (C) 2020-2021 The LineageOS Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
COMMON_PATH := device/motorola/exynos9610-common
-# Soong namespaces
-PRODUCT_SOONG_NAMESPACES += $(COMMON_PATH)
-
-# Include path
+## Include path
TARGET_SPECIFIC_HEADER_PATH := $(COMMON_PATH)/include
-BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := hardware/samsung_slsi/libbt/include
+## Inherit proprietary vendor configuartion
+include vendor/motorola/exynos9610-common/BoardConfigVendor.mk
-# Platform
-TARGET_BOARD_PLATFORM := exynos9610
-TARGET_SOC := exynos9610
-TARGET_BOOTLOADER_BOARD_NAME := exynos9610
+# BUILD_BROKEN_*
+BUILD_BROKEN_DUP_RULES := true
+BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
+
+## A/B
+AB_OTA_UPDATER := true
-# Architecture
+AB_OTA_PARTITIONS += \
+ boot \
+ dtbo \
+ system \
+ vbmeta \
+ vendor
+
+## Architecture
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_VARIANT := generic
TARGET_CPU_VARIANT_RUNTIME := cortex-a73
-# Secondary Architecture
+## Architecture (Secondary)
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_VARIANT := generic
TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a53
-# Binder
-TARGET_USES_64_BIT_BINDER := true
+## Bluetooth
+BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := $(COMMON_PATH)/bluetooth
+BOARD_HAVE_BLUETOOTH_SLSI := true
+## Boot Image
# Extracted with libbootimg
-BOARD_KERNEL_CMDLINE := loop.max_part=7
+BOARD_BOOTIMG_HEADER_VERSION := 1
BOARD_KERNEL_BASE := 0x10000000
+BOARD_KERNEL_CMDLINE := loop.max_part=7 androidboot.boot_devices=13520000.ufs
BOARD_KERNEL_OFFSET := 0x00008000
+BOARD_KERNEL_PAGESIZE := 2048
BOARD_RAMDISK_OFFSET := 0x00000000
-BOARD_TAGS_OFFSET := 0x00000000
BOARD_SECOND_OFFSET := 0x00000000
-BOARD_KERNEL_PAGESIZE := 2048
-BOARD_BOOTIMG_HEADER_VERSION := 1
+BOARD_TAGS_OFFSET := 0x00000000
BOARD_MKBOOTIMG_ARGS := --base $(BOARD_KERNEL_BASE) --pagesize $(BOARD_KERNEL_PAGESIZE) --kernel_offset $(BOARD_KERNEL_OFFSET) --second_offset $(BOARD_SECOND_OFFSET) --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
-BOARD_KERNEL_SEPARATED_DTBO := true
-BOARD_DTBO_CFG := $(COMMON_PATH)/configs/dtboimg.cfg
+## Bootloader
TARGET_BOOTLOADER_IS_2ND := true
-# Kernel
-TARGET_KERNEL_ARCH := arm64
-TARGET_KERNEL_HEADER_ARCH := arm64
-TARGET_KERNEL_CLANG_COMPILE := true
-TARGET_KERNEL_SOURCE := kernel/motorola/exynos9610
+## Display
+TARGET_SCREEN_DENSITY := 420
+
+## DTBO
+BOARD_DTBO_CFG := $(COMMON_PATH)/configs/dtboimg.cfg
+BOARD_KERNEL_SEPARATED_DTBO := true
+
+## Filesystem
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+TARGET_COPY_OUT_VENDOR := vendor
+TARGET_FS_CONFIG_GEN += $(COMMON_PATH)/config.fs
+TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_USERIMAGES_USE_F2FS := true
+
+## FM Radio
+BOARD_HAVE_SLSI_FM := true
+
+## Kernel
BOARD_KERNEL_IMAGE_NAME := Image
+TARGET_KERNEL_CLANG_VERSION := r416183b
+TARGET_KERNEL_CLANG_PATH := $(abspath .)/prebuilts/clang/kernel/$(HOST_PREBUILT_TAG)/clang-$(TARGET_KERNEL_CLANG_VERSION)
+TARGET_KERNEL_LLVM_BINUTILS := false
+TARGET_KERNEL_SOURCE := kernel/motorola/exynos9610
-# partitions
+## Lineage Health
+TARGET_HEALTH_CHARGING_CONTROL_CHARGING_ENABLED := 0
+TARGET_HEALTH_CHARGING_CONTROL_CHARGING_DISABLED := 1
+TARGET_HEALTH_CHARGING_CONTROL_SUPPORTS_BYPASS := false
+TARGET_HEALTH_CHARGING_CONTROL_SUPPORTS_TOGGLE := true
+TARGET_HEALTH_CHARGING_CONTROL_SUPPORTS_DEADLINE := false
+
+## Manifest
+DEVICE_MANIFEST_FILE := $(COMMON_PATH)/manifest.xml
+
+## Partitions
BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472
-BOARD_VENDORIMAGE_PARTITION_SIZE := 805306368
-BOARD_USERDATAIMAGE_PARTITION_SIZE := 118974455808
BOARD_DTBOIMG_PARTITION_SIZE := 1048576
-BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
BOARD_FLASH_BLOCK_SIZE := 131072 # (BOARD_KERNEL_PAGESIZE * 64)
-TARGET_USES_MKE2FS := true
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 118974455808
BOARD_USES_METADATA_PARTITION := true
-BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
-TARGET_COPY_OUT_VENDOR := vendor
+BOARD_VENDORIMAGE_PARTITION_SIZE := 805306368
-# RIL
-ENABLE_VENDOR_RIL_SERVICE := true
+## Platform
+TARGET_BOARD_PLATFORM := exynos9610
+TARGET_BOOTLOADER_BOARD_NAME := exynos9610
+TARGET_SOC := exynos9610
-# Recovery
+## Properties
+BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
+TARGET_PRODUCT_PROP += $(COMMON_PATH)/product.prop
+TARGET_SYSTEM_PROP += $(COMMON_PATH)/system.prop
+TARGET_VENDOR_PROP += $(COMMON_PATH)/vendor.prop
+
+## Recovery
BOARD_USES_RECOVERY_AS_BOOT := true
TARGET_NO_RECOVERY := true
TARGET_RECOVERY_FSTAB := $(COMMON_PATH)/recovery.fstab
TARGET_RECOVERY_PIXEL_FORMAT := "ABGR_8888"
-TARGET_USERIMAGES_USE_EXT4 := true
-TARGET_USERIMAGES_USE_F2FS := true
-TARGET_USES_MKE2FS := true
-# Security
-VENDOR_SECURITY_PATCH := 2021-04-01
+## RIL
+ENABLE_VENDOR_RIL_SERVICE := true
+
+## Security
+VENDOR_SECURITY_PATCH := 2022-05-01
-# Verified Boot
+## SELinux
+BOARD_SEPOLICY_TEE_FLAVOR := mobicore
+include device/lineage/sepolicy/exynos/sepolicy.mk
+include device/samsung_slsi/sepolicy/sepolicy.mk
+
+PRODUCT_PRIVATE_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/private
+BOARD_VENDOR_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/vendor
+
+## Soong Namespace
+PRODUCT_SOONG_NAMESPACES += $(COMMON_PATH)
+
+## Treble
+BOARD_VNDK_VERSION := current
+
+## Verified Boot
BOARD_AVB_ENABLE := true
-BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag
-BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 2
+BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3
+BOARD_AVB_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
-# WIFI
+## Wi-Fi
BOARD_WLAN_DEVICE := slsi
-WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_slsi
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_slsi
-WIFI_HIDL_FEATURE_AWARE := true
WIFI_HIDL_FEATURE_DUAL_INTERFACE := true
-
-BOARD_HAVE_BLUETOOTH_SLSI := true
+WPA_SUPPLICANT_VERSION := VER_0_8_X
PRODUCT_CFI_INCLUDE_PATHS += hardware/samsung_slsi/scsc_wifibt/wpa_supplicant_lib
-# Properties
-BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
-
-# Treble
-BOARD_VNDK_VERSION := current
-
-# Audio
-USE_XML_AUDIO_POLICY_CONF := 1
-
-# sepolicy
-BOARD_SEPOLICY_TEE_FLAVOR := mobicore
-include device/samsung_slsi/sepolicy/sepolicy.mk
-
-BOARD_PLAT_PRIVATE_SEPOLICY_DIR := $(COMMON_PATH)/sepolicy/private
-
-# Properties
-TARGET_SYSTEM_PROP += $(COMMON_PATH)/system.prop
-TARGET_VENDOR_PROP += $(COMMON_PATH)/vendor.prop
-
-# FMRadio
-BOARD_HAVE_SLSI_FM := true
-
-# Filesystem
-TARGET_FS_CONFIG_GEN += $(COMMON_PATH)/config.fs
-
-# Manifest
-DEVICE_MANIFEST_FILE := $(COMMON_PATH)/manifest.xml
-
-# Display
-TARGET_SCREEN_DENSITY := 480
-
-# Inherit from the proprietary version
--include vendor/motorola/exynos9610-common/BoardConfigVendor.mk
+## BSP (Must be included last)
+include hardware/samsung_slsi-linaro/config/BoardConfig9610.mk