#@TYPE: Machine
#@NAME: ccmp15-dvk
#@DESCRIPTION: Configuration for Digi ConnectCore MP15 DVK
#@NEEDED_BSPLAYERS: layers/meta-digi

# Include the machine configuration for Digi's ConnectCore MP1.
include conf/machine/include/ccmp1.inc

DIGI_SOM = "ccmp15"

# =========================================================================
# Chip architecture
# =========================================================================
DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
MACHINEOVERRIDES = "arm:armv7ve:stcommon:stm32mpcommon:stm32mp1common:${DIGI_FAMILY}:${DIGI_SOM}:ccmp15-dvk"

# =========================================================================
# boot device
# =========================================================================
# Configure the list of boards that enable NAND/SDCARD
DEVICE_BOARD_ENABLE:NAND   += "ccmp15-dvk"
DEVICE_BOARD_ENABLE:SDCARD += "${@bb.utils.contains('BOOTDEVICE_LABELS', 'sdcard', 'ccmp15-dvk', '', d)}"

# =========================================================================
# U-Boot configs
# =========================================================================
# Last one is the default (the one the symlinks point at)
UBOOT_CONFIG = "ccmp15-dvk"
UBOOT_CONFIG[ccmp15-dvk] = "ccmp15-dvk_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"

# Platform U-Boot settings
UBOOT_DTB_NAME = "ccmp15-dvk.dtb"

# =========================================================================
# Machine settings
# =========================================================================
# Define list of devicetree per board
STM32MP_DEVICETREE ??= "ccmp15-dvk"
# Extra DTB for board - need to specify it with .dtb ...
STM32MP_KERNEL_DEVICETREE:ccmp15-dvk += " \
    ccmp157-dvk.dtb \
    _ov_board_can1_ccmp15-dvk.dtbo \
    _ov_board_can2_ccmp15-dvk.dtbo \
    _ov_board_eth0-10-100_ccmp15-dvk.dtbo \
    _ov_board_fusion10-lvds_ccmp15-dvk.dtbo \
    _ov_board_fusion7-parallel_ccmp15-dvk.dtbo \
    _ov_board_g101evn010-lvds_ccmp15-dvk.dtbo \
    _ov_board_mikroe-accel2-click_ccmp15-dvk.dtbo \
    _ov_board_mikroe-gyro-click_ccmp15-dvk.dtbo \
    _ov_board_mikroe-i2c-to-spi-click_ccmp15-dvk.dtbo \
    _ov_board_v1_ccmp15-dvk.dtbo \
    _ov_board_v2_ccmp15-dvk.dtbo \
    _ov_som_bt_ccmp15.dtbo \
    _ov_som_bt_test_ccmp15.dtbo \
    _ov_som_m4_ccmp15.dtbo \
    _ov_som_mca_ccmp15.dtbo \
    _ov_som_wifi_ccmp15.dtbo \
"
# Set DTB load address to U-Boot fdt_addr_r
UBOOT_DTB_LOADADDRESS = "${@bb.utils.contains('TRUSTFENCE_FIT_IMG', '1', '0xc4000000', '', d)}"

# =========================================================================
# Machine features
# =========================================================================
MACHINE_FEATURES += "bluetooth"
MACHINE_FEATURES += "wifi"
MACHINE_FEATURES += "gpu"

# =========================================================================
# Firmware
# =========================================================================
MACHINE_FIRMWARE:append = " firmware-murata firmware-murata-mfgtest"

MACHINE_EXTRA_RRECOMMENDS += " \
    ${MACHINE_FIRMWARE} \
"

# =========================================================================
# Image
# =========================================================================
# Image FS types
IMAGE_FSTYPES += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
                                       "tar.bz2 boot.ubifs recovery.ubifs squashfs", \
                                       "tar.bz2 ubifs boot.ubifs recovery.ubifs", d)}'

# Default image for install scripts
DEFAULT_IMAGE_NAME ?= "dey-image-webkit"

# For populate_sdk, gcc-arm-none-eabi_9 has a python2 dependency, so we remove it.
ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"

# =========================================================================
# flashlayout
# =========================================================================
# Define the config labels to use to generate flashlayout file

# =========================================================================
# extlinux configuration
# =========================================================================
# As example, modify the default boot config for each target to M4 config

# =========================================================================
# Debug trace
# =========================================================================
# activate/deactivate the debug and trace on boot stage
ST_DEBUG_TRACE = "0"

# =========================================================================
# optee
# =========================================================================
# Map OPTEE configuration to device tree list
OPTEE_CONF = "ccmp15-dvk"

# =========================================================================
# Flashlayouts
# =========================================================================

# =========================================================================
# Kernel
# =========================================================================
KERNEL_IMAGETYPE = "${@bb.utils.contains('TRUSTFENCE_FIT_IMG', '1', 'fitImage', 'zImage', d)}"
KERNEL_CLASSES = "${@bb.utils.contains('TRUSTFENCE_FIT_IMG', '1', 'kernel-fitimage', 'kernel-uimage', d)}"
KERNEL_ALT_IMAGETYPE = "Image vmlinux"
KERNEL_DEFCONFIG ?= "arch/arm/configs/ccmp1_defconfig"

# =========================================================================
# DEY settings
# =========================================================================
IMAGE_CLASSES = "image_types_digi image_types-stubi"

# mkfs.ubifs parameters for boot partition (the one holding kernel and device tree files)
# Max LEB count (-c 255) calculated for a partition of up to 32 MiB considering 128 KiB erase-block size.
MKUBIFS_BOOT_ARGS ?= "-m 2048 -e 126976 -c 255"

# mkfs.ubifs parameters for rootfs partition
# Max LEB count (-c 8191) calculated for a partition of up to 1 GiB considering 128 KiB erase-block size.
MKUBIFS_ARGS ?= "-m 2048 -e 126976 -c 8191"

# Wireless external module
HAS_WIFI_VIRTWLANS = "true"

# Remove additional bluetooth packages
MACHINE_BLUETOOTH_EXTRA_INSTALL = ""

# XBee
XBEE_RESET_N_GPIO ?= "GPIOZ@2"
XBEE_TTY ?= "ttySTM2"

# =========================================================================
# alsa
# =========================================================================
ALSA_LIST = ""

# Per-machine DISTRO_FEATURES customization
MACHINE_DISTRO_FEATURES_ADD = "efi optee"
MACHINE_DISTRO_FEATURES_REMOVE = "vulkan x11"

# Disable use of vendorfs partition
ST_VENDORFS = "0"

# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
    arm-trusted-firmware/tf-a-ccmp15-dvk-nand.stm32 \
    fip/fip-ccmp15-dvk-optee.bin \
"

# TRUSTFENCE basic support
# Alternatively, uncommment to enable the console with the specified GPIO
# TRUSTFENCE_CONSOLE_GPIO_ENABLE_NAME ?= "GPIOB6"

# Default overlayfs_etc mount point and type
OVERLAYFS_ETC_MOUNT_POINT ?= "/mnt/data"
OVERLAYFS_ETC_DEVICE ?= "ubi1:data"
OVERLAYFS_ETC_FSTYPE ?= "ubifs"
