From c5fda24713df164d6a79cf202062010723e6de2e Mon Sep 17 00:00:00 2001 From: Christophe Priouzeau Date: Mon, 4 Feb 2019 15:04:13 +0100 Subject: [PATCH] MACHINE: add support of stm32mp1 stm32mp1 machine are a machine which support several board. Signed-off-by: Christophe Priouzeau --- conf/machine/include/gpu_vivante.inc | 47 +++ .../include/st-machine-common-stm32mp.inc | 302 ++++++++++++++++++ .../st-machine-extlinux-config-stm32mp.inc | 274 ++++++++++++++++ .../include/st-machine-features-stm32mp.inc | 54 ++++ ...-machine-flashlayout-deleteall-stm32mp.inc | 67 ++++ .../st-machine-flashlayout-stm32mp.inc | 291 +++++++++++++++++ conf/machine/stm32mp1.conf | 77 +++++ 7 files changed, 1112 insertions(+) create mode 100644 conf/machine/include/gpu_vivante.inc create mode 100644 conf/machine/include/st-machine-common-stm32mp.inc create mode 100644 conf/machine/include/st-machine-extlinux-config-stm32mp.inc create mode 100644 conf/machine/include/st-machine-features-stm32mp.inc create mode 100644 conf/machine/include/st-machine-flashlayout-deleteall-stm32mp.inc create mode 100644 conf/machine/include/st-machine-flashlayout-stm32mp.inc create mode 100644 conf/machine/stm32mp1.conf diff --git a/conf/machine/include/gpu_vivante.inc b/conf/machine/include/gpu_vivante.inc new file mode 100644 index 0000000..899124b --- /dev/null +++ b/conf/machine/include/gpu_vivante.inc @@ -0,0 +1,47 @@ +# ========================================================================= +# GPU +# ========================================================================= +GPU_USERLAND_LIBRARIES_WAYLAND ?= "gcnano-userland-multi-binary-stm32mp" +GPU_USERLAND_LIBRARIES_EGLFS ?= "gcnano-userland-multi-binary-stm32mp" +GPU_USERLAND_LIBRARIES_X11 ?= "mesa" + +# Helper function for overloading the default EGL/GLES implementation. +# The Vivnate libraries are compatible with the Mesa headers +# but we can have several backend available following the distro configuration: +# - wayland +# - x11 +# - wayland + x11 +# - framebuffer +# - drm + +def get_gpu_vivante_handler(d): + """ Overloading the default EGL/GLES/mesa implementation.""" + machine_features = d.getVar('MACHINE_FEATURES').split() + distro_features = d.getVar('DISTRO_FEATURES').split() + + gpu_lib_wayland = d.getVar('GPU_USERLAND_LIBRARIES_WAYLAND').split() + gpu_lib_eglfs = d.getVar('GPU_USERLAND_LIBRARIES_EGLFS').split() + gpu_lib_x11 = d.getVar('GPU_USERLAND_LIBRARIES_X11').split() + + if 'gpu' in machine_features: + if 'wayland' in distro_features: + provider = gpu_lib_wayland[0] + else: + if 'x11' in distro_features: + provider = gpu_lib_x11[0] + else: + '''no wayland, no X11 -> choose DRM/FB for eglfs''' + provider = gpu_lib_eglfs[0] + else: + provider = "mesa" + + return provider; + +GPU_USERLAND_LIBRARIES_INSTALL = "${@get_gpu_vivante_handler(d)}" + +PREFERRED_PROVIDER_virtual/egl = "${@get_gpu_vivante_handler(d)}" +PREFERRED_PROVIDER_virtual/libgles1 = "${@get_gpu_vivante_handler(d)}" +PREFERRED_PROVIDER_virtual/libgles2 = "${@get_gpu_vivante_handler(d)}" +PREFERRED_PROVIDER_virtual/libgbm = "${@get_gpu_vivante_handler(d)}" +PREFERRED_PROVIDER_virtual/mesa = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/egl','mesa','mesa','mesa-gl',d)}" +PREFERRED_PROVIDER_virtual/libgl = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/egl','mesa','mesa','mesa-gl',d)}" diff --git a/conf/machine/include/st-machine-common-stm32mp.inc b/conf/machine/include/st-machine-common-stm32mp.inc new file mode 100644 index 0000000..d553aa5 --- /dev/null +++ b/conf/machine/include/st-machine-common-stm32mp.inc @@ -0,0 +1,302 @@ +#@DESCRIPTION: Common Machine configuration for STM32 systems + +require conf/machine/include/st-machine-extlinux-config-stm32mp.inc +require conf/machine/include/st-machine-features-stm32mp.inc +require conf/machine/include/st-machine-flashlayout-stm32mp.inc +require conf/machine/include/st-machine-flashlayout-deleteall-stm32mp.inc + +# Define specific common machine name +MACHINEOVERRIDES .= ":stcommon" + +# Define specific common layer name +MACHINEOVERRIDES .= ":stm32mpcommon" + +# ========================================================================= +# boot scheme +# ========================================================================= +# List of supported boot schemes +BOOTSCHEME_LABELS ??= "basic trusted optee" + +# ========================================================================= +# Machine settings +# ========================================================================= +# Default machine feature +MACHINE_FEATURES = "usbhost usbgadget alsa screen ext2" +MACHINE_FEATURES_append = " ${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'optee', '', d)} " +MACHINE_FEATURES_append = " tpm2 " + +# Default serial consoles (TTYs) to enable using getty +# Before kernel 4.18, serial console are ttyS3 but after is ttySTM0 +SERIAL_CONSOLES = "115200;ttySTM0" +SERIAL_CONSOLE = "115200 ttySTM0" + +# Don't include kernels in standard images +RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "" + +# Ship all kernel modules by default +MACHINE_EXTRA_RRECOMMENDS = " kernel-modules" + +# Default device tree list supported per board +STM32MP_DT_FILES_DK ??= "" +STM32MP_DT_FILES_ED ??= "" +STM32MP_DT_FILES_EV ??= "" +# Set default supported device tree list +STM32MP_DEVICETREE_append = " ${STM32MP_DT_FILES_DK} " +STM32MP_DEVICETREE_append = " ${STM32MP_DT_FILES_ED} " +STM32MP_DEVICETREE_append = " ${STM32MP_DT_FILES_EV} " + +# ========================================================================= +# Machine specific packages +# ========================================================================= +MACHINE_EXTRA_RRECOMMENDS_append = " ${@bb.utils.contains('MACHINE_FEATURES', 'wifi', 'linux-firmware-bcm43430', '', d)} " +MACHINE_EXTRA_RRECOMMENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd',' wifi-suspend ','',d)} " +MACHINE_EXTRA_RRECOMMENDS_append = " m4projects-stm32mp1 " +MACHINE_EXTRA_RRECOMMENDS_append = " linux-examples-stm32mp1 " +MACHINE_EXTRA_RRECOMMENDS_append = " m4fwcoredump " +# Enable Software watchdog when sysvinit +# We enable it to be aligned with the activation within u-boot https://gerrit.st.com/#/c/102528 +MACHINE_EXTRA_RRECOMMENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES','sysvinit',' watchdog ','',d)} " + +# ========================================================================= +# Image +# ========================================================================= +IMAGE_CLASSES += "image_types-stubi st-partitions-image" + +# Define image to use for extra partitions +STM32MP_BOOTFS_IMAGE = "st-image-bootfs" +STM32MP_BOOTFS_LABEL = "boot" +STM32MP_BOOTFS_MOUNTPOINT_IMAGE = "/boot" +STM32MP_USERFS_IMAGE = "st-image-userfs" +STM32MP_USERFS_LABEL = "userfs" +STM32MP_USERFS_MOUNTPOINT_IMAGE = "/usr/local" +STM32MP_VENDORFS_IMAGE = "st-image-vendorfs" +STM32MP_VENDORFS_LABEL = "vendorfs" +STM32MP_VENDORFS_MOUNTPOINT_IMAGE = "/vendor" + +# Define extra partition to build +PARTITIONS_IMAGE = "${STM32MP_BOOTFS_IMAGE} ${STM32MP_USERFS_IMAGE} ${STM32MP_VENDORFS_IMAGE}" +PARTITIONS_MOUNTPOINT_IMAGE = "${STM32MP_BOOTFS_MOUNTPOINT_IMAGE} ${STM32MP_USERFS_MOUNTPOINT_IMAGE} ${STM32MP_VENDORFS_MOUNTPOINT_IMAGE}" + +# Enable licence summary and configure License content generation +ENABLE_IMAGE_LICENSE_SUMMARY = "1" +IMAGE_SUMMARY_LIST = "${STM32MP_BOOTFS_IMAGE}:${STM32MP_VENDORFS_IMAGE}:#IMAGE#:${STM32MP_USERFS_IMAGE}" + +# Provide list of partition to mount +MOUNT_PARTITIONS_LIST = "${STM32MP_BOOTFS_LABEL},${STM32MP_BOOTFS_MOUNTPOINT_IMAGE}" +MOUNT_PARTITIONS_LIST += "${STM32MP_USERFS_LABEL},${STM32MP_USERFS_MOUNTPOINT_IMAGE}" +MOUNT_PARTITIONS_LIST += "${STM32MP_VENDORFS_LABEL},${STM32MP_VENDORFS_MOUNTPOINT_IMAGE}" + +# Define image partition size (supposed to be set as max size in image recipe) +BOOTFS_PARTITION_SIZE = "65536" +# New value proposed for rootfs is 768MB +ROOTFS_PARTITION_SIZE = "768432" +# If we consider the highest constraint is NAND size (so < 1GB) +# Boot binaries 4 MB max (with optee) + bootfs 64 MB max + rootfs 768 MB max + userfs size (4*32MB) < 1024 MB +USERFS_PARTITION_SIZE = "131072" +# New value proposed for vendorfs is 16MB +VENDORFS_PARTITION_SIZE = "16384" + +# Define volume list for multivolume UBIFS +STM32MP_UBI_VOLUME += "${STM32MP_BOOTFS_IMAGE}-${DISTRO}-${MACHINE}:${BOOTFS_PARTITION_SIZE}" +STM32MP_UBI_VOLUME += "${IMAGE_LINK_NAME}:${ROOTFS_PARTITION_SIZE}" +STM32MP_UBI_VOLUME += "${STM32MP_VENDORFS_IMAGE}-${DISTRO}-${MACHINE}:${VENDORFS_PARTITION_SIZE}" +STM32MP_UBI_VOLUME += "${STM32MP_USERFS_IMAGE}-${DISTRO}-${MACHINE}:${USERFS_PARTITION_SIZE}" + +# Set on machine side the max size for ROOTFS image to apply for default rootfs being built +# On other image partition such settings is directly done in image recipe +IMAGE_ROOTFS_MAXSIZE ?= "${ROOTFS_PARTITION_SIZE}" + +# ST Naming rules partitions for UBI format are : +# nand__ +# nor_ +# Like that a same UBI partition can be used for severals NAND/NOR providers + +# UBI Args for NAND soldered by default on MB1262 +# Micron MT29F8G16ABACAH4 +# LEB = BLOCK_SIZE - (2 * page size): 256*1024 - (2*4096) +MKUBIFS_ARGS_nand_4_256 = "--min-io-size 4096 --leb-size 253952 --max-leb-cnt 4096 --space-fixup" +UBINIZE_ARGS_nand_4_256 = "--min-io-size 4096 --peb-size 256KiB" + +# Define UBI labels to build +MULTIUBI_BUILD_append = " nand_4_256 " + +# Set on machine side the UBI volume label for ROOTFS image to apply to reuse it +# on kernel command line to mount UBI file system +# On other image partition such settings is directly done in image recipe +UBI_VOLNAME ?= "rootfs" + +# create minimal inode number (as it is done by default in image_types.bbclass) +# add naming of ext4 FS to be aligned with gpt... scripts +# For label name we are using IMAGE_NAME_SUFFIX we are removing "." and truncing to 16 caracters +# -L new-volume-label +# Set the volume label for the filesystem to new-volume-label. The maximum length of the volume label is 16 bytes. +EXTRA_IMAGECMD_ext4 = "-i 4096 -L ${@d.getVar('IMAGE_NAME_SUFFIX').replace('.', '', 1)[:16]}" + +# Default FSTYPES requested +IMAGE_FSTYPES = "tar.xz ext4" + +# Allow debug on the platform with gdb and openocd tools +EXTRA_IMAGEDEPENDS_append = " \ + gdb-cross-arm \ + openocd-stm32mp-native \ + sdcard-raw-tools-native \ + " + +# Make sure to provide all expected tools in SDK +ST_TOOLS_FOR_SDK = " \ + nativesdk-gcc-arm-none-eabi \ + nativesdk-binutils \ + nativesdk-openocd-stm32mp \ + nativesdk-sdcard-raw-tools \ + nativesdk-ncurses-libncursesw \ + nativesdk-perl-module-term-ansicolor \ + nativesdk-perl-module-encode \ + nativesdk-perl-module-encode-mime-header \ + " +# For support of string convertion (iconv) in SDK +ST_TOOLS_FOR_SDK_append = " \ + nativesdk-glibc-gconv-utf-16 \ + nativesdk-glibc-gconv-utf-32 \ + " + +# for populate_sdk, we will have all the tools +TOOLCHAIN_HOST_TASK_append = " ${ST_TOOLS_FOR_SDK} " + +# Make sure to append mkimage to SDK for kernel uImage build +TOOLCHAIN_HOST_TASK_append = " ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'nativesdk-u-boot-mkimage', '', d)} " +TOOLCHAIN_HOST_TASK_append = " ${@bb.utils.contains('KERNEL_ALT_IMAGETYPE', 'uImage', 'nativesdk-u-boot-mkimage', '', d)} " +# Make sure to append openssl to SDK for kernel-module and scripts build +TOOLCHAIN_HOST_TASK_append = " nativesdk-openssl-dev " + +# Make sure to append bison to SDK for u-boot build +TOOLCHAIN_HOST_TASK_append = " ${@bb.utils.contains('EXTRA_IMAGEDEPENDS', 'u-boot-stm32mp', 'nativesdk-bison', '', d)} " + +# for populate_sdk_ext, the tools are not desired as mandatory tools (aka basic +# tools for devtool) +TOOLCHAIN_HOST_TASK_remove_task-populate-sdk-ext = " ${ST_TOOLS_FOR_SDK} " + +# buildtools and uninatve are used only by populate_sdk_ext +# populate_sdk_ext = buildtools + uninatve + layer +# buildtools: sdk part of esdk (like sdk generated by populate_sdk) +# uninative: basic tools for devtool +TOOLCHAIN_HOST_TASK_append_pn-buildtools-tarball = " ${ST_TOOLS_FOR_SDK} " +TOOLCHAIN_HOST_TASK_remove_pn-uninative-tarball = " ${ST_TOOLS_FOR_SDK} " + +# ========================================================================= +# Kernel +# ========================================================================= +# Select kernel version +PREFERRED_PROVIDER_virtual/kernel = "linux-stm32mp" + +# Kernel image type +KERNEL_IMAGETYPE = "uImage" +KERNEL_ALT_IMAGETYPE = " Image " +KERNEL_ALT_IMAGETYPE =+ " vmlinux " +KERNEL_ALT_IMAGETYPE =+ " zImage " + +# Maxsize authorized for uncompressed kernel binary +# Define to null to skip kernel image size check +KERNEL_IMAGE_MAXSIZE ?= "" + +# List of device tree to install +KERNEL_DEVICETREE ?= "${STM32MP_KERNEL_DEVICETREE}" +STM32MP_KERNEL_DEVICETREE += "${@' '.join('%s.dtb' % d for d in '${STM32MP_DEVICETREE}'.split())}" +STM32MP_KERNEL_DEVICETREE += "${@' '.join('%s.dtb' % d for d in '${CUBE_M4_EXAMPLES_DT}'.split())}" +STM32MP_KERNEL_DEVICETREE += "${@' '.join('%s.dtb' % d for d in '${LINUX_A7_EXAMPLES_DT}'.split())}" + +# Define the devicetree for Linux A7 examples +LINUX_A7_EXAMPLES_DT ?= "" + +# ========================================================================= +# u-boot +# ========================================================================= +EXTRA_IMAGEDEPENDS += "u-boot-stm32mp" + +# Define default U-Boot config +UBOOT_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'basic', 'basic', '', d)}" +UBOOT_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'trusted', 'trusted', '', d)}" +UBOOT_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'optee', '', d)}" +#Add this config until u-boot is able to flash with basic binary +UBOOT_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'basic', 'trusted', '', d)}" + +# Define u-boot defconfig and binary to use for each UBOOT_CONFIG +UBOOT_CONFIG[basic] = "stm32mp15_basic_defconfig,,u-boot.img" +UBOOT_CONFIG[trusted] = "stm32mp15_trusted_defconfig,,u-boot.stm32" +UBOOT_CONFIG[optee] = "stm32mp15_optee_defconfig,,u-boot.stm32" + +# List of U-Boot device tree to use +UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}" + +# Define u-boot splashscreen file naming +UBOOT_SPLASH_IMAGE = "splash" + +# ========================================================================= +# tf-a +# ========================================================================= +# Finally we must compile tf-a in all cases as we need trusted binary to boot +#EXTRA_IMAGEDEPENDS += "${@bb.utils.contains_any('BOOTSCHEME_LABELS', 'optee trusted', 'tf-a-stm32mp', '', d)}" +EXTRA_IMAGEDEPENDS += "tf-a-stm32mp" + +# Define default TF-A config +TF_A_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'trusted', 'trusted', '', d)}" +TF_A_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'optee', '', d)}" + +#Add this config until tf-a is able to flash with basic binary +TF_A_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'basic', 'trusted', '', d)}" +#Add this config until optee is able to flash +TF_A_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'trusted', '', d)}" + +# Define SECURE_PAYLOAD config to set for each TF_A_CONFIG +TF_A_CONFIG_optee = "AARCH32_SP=optee" +TF_A_CONFIG_trusted = "AARCH32_SP=sp_min" + +# List of TF-A device tree to use +TF_A_DEVICETREE = "${STM32MP_DEVICETREE}" + +# ========================================================================= +# optee +# ========================================================================= +# Map OPTEE configuration to device tree list +OPTEE_CONF = "${STM32MP_DEVICETREE}" + +# ========================================================================= +# flashlayout +# ========================================================================= +# Define bootscheme label to allow specific expansion for partition vars +FLASHLAYOUT_BOOTSCHEME_LABELS += "${BOOTSCHEME_LABELS}" +# Add specific scheme to provide flashlayout that will erase all storage devices +FLASHLAYOUT_BOOTSCHEME_LABELS += "deleteall" + +# Default config labels supported +FLASHLAYOUT_CONFIG_LABELS ??= "" + +# ========================================================================= +# Xserver +# ========================================================================= +XSERVER ?= " \ + xserver-xorg \ + xserver-xorg-module-libint10 \ + xf86-input-evdev \ + xf86-video-modesetting \ +" + +# ========================================================================= +# Enable deploy of bootloader elf files +# ========================================================================= +ELF_DEBUG_ENABLE = "1" + +# ========================================================================= +# M4 copro +# ========================================================================= +# Define the devicetree for M4 examples +CUBE_M4_EXAMPLES_DT ?= "" + +# Define the name of default copro firmware executed @boot time +# This name is cherry picked from list defined in m4projects-stm32mp1.bb +DEFAULT_COPRO_FIRMWARE = "OpenAMP_TTY_echo" + +# ========================================================================= +# GCNANO userland configuration +# ========================================================================= +# Variable for using vendor directory instead of usr +GCNANO_USERLAND_VENDOR_DIR = "${STM32MP_VENDORFS_MOUNTPOINT_IMAGE}" diff --git a/conf/machine/include/st-machine-extlinux-config-stm32mp.inc b/conf/machine/include/st-machine-extlinux-config-stm32mp.inc new file mode 100644 index 0000000..bfd4f66 --- /dev/null +++ b/conf/machine/include/st-machine-extlinux-config-stm32mp.inc @@ -0,0 +1,274 @@ +#@DESCRIPTION: STM32MP machine extlinux file configuration + +# Set configuration file to monitor +UBOOT_EXTLINUX_CONFIGURE_FILES_append = " ${STM32MP_BASE}/conf/machine/include/st-machine-extlinux-config-stm32mp.inc:True " + +# Define the config flags to use to generate all extlinux targets +UBOOT_EXTLINUX_CONFIG_FLAGS += "${@bb.utils.contains('FLASHLAYOUT_CONFIG_LABELS', 'emmc', '%s' % bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'emmc emmc-optee', 'emmc', d), '', d)}" +UBOOT_EXTLINUX_CONFIG_FLAGS += "${@bb.utils.contains_any('FLASHLAYOUT_CONFIG_LABELS', [ 'nand-4-256', 'nor-nand-4-256' ], 'nand', '', d)}" +UBOOT_EXTLINUX_CONFIG_FLAGS += "${@bb.utils.contains('FLASHLAYOUT_CONFIG_LABELS', 'nor-emmc', 'nor-emmc', '', d)}" +UBOOT_EXTLINUX_CONFIG_FLAGS += "${@bb.utils.contains('FLASHLAYOUT_CONFIG_LABELS', 'nor-sdcard', 'nor-sdcard', '', d)}" +UBOOT_EXTLINUX_CONFIG_FLAGS += "${@bb.utils.contains('FLASHLAYOUT_CONFIG_LABELS', 'sdcard', '%s' % bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'sdcard sdcard-optee', 'sdcard', d), '', d)}" + +# Provide the list of supported devicetree for each config flag +UBOOT_EXTLINUX_DEVICEFLAG_emmc ?= "${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" +UBOOT_EXTLINUX_DEVICEFLAG_emmc-optee ?= "${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" +UBOOT_EXTLINUX_DEVICEFLAG_nand ?= "${STM32MP_DT_FILES_EV}" +UBOOT_EXTLINUX_DEVICEFLAG_nor-emmc ?= "${STM32MP_DT_FILES_EV}" +UBOOT_EXTLINUX_DEVICEFLAG_nor-sdcard ?= "${STM32MP_DT_FILES_EV}" +UBOOT_EXTLINUX_DEVICEFLAG_sdcard ?= "${STM32MP_DT_FILES_DK} ${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" +UBOOT_EXTLINUX_DEVICEFLAG_sdcard-optee ?= "${STM32MP_DT_FILES_DK} ${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" + +# Set generic extlinux bootdevice variable to ease definition +EXTLINUX_BOOTDEVICE_EMMC = "mmc1" +EXTLINUX_BOOTDEVICE_SDCARD = "mmc0" +EXTLINUX_BOOTDEVICE_NORSDCARD = "nor0" +EXTLINUX_BOOTDEVICE_NOREMMC = "nor0-mmc1" +EXTLINUX_BOOTDEVICE_NAND = "nand0" + +# Set generic extlinux root variable to ease definition +EXTLINUX_ROOT_EMMC = "root=/dev/mmcblk1p4" +EXTLINUX_ROOT_EMMC_OPTEE = "root=/dev/mmcblk1p7" +EXTLINUX_ROOT_NAND = "ubi.mtd=UBI rootfstype=ubifs root=ubi0:rootfs" +EXTLINUX_ROOT_NOREMMC = "root=/dev/mmcblk1p3" +EXTLINUX_ROOT_NORSDCARD = "root=/dev/mmcblk0p3" +EXTLINUX_ROOT_SDCARD = "root=/dev/mmcblk0p6" +EXTLINUX_ROOT_SDCARD_OPTEE = "root=/dev/mmcblk0p9" + +# ----------------------------------------------------------------------------- +# REMINDER: how 'exlinux.conf' files are built +# +# The 'extlinux.conf' files are generated under ${UBOOT_EXTLINUX_INSTALL_DIR}: +# ${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[0]}extlinux/extlinux.conf +# ${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[1]}extlinux/extlinux.conf +# ... +# +# File content (${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[0]}extlinux/exlinux.conf): +# menu title Select the boot mode +# TIMEOUT ${UBOOT_EXTLINUX_TIMEOUT} +# DEFAULT ${UBOOT_EXTLINUX_DEFAULT_LABEL_${UBOOT_EXTLINUX_TARGETS}[0]} +# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[0]}[0] +# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} > +# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} > +# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} > +# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[0]}[1] +# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} > +# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} > +# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} > +# +# File content (${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[0]}extlinux/exlinux.conf): +# menu title Select the boot mode +# TIMEOUT ${UBOOT_EXTLINUX_TIMEOUT} +# DEFAULT ${UBOOT_EXTLINUX_DEFAULT_LABEL_${UBOOT_EXTLINUX_TARGETS}[1]} +# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[1]}[0] +# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} > +# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} > +# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} > +# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[1]}[1] +# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} > +# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} > +# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} > +# ----------------------------------------------------------------------------- + +# Set extlinux console for stm32mp machine +UBOOT_EXTLINUX_CONSOLE = "console=${@d.getVar('SERIAL_CONSOLE').split()[1]},${@d.getVar('SERIAL_CONSOLE').split()[0]}" + +# ----------------------------------------------------------------------------- +# DK1 configuration +# ----------------------------------------------------------------------------- +# Define available targets to use +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157a-dk1_sdcard" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157a-dk1_sdcard-optee" +# Define bootprefix for each target +UBOOT_EXTLINUX_BOOTPREFIXES_mp157a-dk1_sdcard = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157a-dk1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157a-dk1_sdcard-optee = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157a-dk1-optee_" +# Define labels for each target +UBOOT_EXTLINUX_LABELS_mp157a-dk1_sdcard = "stm32mp157a-dk1-sdcard" +UBOOT_EXTLINUX_LABELS_mp157a-dk1_sdcard-optee = "stm32mp157a-dk1-sdcard-optee" +# Define default boot config for each target +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157a-dk1_sdcard ?= "stm32mp157a-dk1-sdcard" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157a-dk1_sdcard-optee ?= "stm32mp157a-dk1-sdcard-optee" +# Define FDT overrides for all labels +UBOOT_EXTLINUX_FDT_stm32mp157a-dk1-sdcard = "/stm32mp157a-dk1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157a-dk1-sdcard-optee = "/stm32mp157a-dk1.dtb" +# Define ROOT overrides for all labels +UBOOT_EXTLINUX_ROOT_stm32mp157a-dk1-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157a-dk1-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" + +# ----------------------------------------------------------------------------- +# DK2 configuration +# ----------------------------------------------------------------------------- +# Define available targets to use +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-dk2_sdcard" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-dk2_sdcard-optee" +# Define bootprefix for each target +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-dk2_sdcard = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157c-dk2_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-dk2_sdcard-optee = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157c-dk2-optee_" +# Define labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-dk2_sdcard = "stm32mp157c-dk2-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-dk2_sdcard-optee = "stm32mp157c-dk2-sdcard-optee" +# Define default boot config for each target +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-dk2_sdcard ?= "stm32mp157c-dk2-sdcard" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-dk2_sdcard-optee ?= "stm32mp157c-dk2-sdcard-optee" +# Define FDT overrides for all labels +UBOOT_EXTLINUX_FDT_stm32mp157c-dk2-sdcard = "/stm32mp157c-dk2.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-dk2-sdcard-optee = "/stm32mp157c-dk2.dtb" +# Define ROOT overrides for all labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-dk2-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-dk2-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" +# ----------------------------------------------------------------------------- +# Append A7 examples labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-dk2_sdcard += "stm32mp157c-dk2-a7-examples-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-dk2_sdcard-optee += "stm32mp157c-dk2-a7-examples-sdcard-optee" +# Define FDT overrides for A7 labels +UBOOT_EXTLINUX_FDT_stm32mp157c-dk2-a7-examples-sdcard = "/stm32mp157c-dk2-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-dk2-a7-examples-sdcard-optee = "/stm32mp157c-dk2-a7-examples.dtb" +# Define ROOT overrides for A7 labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-dk2-a7-examples-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-dk2-a7-examples-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" +# ----------------------------------------------------------------------------- +# Append M4 examples labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-dk2_sdcard += "stm32mp157c-dk2-m4-examples-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-dk2_sdcard-optee += "stm32mp157c-dk2-m4-examples-sdcard-optee" +# Define FDT overrides for M4 labels +UBOOT_EXTLINUX_FDT_stm32mp157c-dk2-m4-examples-sdcard = "/stm32mp157c-dk2-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-dk2-m4-examples-sdcard-optee = "/stm32mp157c-dk2-m4-examples.dtb" +# Define ROOT overrides for M4 labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-dk2-m4-examples-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-dk2-m4-examples-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" + +# ----------------------------------------------------------------------------- +# ED1 configuration +# ----------------------------------------------------------------------------- +# Define available targets to use +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ed1_emmc" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ed1_emmc-optee" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ed1_sdcard" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ed1_sdcard-optee" +# Define bootprefix for each target +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ed1_emmc = "${EXTLINUX_BOOTDEVICE_EMMC}_stm32mp157c-ed1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ed1_emmc-optee = "${EXTLINUX_BOOTDEVICE_EMMC}_stm32mp157c-ed1-optee_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ed1_sdcard = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157c-ed1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ed1_sdcard-optee = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157c-ed1-optee_" +# Define labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-ed1_emmc = "stm32mp157c-ed1-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ed1_emmc-optee = "stm32mp157c-ed1-emmc-optee" +UBOOT_EXTLINUX_LABELS_mp157c-ed1_sdcard = "stm32mp157c-ed1-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ed1_sdcard-optee = "stm32mp157c-ed1-sdcard-optee" +# Define default boot config for each target +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ed1_emmc ?= "stm32mp157c-ed1-emmc" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ed1_emmc-optee ?= "stm32mp157c-ed1-emmc-optee" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ed1_sdcard ?= "stm32mp157c-ed1-sdcard" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ed1_sdcard-optee ?= "stm32mp157c-ed1-sdcard-optee" +# Define FDT overrides for all labels +UBOOT_EXTLINUX_FDT_stm32mp157c-ed1-emmc = "/stm32mp157c-ed1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ed1-emmc-optee = "/stm32mp157c-ed1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ed1-sdcard = "/stm32mp157c-ed1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ed1-sdcard-optee = "/stm32mp157c-ed1.dtb" +# Define ROOT overrides for all labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-ed1-emmc = "${EXTLINUX_ROOT_EMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ed1-emmc-optee = "${EXTLINUX_ROOT_EMMC_OPTEE}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ed1-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ed1-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" + +# ----------------------------------------------------------------------------- +# EV1 configuration +# ----------------------------------------------------------------------------- +# Define available targets to use +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_emmc" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_emmc-optee" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_nand" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_nor-sdcard" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_nor-emmc" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_sdcard" +UBOOT_EXTLINUX_CONFIGURED_TARGETS += "mp157c-ev1_sdcard-optee" +# Define bootprefix for each target +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_emmc = "${EXTLINUX_BOOTDEVICE_EMMC}_stm32mp157c-ev1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_emmc-optee = "${EXTLINUX_BOOTDEVICE_EMMC}_stm32mp157c-ev1-optee_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_nand = "${EXTLINUX_BOOTDEVICE_NAND}_stm32mp157c-ev1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_nor-sdcard = "${EXTLINUX_BOOTDEVICE_NORSDCARD}_stm32mp157c-ev1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_nor-emmc = "${EXTLINUX_BOOTDEVICE_NOREMMC}_stm32mp157c-ev1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_sdcard = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157c-ev1_" +UBOOT_EXTLINUX_BOOTPREFIXES_mp157c-ev1_sdcard-optee = "${EXTLINUX_BOOTDEVICE_SDCARD}_stm32mp157c-ev1-optee_" +# Define labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-ev1_emmc = "stm32mp157c-ev1-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_emmc-optee = "stm32mp157c-ev1-emmc-optee" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nand = "stm32mp157c-ev1-nand" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nor-sdcard = "stm32mp157c-ev1-nor-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nor-emmc = "stm32mp157c-ev1-nor-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_sdcard = "stm32mp157c-ev1-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_sdcard-optee = "stm32mp157c-ev1-sdcard-optee" +# Define default boot config for each target +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_emmc ?= "stm32mp157c-ev1-emmc" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_emmc-optee ?= "stm32mp157c-ev1-emmc-optee" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_nand ?= "stm32mp157c-ev1-nand" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_nor-sdcard ?= "stm32mp157c-ev1-nor-sdcard" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_nor-emmc ?= "stm32mp157c-ev1-nor-emmc" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_sdcard ?= "stm32mp157c-ev1-sdcard" +UBOOT_EXTLINUX_DEFAULT_LABEL_mp157c-ev1_sdcard-optee ?= "stm32mp157c-ev1-sdcard-optee" +# Define FDT overrides for all labels +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-emmc = "/stm32mp157c-ev1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-emmc-optee = "/stm32mp157c-ev1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-nand = "/stm32mp157c-ev1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-nor-sdcard = "/stm32mp157c-ev1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-nor-emmc = "/stm32mp157c-ev1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-sdcard = "/stm32mp157c-ev1.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-sdcard-optee = "/stm32mp157c-ev1.dtb" +# Define ROOT overrides for all labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-emmc = "${EXTLINUX_ROOT_EMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-emmc-optee = "${EXTLINUX_ROOT_EMMC_OPTEE}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-nand = "${EXTLINUX_ROOT_NAND}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-nor-sdcard = "${EXTLINUX_ROOT_NORSDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-nor-emmc = "${EXTLINUX_ROOT_NOREMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" +# ----------------------------------------------------------------------------- +# Append A7 examples labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-ev1_emmc += "stm32mp157c-ev1-a7-examples-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_emmc-optee += "stm32mp157c-ev1-a7-examples-emmc-optee" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nand += "stm32mp157c-ev1-a7-examples-nand" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nor-sdcard += "stm32mp157c-ev1-a7-examples-nor-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nor-emmc += "stm32mp157c-ev1-a7-examples-nor-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_sdcard += "stm32mp157c-ev1-a7-examples-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_sdcard-optee += "stm32mp157c-ev1-a7-examples-sdcard-optee" +# Define FDT overrides for A7 labels +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-emmc = "/stm32mp157c-ev1-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-emmc-optee = "/stm32mp157c-ev1-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-nand = "/stm32mp157c-ev1-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-nor-sdcard = "/stm32mp157c-ev1-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-nor-emmc = "/stm32mp157c-ev1-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-sdcard = "/stm32mp157c-ev1-a7-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-a7-examples-sdcard-optee = "/stm32mp157c-ev1-a7-examples.dtb" +# Define ROOT overrides for A7 labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-emmc = "${EXTLINUX_ROOT_EMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-emmc-optee = "${EXTLINUX_ROOT_EMMC_OPTEE}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-nand = "${EXTLINUX_ROOT_NAND}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-nor-sdcard = "${EXTLINUX_ROOT_NORSDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-nor-emmc = "${EXTLINUX_ROOT_NOREMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-a7-examples-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" +# ----------------------------------------------------------------------------- +# Append M4 examples labels for each target +UBOOT_EXTLINUX_LABELS_mp157c-ev1_emmc += "stm32mp157c-ev1-m4-examples-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_emmc-optee += "stm32mp157c-ev1-m4-examples-emmc-optee" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nand += "stm32mp157c-ev1-m4-examples-nand" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nor-sdcard += "stm32mp157c-ev1-m4-examples-nor-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_nor-emmc += "stm32mp157c-ev1-m4-examples-nor-emmc" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_sdcard += "stm32mp157c-ev1-m4-examples-sdcard" +UBOOT_EXTLINUX_LABELS_mp157c-ev1_sdcard-optee += "stm32mp157c-ev1-m4-examples-sdcard-optee" +# Define FDT overrides for M4 labels +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-emmc = "/stm32mp157c-ev1-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-emmc-optee = "/stm32mp157c-ev1-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-nand = "/stm32mp157c-ev1-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-nor-sdcard = "/stm32mp157c-ev1-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-nor-emmc = "/stm32mp157c-ev1-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-sdcard = "/stm32mp157c-ev1-m4-examples.dtb" +UBOOT_EXTLINUX_FDT_stm32mp157c-ev1-m4-examples-sdcard-optee = "/stm32mp157c-ev1-m4-examples.dtb" +# Define ROOT overrides for M4 labels +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-emmc = "${EXTLINUX_ROOT_EMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-emmc-optee = "${EXTLINUX_ROOT_EMMC_OPTEE}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-nand = "${EXTLINUX_ROOT_NAND}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-nor-sdcard = "${EXTLINUX_ROOT_NORSDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-nor-emmc = "${EXTLINUX_ROOT_NOREMMC}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-sdcard = "${EXTLINUX_ROOT_SDCARD}" +UBOOT_EXTLINUX_ROOT_stm32mp157c-ev1-m4-examples-sdcard-optee = "${EXTLINUX_ROOT_SDCARD_OPTEE}" diff --git a/conf/machine/include/st-machine-features-stm32mp.inc b/conf/machine/include/st-machine-features-stm32mp.inc new file mode 100644 index 0000000..8fc2f81 --- /dev/null +++ b/conf/machine/include/st-machine-features-stm32mp.inc @@ -0,0 +1,54 @@ +#@DESCRIPTION: Machine features definitions for STM32 systems + +include conf/machine/include/gpu_vivante.inc + +#------------------ +# +# GPU +# +# To support gpu on a machine, +# please add "gpu" to MACHINE_FEATURES in machine conf file + +GPU_LIST = "kernel-module-galcore" +GPU_IMAGE_INSTALL = "${@bb.utils.contains('MACHINE_FEATURES', 'gpu', '${GPU_LIST}', '', d)} " + +#------------------ +# +# optee +# + +OPTEE_LIST = "optee-os-stm32mp" +OPTEE_IMAGE_INSTALL = "${@bb.utils.contains('COMBINED_FEATURES', 'optee', '${OPTEE_LIST}', '', d)} " +PREFERRED_PROVIDER_optee-os = "optee-os-stm32mp" + +OPTEE_BINARY = "optee-os-stm32mp" +OPTEE_BINARY_INSTALL = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', '${OPTEE_BINARY}', '', d)} " + +#------------------ +# +# Alsa +# +ALSA_ADDONS = "alsa-state-stm32mp1" +ALSA_ADDONS_INSTALL = "${@bb.utils.contains('COMBINED_FEATURES', 'alsa', '${ALSA_ADDONS}', '', d)} " + +#------------------ +# +# bluetooth +# +BLUETOOTH_LIST = " linux-firmware-bluetooth-bcm4343 " +BLUETOOTH_IMAGE_INSTALL = "${@bb.utils.contains('MACHINE_FEATURES', 'bluetooth', '${BLUETOOTH_LIST}', '', d)} " + +#------------------ +# +# Image appends +# +EXTRA_IMAGEDEPENDS_append = " \ + ${OPTEE_BINARY_INSTALL} \ + " + +MACHINE_EXTRA_RRECOMMENDS_append = " \ + ${GPU_IMAGE_INSTALL} \ + ${OPTEE_IMAGE_INSTALL} \ + ${ALSA_ADDONS_INSTALL} \ + ${BLUETOOTH_IMAGE_INSTALL}\ + " diff --git a/conf/machine/include/st-machine-flashlayout-deleteall-stm32mp.inc b/conf/machine/include/st-machine-flashlayout-deleteall-stm32mp.inc new file mode 100644 index 0000000..48c4a8e --- /dev/null +++ b/conf/machine/include/st-machine-flashlayout-deleteall-stm32mp.inc @@ -0,0 +1,67 @@ +#@DESCRIPTION: STM32MP machine flashlayout deleteall configuration + +# Set configuration file to monitor +FLASHLAYOUT_CONFIGURE_FILES_append = " ${STM32MP_BASE}/conf/machine/include/st-machine-flashlayout-deleteall-stm32mp.inc:True " + +# ----------------------------------------------------------------------------- +# Define config labels +# ----------------------------------------------------------------------------- +FLASHLAYOUT_CONFIG_LABELS_deleteall = "disco eval" + +# ----------------------------------------------------------------------------- +# Define label types +# ----------------------------------------------------------------------------- +FLASHLAYOUT_TYPE_LABELS_deleteall_disco = "${STM32MP_DT_FILES_DK}" +FLASHLAYOUT_TYPE_LABELS_deleteall_eval = "${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" + +# ----------------------------------------------------------------------------- +# Define partitions to use +# +# NB: To manage bootloader partitions, simplification is done by directly +# re-using 'fsbl1-boot' and 'ssbl-boot' partitions already defined in file +# 'st-machine-flashlayout-stm32mp.inc' +# ----------------------------------------------------------------------------- +FLASHLAYOUT_PARTITION_LABELS_deleteall_disco = "fsbl1-boot ssbl-boot sdcard-all" +FLASHLAYOUT_PARTITION_LABELS_deleteall_eval = "fsbl1-boot ssbl-boot emmc-fsbl1 emmc-fsbl2 emmc-all nand-4-256-all nor-all sdcard-all" + +# ----------------------------------------------------------------------------- +# Partition configuration for each partition label +FLASHLAYOUT_PARTITION_ENABLE_emmc-fsbl1 = "PED" +FLASHLAYOUT_PARTITION_ENABLE_emmc-fsbl2 = "PED" +FLASHLAYOUT_PARTITION_ENABLE_emmc-all = "PED" +FLASHLAYOUT_PARTITION_ENABLE_nand-4-256-all = "PED" +FLASHLAYOUT_PARTITION_ENABLE_nor-all = "PED" +FLASHLAYOUT_PARTITION_ENABLE_sdcard-all = "PED" + +FLASHLAYOUT_PARTITION_ID_emmc-fsbl1 = "0x04" +FLASHLAYOUT_PARTITION_ID_emmc-fsbl2 = "0x05" +FLASHLAYOUT_PARTITION_ID_emmc-all = "0x30" +FLASHLAYOUT_PARTITION_ID_nand-4-256-all = "0x40" +FLASHLAYOUT_PARTITION_ID_nor-all = "0x50" +FLASHLAYOUT_PARTITION_ID_sdcard-all = "0x60" + +FLASHLAYOUT_PARTITION_TYPE_emmc-all = "RawImage" +FLASHLAYOUT_PARTITION_TYPE_nand-4-256-all = "RawImage" +FLASHLAYOUT_PARTITION_TYPE_nor-all = "RawImage" +FLASHLAYOUT_PARTITION_TYPE_sdcard-all = "RawImage" + +FLASHLAYOUT_PARTITION_DEVICE_emmc-fsbl1 = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_emmc-fsbl2 = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_emmc-all = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_nand-4-256-all = "${DEVICE_NAND}" +FLASHLAYOUT_PARTITION_DEVICE_nor-all = "${DEVICE_NOR}" +FLASHLAYOUT_PARTITION_DEVICE_sdcard-all = "${DEVICE_SDCARD}" +# Specific for fsbl1-boot ssbl-boot partitions +FLASHLAYOUT_PARTITION_DEVICE_deleteall_fsbl1-boot = "none" +FLASHLAYOUT_PARTITION_DEVICE_deleteall_ssbl-boot = "none" + +FLASHLAYOUT_PARTITION_OFFSET_deleteall = "0x0" +FLASHLAYOUT_PARTITION_OFFSET_deleteall_emmc-fsbl1 = "${FLASHLAYOUT_PARTITION_OFFSET_emmc_fsbl1}" +FLASHLAYOUT_PARTITION_OFFSET_deleteall_emmc-fsbl2 = "${FLASHLAYOUT_PARTITION_OFFSET_emmc_fsbl2}" + +# ----------------------------------------------------------------------------- +# The 'deletall' bootscheme is a trick to generate flashlayout files to clean +# all memory devices on board. There are no specific 'deleteall' bootloader +# binaries so use the 'trusted' or 'optee' one. +BIN2BOOT_REPLACE_PATTERNS_fsbl1-boot_append = " deleteall;trusted" +BIN2BOOT_REPLACE_PATTERNS_ssbl-boot_append = " ${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', 'deleteall;optee', 'deleteall;trusted', d)}" diff --git a/conf/machine/include/st-machine-flashlayout-stm32mp.inc b/conf/machine/include/st-machine-flashlayout-stm32mp.inc new file mode 100644 index 0000000..34d0f04 --- /dev/null +++ b/conf/machine/include/st-machine-flashlayout-stm32mp.inc @@ -0,0 +1,291 @@ +#@DESCRIPTION: STM32MP machine flashlayout configuration + +INHERIT += "flashlayout-stm32mp" + +# Set configuration file to monitor +FLASHLAYOUT_CONFIGURE_FILES_append = " ${STM32MP_BASE}/conf/machine/include/st-machine-flashlayout-stm32mp.inc:True " + +# Add specific dependencies to get all binaries generated before flashlayout files +FLASHLAYOUT_DEPEND_TASKS += "${@bb.utils.contains('EXTRA_IMAGEDEPENDS', 'tf-a-stm32mp', 'tf-a-stm32mp:do_deploy', '', d)}" +FLASHLAYOUT_DEPEND_TASKS += "${@bb.utils.contains('EXTRA_IMAGEDEPENDS', 'u-boot-stm32mp', 'u-boot-stm32mp:do_deploy', '', d)}" +FLASHLAYOUT_DEPEND_TASKS += "${@bb.utils.contains('EXTRA_IMAGEDEPENDS', 'optee-os-stm32mp', 'optee-os-stm32mp:do_deploy', '', d)}" + +# ----------------------------------------------------------------------------- +# Define flashlayout devices +# ----------------------------------------------------------------------------- +DEVICE_EMMC = "mmc1" +DEVICE_NAND = "nand0" +DEVICE_NOR = "nor0" +DEVICE_SDCARD = "mmc0" +# ----------------------------------------------------------------------------- +# EMMC +# Extra space is required to store 'Protective MBR' and 'Primary GPT Header' +# Currently the required size is 17kBytes (i.e. 0x4400) +# We need to align this size to get the first offset to use +DEVICE_START_OFFSET_mmc1 = "0x00080000" +DEVICE_ALIGNMENT_SIZE_mmc1 = "0x00080000" +# ----------------------------------------------------------------------------- +# NAND +DEVICE_START_OFFSET_nand0 = "0x00000000" +DEVICE_ALIGNMENT_SIZE_nand0 = "0x00040000" +# ----------------------------------------------------------------------------- +# NOR +DEVICE_START_OFFSET_nor0 = "0x00000000" +DEVICE_ALIGNMENT_SIZE_nor0 = "0x00010000" +# ----------------------------------------------------------------------------- +# SDCARD +# Extra space is required to store 'Protective MBR' and 'Primary GPT Header' +# Currently the required size is 17kBytes (i.e. 0x4400) +# We need to align this size to get the first offset to use +DEVICE_START_OFFSET_mmc0 = "0x00004400" +DEVICE_ALIGNMENT_SIZE_mmc0 = "0x00000200" + +# ----------------------------------------------------------------------------- +# Define bootscheme labels +# ----------------------------------------------------------------------------- +FLASHLAYOUT_BOOTSCHEME_LABELS ??= "basic optee trusted" + +# ----------------------------------------------------------------------------- +# Define config labels +# ----------------------------------------------------------------------------- +# NOTE: define can be done with following priority assignment: +# 1) list_ +# 2) list +# 3) Default 'list' to 'none' when not defined +# ----------------------------------------------------------------------------- +FLASHLAYOUT_CONFIG_LABELS ??= "emmc nand-4-256 nor-sdcard nor-emmc nor-nand-4-256 sdcard" + +# ----------------------------------------------------------------------------- +# Define label types +# ----------------------------------------------------------------------------- +# NOTE: define can be done with following priority assignment: +# 1) list__ +# 2) list_ +# 3) list_ +# 4) list +# 5) Default 'list' to 'none' when not defined +# ----------------------------------------------------------------------------- +# EMMC +# Set flashlayout file generation to eval board (mother and daughter) only +FLASHLAYOUT_TYPE_LABELS_emmc = "${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" +# NAND +# Set flashlayout file generation to eval board only +FLASHLAYOUT_TYPE_LABELS_nand-4-256 = "${STM32MP_DT_FILES_EV}" +# NOR +# Set flashlayout file generation to eval board only +FLASHLAYOUT_TYPE_LABELS_nor-emmc = "${STM32MP_DT_FILES_EV}" +FLASHLAYOUT_TYPE_LABELS_nor-nand-4-256 = "${STM32MP_DT_FILES_EV}" +FLASHLAYOUT_TYPE_LABELS_nor-sdcard = "${STM32MP_DT_FILES_EV}" +# SDCARD +# Set flashlayout file generation for all boards +FLASHLAYOUT_TYPE_LABELS_sdcard = "${STM32MP_DT_FILES_DK} ${STM32MP_DT_FILES_ED} ${STM32MP_DT_FILES_EV}" + +# ----------------------------------------------------------------------------- +# Define partitions to use +# ----------------------------------------------------------------------------- +# There are few restrictions to follow: +# - The partition for the first boot loader should follow the naming rule: +# fsbl* +# - The partition for the secondary boot loader should follow the naming rule: +# ssbl +# ----------------------------------------------------------------------------- +# NOTE: define can be done with following priority assignment: +# 1) list__ +# 2) list_ +# 3) list_ +# 4) list +# 5) Default 'list' to 'none' when not defined +# ----------------------------------------------------------------------------- +FLASHLAYOUT_PARTITION_LABELS_basic_emmc = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl" +FLASHLAYOUT_PARTITION_LABELS_basic_nand-4-256 = "none" +FLASHLAYOUT_PARTITION_LABELS_basic_nor-nand-4-256 = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo empty" +FLASHLAYOUT_PARTITION_LABELS_basic_nor-emmc = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo empty" +FLASHLAYOUT_PARTITION_LABELS_basic_nor-sdcard = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo empty bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_basic_sdcard = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl bootfs vendorfs rootfs userfs" + +FLASHLAYOUT_PARTITION_LABELS_optee_emmc = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl teeh teed teex bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_optee_nand-4-256 = "fsbl1-boot ssbl-boot fsbl1 ssbl ssbl2 teeh teed teex ubifs" +FLASHLAYOUT_PARTITION_LABELS_optee_nor-nand-4-256 = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo teeh teed teex empty empty2 empty3 ubifs" +FLASHLAYOUT_PARTITION_LABELS_optee_nor-emmc = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo teeh teed teex empty bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_optee_nor-sdcard = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo teeh teed teex empty bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_optee_sdcard = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl teeh teed teex bootfs vendorfs rootfs userfs" + +FLASHLAYOUT_PARTITION_LABELS_trusted_emmc = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_trusted_nand-4-256 = "fsbl1-boot ssbl-boot fsbl1 ssbl ssbl2 ubifs" +FLASHLAYOUT_PARTITION_LABELS_trusted_nor-nand-4-256 = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo empty empty2 empty3 ubifs" +FLASHLAYOUT_PARTITION_LABELS_trusted_nor-emmc = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo empty bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_trusted_nor-sdcard = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl logo empty bootfs vendorfs rootfs userfs" +FLASHLAYOUT_PARTITION_LABELS_trusted_sdcard = "fsbl1-boot ssbl-boot fsbl1 fsbl2 ssbl bootfs vendorfs rootfs userfs" + +# ----------------------------------------------------------------------------- +# Partition configuration for each partition label +# NOTE: each item can be defined with following priority assignment: +# 1) item___ +# 2) item__ +# 3) item__ +# 4) item_ +# 5) item__ +# 6) item_ +# 7) item_ +# 8) item +# 9) Default 'item' to 'none' when not defined +# ----------------------------------------------------------------------------- +FLASHLAYOUT_PARTITION_ENABLE = "P" +FLASHLAYOUT_PARTITION_ENABLE_fsbl1-boot = "-" +FLASHLAYOUT_PARTITION_ENABLE_ssbl-boot = "-" +FLASHLAYOUT_PARTITION_ENABLE_empty = "PE" +FLASHLAYOUT_PARTITION_ENABLE_empty2 = "PE" +FLASHLAYOUT_PARTITION_ENABLE_empty3 = "PE" +FLASHLAYOUT_PARTITION_ENABLE_logo = "PE" + +# ----------------------------------------------------------------------------- +# Partition ID +# ----------------------------------------------------------------------------- +# The STM32CubeProgrammer supported ID range is: +# 0x00 to 0xFF +# Some IDs are reserved for internal usage on STM32CubeProgrammer and special +# management is implemented for binary with STM32 header. This means that for +# flashlayout files, available ID range is only: +# 0x01 to 0x0F for Boot partitions with STM32 header +# 0x10 to 0xF0 for User partitions programmed without header +# Note also that for FSBL and SSBL binaries loaded in RAM to program the devices +# there are two reserved IDs +# 0x01 for FSBL +# 0x03 for SSBL +FLASHLAYOUT_PARTITION_ID_fsbl1-boot = "0x01" +FLASHLAYOUT_PARTITION_ID_ssbl-boot = "0x03" +FLASHLAYOUT_PARTITION_ID_fsbl1 = "0x04" +FLASHLAYOUT_PARTITION_ID_fsbl2 = "0x05" +FLASHLAYOUT_PARTITION_ID_ssbl = "0x06" +FLASHLAYOUT_PARTITION_ID_ssbl2 = "0x07" +FLASHLAYOUT_PARTITION_ID_teeh = "0x0A" +FLASHLAYOUT_PARTITION_ID_teed = "0x0B" +FLASHLAYOUT_PARTITION_ID_teex = "0x0C" +FLASHLAYOUT_PARTITION_ID_empty = "0x10" +FLASHLAYOUT_PARTITION_ID_empty2 = "0x11" +FLASHLAYOUT_PARTITION_ID_empty3 = "0x12" +FLASHLAYOUT_PARTITION_ID_logo = "0x20" +FLASHLAYOUT_PARTITION_ID_ubifs = "0x21" +FLASHLAYOUT_PARTITION_ID_bootfs = "0x21" +FLASHLAYOUT_PARTITION_ID_vendorfs = "0x22" +FLASHLAYOUT_PARTITION_ID_rootfs = "0x23" +FLASHLAYOUT_PARTITION_ID_userfs = "0x24" + +FLASHLAYOUT_PARTITION_TYPE = "Binary" +FLASHLAYOUT_PARTITION_TYPE_nand-4-256_fsbl1 = "Binary(2)" +FLASHLAYOUT_PARTITION_TYPE_ubifs = "System" +FLASHLAYOUT_PARTITION_TYPE_bootfs = "System" +FLASHLAYOUT_PARTITION_TYPE_vendorfs = "FileSystem" +FLASHLAYOUT_PARTITION_TYPE_rootfs = "FileSystem" +FLASHLAYOUT_PARTITION_TYPE_userfs = "FileSystem" + +FLASHLAYOUT_PARTITION_DEVICE_emmc = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_nand-4-256 = "${DEVICE_NAND}" +FLASHLAYOUT_PARTITION_DEVICE_nor = "${DEVICE_NOR}" +FLASHLAYOUT_PARTITION_DEVICE_nor-emmc = "${DEVICE_NOR}" +FLASHLAYOUT_PARTITION_DEVICE_nor-emmc_bootfs = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_nor-emmc_vendorfs = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_nor-emmc_rootfs = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_nor-emmc_userfs = "${DEVICE_EMMC}" +FLASHLAYOUT_PARTITION_DEVICE_nor-nand-4-256 = "${DEVICE_NOR}" +FLASHLAYOUT_PARTITION_DEVICE_nor-nand-4-256_empty2 = "${DEVICE_NAND}" +FLASHLAYOUT_PARTITION_DEVICE_nor-nand-4-256_empty3 = "${DEVICE_NAND}" +FLASHLAYOUT_PARTITION_DEVICE_nor-nand-4-256_ubifs = "${DEVICE_NAND}" +FLASHLAYOUT_PARTITION_DEVICE_nor-sdcard = "${DEVICE_NOR}" +FLASHLAYOUT_PARTITION_DEVICE_nor-sdcard_bootfs = "${DEVICE_SDCARD}" +FLASHLAYOUT_PARTITION_DEVICE_nor-sdcard_vendorfs = "${DEVICE_SDCARD}" +FLASHLAYOUT_PARTITION_DEVICE_nor-sdcard_rootfs = "${DEVICE_SDCARD}" +FLASHLAYOUT_PARTITION_DEVICE_nor-sdcard_userfs = "${DEVICE_SDCARD}" +FLASHLAYOUT_PARTITION_DEVICE_sdcard = "${DEVICE_SDCARD}" +# Specific for fsbl1-boot ssbl-boot partitions +FLASHLAYOUT_PARTITION_DEVICE_basic_fsbl1-boot = "none" +FLASHLAYOUT_PARTITION_DEVICE_basic_ssbl-boot = "none" +FLASHLAYOUT_PARTITION_DEVICE_optee_fsbl1-boot = "none" +FLASHLAYOUT_PARTITION_DEVICE_optee_ssbl-boot = "none" +FLASHLAYOUT_PARTITION_DEVICE_trusted_fsbl1-boot = "none" +FLASHLAYOUT_PARTITION_DEVICE_trusted_ssbl-boot = "none" + +FLASHLAYOUT_PARTITION_OFFSET_fsbl1-boot = "0x0" +FLASHLAYOUT_PARTITION_OFFSET_ssbl-boot = "0x0" +FLASHLAYOUT_PARTITION_OFFSET_emmc_fsbl1 = "boot1" +FLASHLAYOUT_PARTITION_OFFSET_emmc_fsbl2 = "boot2" +FLASHLAYOUT_PARTITION_OFFSET_emmc_ssbl = "${DEVICE_START_OFFSET_mmc1}" +FLASHLAYOUT_PARTITION_OFFSET_nand-4-256_fsbl1 = "${DEVICE_START_OFFSET_nand0}" +FLASHLAYOUT_PARTITION_OFFSET_nor-sdcard_fsbl1 = "${DEVICE_START_OFFSET_nor0}" +FLASHLAYOUT_PARTITION_OFFSET_nor-sdcard_bootfs = "${DEVICE_START_OFFSET_mmc0}" +FLASHLAYOUT_PARTITION_OFFSET_nor-emmc_fsbl1 = "${DEVICE_START_OFFSET_nor0}" +FLASHLAYOUT_PARTITION_OFFSET_nor-emmc_bootfs = "${DEVICE_START_OFFSET_mmc1}" +FLASHLAYOUT_PARTITION_OFFSET_nor-nand-4-256_fsbl1 = "${DEVICE_START_OFFSET_nor0}" +FLASHLAYOUT_PARTITION_OFFSET_nor-nand-4-256_empty2 = "${DEVICE_START_OFFSET_nand0}" +FLASHLAYOUT_PARTITION_OFFSET_sdcard_fsbl1 = "${DEVICE_START_OFFSET_mmc0}" + +# Size defined in Kbytes +FLASHLAYOUT_PARTITION_SIZE_fsbl1 = "256" +FLASHLAYOUT_PARTITION_SIZE_nand-4-256_fsbl1 = "2048" +FLASHLAYOUT_PARTITION_SIZE_fsbl2 = "256" +FLASHLAYOUT_PARTITION_SIZE_ssbl = "2048" +FLASHLAYOUT_PARTITION_SIZE_ssbl2 = "2048" +FLASHLAYOUT_PARTITION_SIZE_logo = "256" +FLASHLAYOUT_PARTITION_SIZE_teeh = "256" +FLASHLAYOUT_PARTITION_SIZE_teed = "256" +FLASHLAYOUT_PARTITION_SIZE_teex = "256" +FLASHLAYOUT_PARTITION_SIZE_empty = "0" +FLASHLAYOUT_PARTITION_SIZE_empty2 = "${FLASHLAYOUT_PARTITION_SIZE_nand-4-256_fsbl1}" +FLASHLAYOUT_PARTITION_SIZE_empty3 = "${FLASHLAYOUT_PARTITION_SIZE_ssbl}" +# Specific override for partition size as the configuration should follow +# the U-Boot source code where these partition sizes are hard coded +FLASHLAYOUT_PARTITION_SIZE_nand-4-256_teeh = "512" +FLASHLAYOUT_PARTITION_SIZE_nand-4-256_teed = "512" +FLASHLAYOUT_PARTITION_SIZE_nand-4-256_teex = "512" + +FLASHLAYOUT_PARTITION_SIZE_bootfs = "${BOOTFS_PARTITION_SIZE}" +FLASHLAYOUT_PARTITION_SIZE_vendorfs = "${VENDORFS_PARTITION_SIZE}" +FLASHLAYOUT_PARTITION_SIZE_rootfs = "${ROOTFS_PARTITION_SIZE}" +FLASHLAYOUT_PARTITION_SIZE_ubifs = "none" +FLASHLAYOUT_PARTITION_SIZE_userfs = "${USERFS_PARTITION_SIZE}" + +# Set binaries to use for each partition +FLASHLAYOUT_PARTITION_BIN2LOAD_fsbl1-boot = "tf-a.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_ssbl-boot = "u-boot.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_fsbl1 = "tf-a.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_basic_fsbl1 = "u-boot-spl.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_fsbl2 = "tf-a.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_basic_fsbl2 = "u-boot-spl.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_ssbl = "u-boot.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_basic_ssbl = "u-boot.img" +FLASHLAYOUT_PARTITION_BIN2LOAD_ssbl2 = "u-boot.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_teeh = "tee-header_v2.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_teed = "tee-pageable_v2.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_teex = "tee-pager_v2.stm32" +FLASHLAYOUT_PARTITION_BIN2LOAD_logo = "none" +FLASHLAYOUT_PARTITION_BIN2LOAD_ubifs = "${IMAGE_LINK_NAME}_nand_4_256_multivolume.ubi" +FLASHLAYOUT_PARTITION_BIN2LOAD_bootfs = "${STM32MP_BOOTFS_IMAGE}-${DISTRO}-${MACHINE}.ext4" +FLASHLAYOUT_PARTITION_BIN2LOAD_vendorfs = "${STM32MP_VENDORFS_IMAGE}-${DISTRO}-${MACHINE}.ext4" +FLASHLAYOUT_PARTITION_BIN2LOAD_rootfs = "${IMAGE_LINK_NAME}.ext4" +FLASHLAYOUT_PARTITION_BIN2LOAD_userfs = "${STM32MP_USERFS_IMAGE}-${DISTRO}-${MACHINE}.ext4" + +# ----------------------------------------------------------------------------- +# Use the 'BIN2BOOT_REPLACE_PATTERNS' var to allow dynamic binary renaming for +# the bootloader binaries. This is only required for fsbl1-boot and ssbl-boot +# partitions that provides the binary to flash the device. +# The format to follow is: +# '; ;' +# And the pattern to replace in binary name is only searched as: +# '-$' +# or +# '--' +# ----------------------------------------------------------------------------- +# The 'basic' bootscheme does not support Programmer mode, so use 'trusted' one +# (valid for both fsbl1-boot and ssbl-boot) +BIN2BOOT_REPLACE_PATTERNS_DEFAULT = "basic;trusted" +# The daughter board does not support Programmer mode, so use eval one +# (valid for both fsbl1-boot and ssbl-boot) +BIN2BOOT_REPLACE_PATTERNS_DEFAULT_append = " ed1;ev1" + +# Apply for fsbl1-boot and ssbl-boot +BIN2BOOT_REPLACE_PATTERNS_fsbl1-boot = "${BIN2BOOT_REPLACE_PATTERNS_DEFAULT}" +BIN2BOOT_REPLACE_PATTERNS_ssbl-boot = "${BIN2BOOT_REPLACE_PATTERNS_DEFAULT}" + +# For fsbl1-boot, the 'optee' bootscheme does not support Programmer mode, so +# prefer the 'trusted' one. +BIN2BOOT_REPLACE_PATTERNS_fsbl1-boot_append = " optee;trusted" diff --git a/conf/machine/stm32mp1.conf b/conf/machine/stm32mp1.conf new file mode 100644 index 0000000..280c655 --- /dev/null +++ b/conf/machine/stm32mp1.conf @@ -0,0 +1,77 @@ +#@TYPE: Machine +#@NAME: stm32mp1 +#@DESCRIPTION: Configuration for all STM32MP1 boards (EV, DK, ...) +#@NEEDED_BSPLAYERS: + +include conf/machine/include/st-machine-common-stm32mp.inc + +# ========================================================================= +# Chip architecture +# ========================================================================= +DEFAULTTUNE = "cortexa7thf-neon-vfpv4" +include conf/machine/include/tune-cortexa7.inc + +# ========================================================================= +# boot scheme +# ========================================================================= +BOOTSCHEME_LABELS += "basic" +BOOTSCHEME_LABELS += "trusted" +BOOTSCHEME_LABELS += "optee" + +# ========================================================================= +# Machine settings +# ========================================================================= +# Define list of devicetree per board +STM32MP_DT_FILES_DK += "stm32mp157a-dk1" +STM32MP_DT_FILES_DK += "stm32mp157c-dk2" +STM32MP_DT_FILES_ED += "stm32mp157c-ed1" +STM32MP_DT_FILES_EV += "stm32mp157c-ev1" + +# ========================================================================= +# Machine features +# ========================================================================= +MACHINE_FEATURES += "bluetooth" +MACHINE_FEATURES += "wifi" +MACHINE_FEATURES += "${@'gpu' if d.getVar('ACCEPT_EULA_'+d.getVar('MACHINE')) == '1' else ''}" +# Splashscreen enabled +MACHINE_FEATURES += "splashscreen" + +# ========================================================================= +# Image +# ========================================================================= +# Add ubi FSTYPES to default ones for nand volumes +IMAGE_FSTYPES += "stmultiubi" + +# ========================================================================= +# Kernel +# ========================================================================= +# Kernel config +# Set this address to 0xC2000040, which is 0xC2000000 + 0x40. +# 0xC2000000 is the memory address where U-Boot will copy from flash the file uImage and 0x40 is uImage header size (64Bytes). +# With this value, U-Boot will be able to execute in place the zImage contained in uImage. +ST_KERNEL_LOADADDR = "0xC2000040" + +# For eval board: auto-load goodix module (touchscreen module) +KERNEL_MODULE_AUTOLOAD = "goodix" + +# Define the devicetree for Linux A7 examples +LINUX_A7_EXAMPLES_DT += "stm32mp157c-dk2-a7-examples" +LINUX_A7_EXAMPLES_DT += "stm32mp157c-ev1-a7-examples" + +# ========================================================================= +# flashlayout +# ========================================================================= +# Define the config labels to use to generate flashlayout file +FLASHLAYOUT_CONFIG_LABELS += "emmc" +FLASHLAYOUT_CONFIG_LABELS += "nand-4-256" +FLASHLAYOUT_CONFIG_LABELS += "nor-sdcard" +FLASHLAYOUT_CONFIG_LABELS += "nor-emmc" +FLASHLAYOUT_CONFIG_LABELS += "nor-nand-4-256" +FLASHLAYOUT_CONFIG_LABELS += "sdcard" + +# ========================================================================= +# M4 copro +# ========================================================================= +# Define the devicetree for M4 example +CUBE_M4_EXAMPLES_DT += "stm32mp157c-dk2-m4-examples" +CUBE_M4_EXAMPLES_DT += "stm32mp157c-ev1-m4-examples"