diff --git a/meta-digi-arm/conf/machine/include/ccimx6.inc b/meta-digi-arm/conf/machine/include/ccimx6.inc index d646fa6f0..89abccc94 100644 --- a/meta-digi-arm/conf/machine/include/ccimx6.inc +++ b/meta-digi-arm/conf/machine/include/ccimx6.inc @@ -20,9 +20,6 @@ STORAGE_MEDIA = "mmc" # Wireless external module WIRELESS_MODULE ?= "" -# Use our recipe of linux-imx-headers instead of the meta-freescale one -PREFERRED_VERSION_linux-imx-headers ?= "4.9" - # Firmware MACHINE_FIRMWARE ?= "firmware-imx-sdma" MACHINE_FIRMWARE_append_mx6q = " firmware-imx-vpu-imx6q" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc index 3fe0b2f82..0774cb146 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey-src.inc @@ -5,7 +5,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" LOCALVERSION = "-dey" SRCBRANCH = "v5.4/dey-3.0/maint" -SRCBRANCH_ccimx6 = "v4.9/dey-2.6/maint" SRCREV = "${AUTOREV}" # Select internal or Github Linux repo diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey.inc b/meta-digi-arm/recipes-kernel/linux/linux-dey.inc deleted file mode 100644 index 07015ad45..000000000 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey.inc +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (C) 2013-2018 Digi International - -SUMMARY = "Linux kernel for Digi boards" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" - -DEPENDS += "lzop-native bc-native" -DEPENDS += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'trustfence-sign-tools-native', '', d)}" - -inherit kernel fsl-kernel-localversion - -require recipes-kernel/linux/linux-dey-src.inc -require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-virtualization.inc', '', d)} - -# Use custom provided 'defconfig' if variable KERNEL_DEFCONFIG is cleared -SRC_URI += "${@oe.utils.conditional('KERNEL_DEFCONFIG', '', 'file://defconfig', '', d)}" - -do_deploy[postfuncs] += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'trustfence_sign', '', d)}" - -trustfence_sign() { - # Set environment variables for trustfence configuration - export CONFIG_SIGN_KEYS_PATH="${TRUSTFENCE_SIGN_KEYS_PATH}" - [ -n "${TRUSTFENCE_KEY_INDEX}" ] && export CONFIG_KEY_INDEX="${TRUSTFENCE_KEY_INDEX}" - [ -n "${TRUSTFENCE_DEK_PATH}" ] && [ "${TRUSTFENCE_DEK_PATH}" != "0" ] && export CONFIG_DEK_PATH="${TRUSTFENCE_DEK_PATH}" - [ -n "${TRUSTFENCE_SIGN_MODE}" ] && export CONFIG_SIGN_MODE="${TRUSTFENCE_SIGN_MODE}" - - # Sign/encrypt the kernel images - for type in ${KERNEL_IMAGETYPES}; do - KERNEL_IMAGE="${type}-${KERNEL_IMAGE_NAME}.bin" - if [ "${type}" = "Image.gz" ]; then - # Sign the uncompressed Image - KERNEL_IMAGE=${WORKDIR}/build/arch/arm64/boot/Image - fi - - TMP_KERNEL_IMAGE_SIGNED="$(mktemp ${KERNEL_IMAGE}-signed.XXXXXX)" - trustfence-sign-artifact.sh -p "${DIGI_FAMILY}" -l "${KERNEL_IMAGE}" "${TMP_KERNEL_IMAGE_SIGNED}" - - if [ "${type}" = "Image.gz" ]; then - # Compress the signed Image and restore the original filename - gzip "${TMP_KERNEL_IMAGE_SIGNED}" - mv "${TMP_KERNEL_IMAGE_SIGNED}.gz" "${TMP_KERNEL_IMAGE_SIGNED}" - KERNEL_IMAGE="${type}-${KERNEL_IMAGE_NAME}.bin" - fi - - mv "${TMP_KERNEL_IMAGE_SIGNED}" "${KERNEL_IMAGE}" - done - - # Sign/encrypt the device tree blobs - for DTB in ${KERNEL_DEVICETREE}; do - DTB=`normalize_dtb "${DTB}"` - DTB_EXT=${DTB##*.} - DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"` - DTB_IMAGE="${DTB_BASE_NAME}-${KERNEL_IMAGE_NAME}.${DTB_EXT}" - - TMP_DTB_IMAGE_SIGNED="$(mktemp ${DTB_IMAGE}-signed.XXXXXX)" - if [ "${DTB_EXT}" = "dtbo" ]; then - trustfence-sign-artifact.sh -p "${DIGI_FAMILY}" -o "${DTB_IMAGE}" "${TMP_DTB_IMAGE_SIGNED}" - else - trustfence-sign-artifact.sh -p "${DIGI_FAMILY}" -d "${DTB_IMAGE}" "${TMP_DTB_IMAGE_SIGNED}" - fi - mv "${TMP_DTB_IMAGE_SIGNED}" "${DTB_IMAGE}" - done -} -trustfence_sign[dirs] = "${DEPLOYDIR}" - -do_deploy[vardeps] += "TRUSTFENCE_SIGN_KEYS_PATH TRUSTFENCE_KEY_INDEX TRUSTFENCE_DEK_PATH" - -FILES_${KERNEL_PACKAGE_NAME}-image += "/boot/config-${KERNEL_VERSION}" - -# Don't include kernels in standard images -RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "" - -# A user can provide his own kernel 'defconfig' file by: -# - setting the variable KERNEL_DEFCONFIG to a custom kernel configuration file -# inside the kernel repository. -# - setting the variable KERNEL_DEFCONFIG to a kernel configuration file using -# the full path to the file. -# - clearing the variable KERNEL_DEFCONFIG and providing a kernel configuration -# file in the layer (in this case the file must be named 'defconfig'). -# Otherwise the default platform's kernel configuration file will be taken from -# the Linux source code tree. -do_copy_defconfig[vardeps] += "KERNEL_DEFCONFIG" -do_copy_defconfig[dirs] = "${S}" -do_copy_defconfig () { - if [ -n "${KERNEL_DEFCONFIG}" ]; then - cp -f ${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig - fi -} -addtask copy_defconfig after do_patch before do_preconfigure diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb b/meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb deleted file mode 100644 index 3669cb577..000000000 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey_4.9.bb +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (C) 2019 Digi International - -require recipes-kernel/linux/linux-dey.inc - -COMPATIBLE_MACHINE = "(ccimx6)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey_5.4.bb b/meta-digi-arm/recipes-kernel/linux/linux-dey_5.4.bb index 5d06efec1..19dad04c0 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey_5.4.bb +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey_5.4.bb @@ -1,5 +1,91 @@ -# Copyright (C) 2020 Digi International +# Copyright (C) 2013-2020 Digi International -require recipes-kernel/linux/linux-dey.inc +SUMMARY = "Linux kernel for Digi boards" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x|ccimx8m)" +DEPENDS += "lzop-native bc-native" +DEPENDS += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'trustfence-sign-tools-native', '', d)}" + +inherit kernel fsl-kernel-localversion + +require recipes-kernel/linux/linux-dey-src.inc +require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-virtualization.inc', '', d)} + +# Use custom provided 'defconfig' if variable KERNEL_DEFCONFIG is cleared +SRC_URI += "${@oe.utils.conditional('KERNEL_DEFCONFIG', '', 'file://defconfig', '', d)}" + +do_deploy[postfuncs] += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'trustfence_sign', '', d)}" + +trustfence_sign() { + # Set environment variables for trustfence configuration + export CONFIG_SIGN_KEYS_PATH="${TRUSTFENCE_SIGN_KEYS_PATH}" + [ -n "${TRUSTFENCE_KEY_INDEX}" ] && export CONFIG_KEY_INDEX="${TRUSTFENCE_KEY_INDEX}" + [ -n "${TRUSTFENCE_DEK_PATH}" ] && [ "${TRUSTFENCE_DEK_PATH}" != "0" ] && export CONFIG_DEK_PATH="${TRUSTFENCE_DEK_PATH}" + [ -n "${TRUSTFENCE_SIGN_MODE}" ] && export CONFIG_SIGN_MODE="${TRUSTFENCE_SIGN_MODE}" + + # Sign/encrypt the kernel images + for type in ${KERNEL_IMAGETYPES}; do + KERNEL_IMAGE="${type}-${KERNEL_IMAGE_NAME}.bin" + if [ "${type}" = "Image.gz" ]; then + # Sign the uncompressed Image + KERNEL_IMAGE=${WORKDIR}/build/arch/arm64/boot/Image + fi + + TMP_KERNEL_IMAGE_SIGNED="$(mktemp ${KERNEL_IMAGE}-signed.XXXXXX)" + trustfence-sign-artifact.sh -p "${DIGI_FAMILY}" -l "${KERNEL_IMAGE}" "${TMP_KERNEL_IMAGE_SIGNED}" + + if [ "${type}" = "Image.gz" ]; then + # Compress the signed Image and restore the original filename + gzip "${TMP_KERNEL_IMAGE_SIGNED}" + mv "${TMP_KERNEL_IMAGE_SIGNED}.gz" "${TMP_KERNEL_IMAGE_SIGNED}" + KERNEL_IMAGE="${type}-${KERNEL_IMAGE_NAME}.bin" + fi + + mv "${TMP_KERNEL_IMAGE_SIGNED}" "${KERNEL_IMAGE}" + done + + # Sign/encrypt the device tree blobs + for DTB in ${KERNEL_DEVICETREE}; do + DTB=`normalize_dtb "${DTB}"` + DTB_EXT=${DTB##*.} + DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"` + DTB_IMAGE="${DTB_BASE_NAME}-${KERNEL_IMAGE_NAME}.${DTB_EXT}" + + TMP_DTB_IMAGE_SIGNED="$(mktemp ${DTB_IMAGE}-signed.XXXXXX)" + if [ "${DTB_EXT}" = "dtbo" ]; then + trustfence-sign-artifact.sh -p "${DIGI_FAMILY}" -o "${DTB_IMAGE}" "${TMP_DTB_IMAGE_SIGNED}" + else + trustfence-sign-artifact.sh -p "${DIGI_FAMILY}" -d "${DTB_IMAGE}" "${TMP_DTB_IMAGE_SIGNED}" + fi + mv "${TMP_DTB_IMAGE_SIGNED}" "${DTB_IMAGE}" + done +} +trustfence_sign[dirs] = "${DEPLOYDIR}" + +do_deploy[vardeps] += "TRUSTFENCE_SIGN_KEYS_PATH TRUSTFENCE_KEY_INDEX TRUSTFENCE_DEK_PATH" + +FILES_${KERNEL_PACKAGE_NAME}-image += "/boot/config-${KERNEL_VERSION}" + +# Don't include kernels in standard images +RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "" + +# A user can provide his own kernel 'defconfig' file by: +# - setting the variable KERNEL_DEFCONFIG to a custom kernel configuration file +# inside the kernel repository. +# - setting the variable KERNEL_DEFCONFIG to a kernel configuration file using +# the full path to the file. +# - clearing the variable KERNEL_DEFCONFIG and providing a kernel configuration +# file in the layer (in this case the file must be named 'defconfig'). +# Otherwise the default platform's kernel configuration file will be taken from +# the Linux source code tree. +do_copy_defconfig[vardeps] += "KERNEL_DEFCONFIG" +do_copy_defconfig[dirs] = "${S}" +do_copy_defconfig () { + if [ -n "${KERNEL_DEFCONFIG}" ]; then + cp -f ${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig + fi +} +addtask copy_defconfig after do_patch before do_preconfigure + +COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x|ccimx8m|ccimx6)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers.inc b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers.inc deleted file mode 100644 index 6449c3c40..000000000 --- a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers.inc +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2017-2018 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -SUMMARY = "Installs i.MX-specific kernel headers" -DESCRIPTION = "Installs i.MX-specific kernel headers to userspace. \ -New headers are installed in ${includedir}/imx." -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" - -require recipes-kernel/linux/linux-dey-src.inc - -S = "${WORKDIR}/git" - -do_compile[noexec] = "1" - -IMX_UAPI_HEADERS = " \ - dma-buf.h \ - hantrodec.h \ - hx280enc.h \ - ion.h \ - ipu.h \ - isl29023.h \ - mxc_asrc.h \ - mxc_dcic.h \ - mxc_mlb.h \ - mxc_sim_interface.h \ - mxc_v4l2.h \ - mxcfb.h \ - pxp_device.h \ - pxp_dma.h \ - videodev2.h \ -" - -do_install() { - # We install all headers inside of B so we can copy only the - # whitelisted ones, and there is no risk of a new header to be - # installed by mistake. - oe_runmake headers_install INSTALL_HDR_PATH=${B}${exec_prefix} - - # FIXME: The ion.h is still on staging so "promote" it for now - cp ${S}/drivers/staging/android/uapi/ion.h ${B}${includedir}/linux - - # Install whitelisted headers only - for h in ${IMX_UAPI_HEADERS}; do - install -D -m 0644 ${B}${includedir}/linux/$h \ - ${D}${includedir}/imx/linux/$h - done -} - -DEPENDS += "rsync-native" - -ALLOW_EMPTY_${PN} = "1" - -PACKAGE_ARCH = "${MACHINE_SOCARCH}" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb deleted file mode 100644 index b2479c47f..000000000 --- a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_4.9.bb +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (C) 2019 Digi International - -require recipes-kernel/linux/linux-imx-headers.inc - -COMPATIBLE_MACHINE = "(ccimx6)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb index ee876eaf0..bf3d9eb6e 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb +++ b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb @@ -1,5 +1,56 @@ -# Copyright (C) 2020 Digi International +# Copyright 2017-2018 NXP +# Released under the MIT license (see COPYING.MIT for the terms) -require recipes-kernel/linux/linux-imx-headers.inc +SUMMARY = "Installs i.MX-specific kernel headers" +DESCRIPTION = "Installs i.MX-specific kernel headers to userspace. \ +New headers are installed in ${includedir}/imx." +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x|ccimx8m)" +require recipes-kernel/linux/linux-dey-src.inc + +S = "${WORKDIR}/git" + +do_compile[noexec] = "1" + +IMX_UAPI_HEADERS = " \ + dma-buf.h \ + hantrodec.h \ + hx280enc.h \ + ion.h \ + ipu.h \ + isl29023.h \ + mxc_asrc.h \ + mxc_dcic.h \ + mxc_mlb.h \ + mxc_sim_interface.h \ + mxc_v4l2.h \ + mxcfb.h \ + pxp_device.h \ + pxp_dma.h \ + videodev2.h \ +" + +do_install() { + # We install all headers inside of B so we can copy only the + # whitelisted ones, and there is no risk of a new header to be + # installed by mistake. + oe_runmake headers_install INSTALL_HDR_PATH=${B}${exec_prefix} + + # FIXME: The ion.h is still on staging so "promote" it for now + cp ${S}/drivers/staging/android/uapi/ion.h ${B}${includedir}/linux + + # Install whitelisted headers only + for h in ${IMX_UAPI_HEADERS}; do + install -D -m 0644 ${B}${includedir}/linux/$h \ + ${D}${includedir}/imx/linux/$h + done +} + +DEPENDS += "rsync-native" + +ALLOW_EMPTY_${PN} = "1" + +PACKAGE_ARCH = "${MACHINE_SOCARCH}" + +COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x|ccimx8m|ccimx6)"