layers: meta-nwl-marvell-bsp: add initial layer and add Nitroc support
Add an initial Marvell BSP layer which supports Nitroc. It is different from CoreOS for now because it uses a newer kernel, U-Boot and trusted firmware. Signed-off-by: Stefan Eichenberger <stefan.eichenberger@netmodule.com>
This commit is contained in:
parent
3e672279f7
commit
c790b986ca
|
|
@ -0,0 +1,18 @@
|
||||||
|
# We have a conf and classes directory, add to BBPATH
|
||||||
|
BBPATH .= ":${LAYERDIR}"
|
||||||
|
|
||||||
|
# We have recipes-* directories, add to BBFILES
|
||||||
|
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
|
||||||
|
${LAYERDIR}/recipes-*/*/*.bbappend"
|
||||||
|
|
||||||
|
BBFILE_COLLECTIONS += "nwl-marvell-bsp"
|
||||||
|
BBFILE_PATTERN_nwl-marvell-bsp = "^${LAYERDIR}/"
|
||||||
|
BBFILE_PRIORITY_nwl-marvell-bsp = "7"
|
||||||
|
|
||||||
|
# This should only be incremented on significant changes that will
|
||||||
|
# cause compatibility issues with other layers
|
||||||
|
LAYERVERSION_nwl-marvell-bsp = "1"
|
||||||
|
|
||||||
|
LAYERDEPENDS_nwl-marvell-bsp = "core meta-belden-coreos"
|
||||||
|
|
||||||
|
LAYERSERIES_COMPAT_nwl-marvell-bsp = "kirkstone"
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
#@TYPE: Machine
|
||||||
|
#@NAME: cn9131-nitroc
|
||||||
|
#@DESCRIPTION: Belden NetModule CN9131 NITROC
|
||||||
|
#
|
||||||
|
# cn913x is from Marvell octeon tx2 family, but it's based on a cortex-A72
|
||||||
|
# so we can't use the armv8-2a/tune-octeontx2.inc (armv8a vs arm8-2a)
|
||||||
|
# instead we can use the older octeontx family previously known as thunderx
|
||||||
|
require conf/machine/include/arm/armv8a/tune-thunderx.inc
|
||||||
|
|
||||||
|
# SOC_FAMILY is added to MACHINE_OVERRIDES in the soc-family.inc file
|
||||||
|
SOC_FAMILY = "cn913x"
|
||||||
|
require conf/machine/include/soc-family.inc
|
||||||
|
|
||||||
|
# Bootloader configuration
|
||||||
|
# *****************************************************************************
|
||||||
|
|
||||||
|
PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
|
||||||
|
PREFERRED_VERSION_u-boot ?= "2020.10-marvell"
|
||||||
|
|
||||||
|
# Set the configuration and device tree for Nitroc
|
||||||
|
UBOOT_MACHINE = "nitroc_defconfig"
|
||||||
|
UBOOT_BUILDENV_DEVICE_TREE ??= "cn9131-nitroc-v1"
|
||||||
|
|
||||||
|
# Kernel configuration
|
||||||
|
# ******************************************************************************
|
||||||
|
|
||||||
|
PREFERRED_PROVIDER_virtual/kernel ?= "linux-nitroc"
|
||||||
|
PREFERRED_VERSION_linux-netmodule ?= "v6.6.y%"
|
||||||
|
PREFERRED_VERSION_trusted-firmware-a ?= "2.9"
|
||||||
|
|
||||||
|
KERNEL_IMAGETYPE = "Image"
|
||||||
|
KERNEL_DEFCONFIG ?= "nitroc_defconfig"
|
||||||
|
KERNEL_DEVICETREE ?= "\
|
||||||
|
marvell/cn9131-nitroc-v1.dtb \
|
||||||
|
marvell/cn9131-nitroc-m12.dtb \
|
||||||
|
marvell/cn9131-nitroc-rj45.dtb \
|
||||||
|
"
|
||||||
|
|
||||||
|
# getty configuration
|
||||||
|
# ******************************************************************************
|
||||||
|
|
||||||
|
SERIAL_CONSOLES = "115200;ttyS0"
|
||||||
|
SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
|
||||||
|
APPEND += "console=ttyS0,115200"
|
||||||
|
|
||||||
|
# Image generation
|
||||||
|
# ******************************************************************************
|
||||||
|
|
||||||
|
# Ensure that both flash-image.bin and boot.scr are generated as they are needed
|
||||||
|
# for a wic image
|
||||||
|
do_image_wic[depends] += "trusted-firmware-a:do_deploy"
|
||||||
|
WKS_FILE = "cn913x-sdcard.wks.in"
|
||||||
|
COREOS_INSTALLER_WKS_FILE ?= "cn913x-sdcard-installer.wks"
|
||||||
|
IMAGE_FSTYPES += "wic.xz wic.bmap"
|
||||||
|
|
||||||
|
COREOS_IMAGE_SWUPDATE_EXTRACLASSES += " coreos-image-swupdate-cn913x"
|
||||||
|
|
||||||
|
# No watchdog available yet
|
||||||
|
EFIBOOTGUARD_TIMEOUT ?= "0"
|
||||||
|
require conf/machine/include/coreos-generic-features/efi.inc
|
||||||
|
require conf/machine/include/coreos-generic-features/partitions.inc
|
||||||
|
|
||||||
|
### Device specific settings
|
||||||
|
# Kernel modules are not essential for booting but are needed for most things
|
||||||
|
MACHINE_EXTRA_RDEPENDS += "kernel-modules"
|
||||||
|
# Device trees are included in the unified kernel and not needed in the rootfs
|
||||||
|
# MACHINE_EXTRA_RDEPENDS += "kernel-devicetree"
|
||||||
|
# Needed for phy firmware
|
||||||
|
MACHINE_EXTRA_RDEPENDS += "linux-firmware-ath11k"
|
||||||
|
MACHINE_EXTRA_RDEPENDS += "linux-firmware-ath10k"
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
DESCRIPTION = "Marvell binaries like the system controller firmware"
|
||||||
|
LICENSE = "MIT"
|
||||||
|
LIC_FILES_CHKSUM = "file://README.md;md5=bbdf038ac62317d3a12a067c50dadc61"
|
||||||
|
|
||||||
|
SRC_URI = "git://git@bitbucket.gad.local:7999/nm-nsp/binaries-marvell.git;protocol=ssh;user=git;branch=nitroc"
|
||||||
|
|
||||||
|
# Modify these as desired
|
||||||
|
PV = "11.23.08+git${SRCPV}"
|
||||||
|
SRCREV = "6765e4fa3eae4000a307bdb891fe8c03f3422f91"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
do_configure () {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
do_compile () {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
do_install () {
|
||||||
|
# The sources are needed by arm-trusted-firmware
|
||||||
|
install -d "${D}/usr/src/${PN}"
|
||||||
|
cp -r "${S}/mrvl_scp_bl2.img" "${D}/usr/src/${PN}/"
|
||||||
|
}
|
||||||
|
|
||||||
|
FILES:${PN}-dev = "/usr/src/${PN}"
|
||||||
|
INSANE_SKIP:${PN}-dev += "file-rdeps"
|
||||||
|
SYSROOT_DIRS += " /usr/src/${PN} "
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
DESCRIPTION = "Marvell DDR training library"
|
||||||
|
LICENSE = "GPL-2.0-or-later"
|
||||||
|
LIC_FILES_CHKSUM = "file://Makefile;md5=9993156c815673120e02a7c8e00a8cc3"
|
||||||
|
|
||||||
|
SRC_URI = "git://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell.git;protocol=https;branch=master"
|
||||||
|
|
||||||
|
# Modify these as desired
|
||||||
|
PV = "devel+git${SRCPV}"
|
||||||
|
SRCREV = "bfcf62051be835f725005bb5137928f7c27b792e"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
do_configure () {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
do_compile () {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
do_install () {
|
||||||
|
# The sources are needed by arm-trusted-firmware
|
||||||
|
install -d "${D}/usr/src/${PN}"
|
||||||
|
cp -r "${S}/." "${D}/usr/src/${PN}/"
|
||||||
|
}
|
||||||
|
|
||||||
|
FILES:${PN}-dev = "/usr/src/${PN}"
|
||||||
|
INSANE_SKIP:${PN}-dev += "file-rdeps"
|
||||||
|
SYSROOT_DIRS += " /usr/src/${PN} "
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
require recipes-bsp/trusted-firmware-a/trusted-firmware-a.inc
|
||||||
|
|
||||||
|
DEPENDS += "mv-ddr-marvell binaries-marvell coreutils-native"
|
||||||
|
|
||||||
|
COMPATIBLE_MACHINE = "cn913x"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM += "file://docs/license.rst;md5=b2c740efedc159745b9b31f88ff03dde"
|
||||||
|
|
||||||
|
SRC_URI = "git://git@bitbucket.gad.local:7999/nm-nsp/trusted-firmware-a.git;protocol=ssh;user=git;branch=nitroc-v2.9.0"
|
||||||
|
SRCREV = "41911b0db0a07878a384e8358950b79e6df7d1be"
|
||||||
|
|
||||||
|
EXTRA_OEMAKE += "MV_DDR_PATH=${PKG_CONFIG_SYSROOT_DIR}/usr/src/mv-ddr-marvell DDR_TOPOLOGY=2 SCP_BL2=${PKG_CONFIG_SYSROOT_DIR}/usr/src/binaries-marvell/mrvl_scp_bl2.img"
|
||||||
|
|
||||||
|
TFA_PLATFORM = "t9130_nitroc"
|
||||||
|
TFA_BUILD_TARGET = "all mrvl_flash"
|
||||||
|
TFA_INSTALL_TARGET = "flash-image"
|
||||||
|
TFA_DEBUG = "1"
|
||||||
|
TFA_MBEDTLS = "0"
|
||||||
|
TFA_UBOOT = "1"
|
||||||
|
TFA_UEFI = "0"
|
||||||
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
HOMEPAGE = "http://www.denx.de/wiki/U-Boot/WebHome"
|
||||||
|
DESCRIPTION = "U-Boot, a boot loader for Embedded boards based on PowerPC, \
|
||||||
|
ARM, MIPS and several other processors, which can be installed in a boot \
|
||||||
|
ROM and used to initialize and test the hardware or to download and run \
|
||||||
|
application code."
|
||||||
|
SECTION = "bootloaders"
|
||||||
|
DEPENDS += "flex-native bison-native"
|
||||||
|
|
||||||
|
COMPATIBLE_MACHINE = "cn913x"
|
||||||
|
|
||||||
|
LICENSE = "GPL-2.0-or-later"
|
||||||
|
LIC_FILES_CHKSUM = "file://Licenses/README;md5=5a7450c57ffe5ae63fd732446b988025"
|
||||||
|
PE = "1"
|
||||||
|
|
||||||
|
SRCREV = "3534f6601c53362407bc6b3bf0af85908c38b81c"
|
||||||
|
SRC_URI = "git://git@bitbucket.gad.local:7999/nm-nsp/netmodule-u-boot.git;protocol=ssh;user=git;branch=sdk11.23.08-v2020.10-nitroc"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
require recipes-bsp/u-boot/u-boot.inc
|
||||||
|
require recipes-bsp/u-boot/u-boot-coreos.inc
|
||||||
|
|
||||||
|
# Solidrun patches require to build out-of-the-tree
|
||||||
|
B = "${WORKDIR}/build"
|
||||||
|
|
||||||
|
DEPENDS += "bc-native dtc-native u-boot-mkimage-native"
|
||||||
|
|
||||||
|
do_compile:prepend() {
|
||||||
|
export DEVICE_TREE="${UBOOT_BUILDENV_DEVICE_TREE}"
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSROOT_DIRS += " /boot "
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
DESCRIPTION = "Linux kernel for the Nitroc hardware"
|
||||||
|
COMPATIBLE_MACHINE = "cn9131-nitroc"
|
||||||
|
|
||||||
|
inherit kernel
|
||||||
|
|
||||||
|
SRC_URI = "git://git@bitbucket.gad.local:7999/nm-nsp/netmodule-linux.git;protocol=ssh;user=git;branch=nitroc-v6.6.y"
|
||||||
|
SRCREV ?= "0b8f8f81ab0ec015002357820f50bfc2924390fe"
|
||||||
|
PV = "v6.6.y+git${SRCPV}"
|
||||||
|
|
||||||
|
LICENSE = "GPL-2.0-only"
|
||||||
|
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
#If a KERNEL_DEFCONFIG is specified, the defconfig specified in SRC_URI will be overwritten!
|
||||||
|
do_configure:append(){
|
||||||
|
if [ "${KERNEL_DEFCONFIG}" != "" ]; then
|
||||||
|
oe_runmake ${KERNEL_DEFCONFIG}
|
||||||
|
fi
|
||||||
|
configs="${@" ".join(find_cfgs(d))}"
|
||||||
|
if [ ! -z "${configs}" ]; then
|
||||||
|
${S}/scripts/kconfig/merge_config.sh -m -O ${WORKDIR}/build ${WORKDIR}/build/.config ${WORKDIR}/*.cfg
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# The default kenrel.bbclass expects it can remove the source symlink,
|
||||||
|
# newer kernels don't have this symlink so we need to override kernel_do_install
|
||||||
|
kernel_do_install() {
|
||||||
|
#
|
||||||
|
# First install the modules
|
||||||
|
#
|
||||||
|
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
|
||||||
|
if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then
|
||||||
|
oe_runmake DEPMOD=echo MODLIB=${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION} INSTALL_FW_PATH=${D}${nonarch_base_libdir}/firmware modules_install
|
||||||
|
rm "${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build"
|
||||||
|
# Remove empty module directories to prevent QA issues
|
||||||
|
find "${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel" -type d -empty -delete
|
||||||
|
else
|
||||||
|
bbnote "no modules to install"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Install various kernel output (zImage, map file, config, module support files)
|
||||||
|
#
|
||||||
|
install -d ${D}/${KERNEL_IMAGEDEST}
|
||||||
|
|
||||||
|
#
|
||||||
|
# When including an initramfs bundle inside a FIT image, the fitImage is created after the install task
|
||||||
|
# by do_assemble_fitimage_initramfs.
|
||||||
|
# This happens after the generation of the initramfs bundle (done by do_bundle_initramfs).
|
||||||
|
# So, at the level of the install task we should not try to install the fitImage. fitImage is still not
|
||||||
|
# generated yet.
|
||||||
|
# After the generation of the fitImage, the deploy task copies the fitImage from the build directory to
|
||||||
|
# the deploy folder.
|
||||||
|
#
|
||||||
|
|
||||||
|
for imageType in ${KERNEL_IMAGETYPES} ; do
|
||||||
|
if [ $imageType != "fitImage" ] || [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ] ; then
|
||||||
|
install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType ${D}/${KERNEL_IMAGEDEST}/$imageType-${KERNEL_VERSION}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
install -m 0644 System.map ${D}/${KERNEL_IMAGEDEST}/System.map-${KERNEL_VERSION}
|
||||||
|
install -m 0644 .config ${D}/${KERNEL_IMAGEDEST}/config-${KERNEL_VERSION}
|
||||||
|
install -m 0644 vmlinux ${D}/${KERNEL_IMAGEDEST}/vmlinux-${KERNEL_VERSION}
|
||||||
|
[ -e Module.symvers ] && install -m 0644 Module.symvers ${D}/${KERNEL_IMAGEDEST}/Module.symvers-${KERNEL_VERSION}
|
||||||
|
install -d ${D}${sysconfdir}/modules-load.d
|
||||||
|
install -d ${D}${sysconfdir}/modprobe.d
|
||||||
|
}
|
||||||
|
|
||||||
|
require recipes-kernel/linux/linux-yocto-coreos-efi.inc
|
||||||
Loading…
Reference in New Issue