Merge branch 'dey-3.0/maint' into dey-3.0/master

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
This commit is contained in:
Hector Palacios 2020-10-26 11:03:18 +01:00
commit 834e0c21f6
77 changed files with 722 additions and 363 deletions

View File

@ -54,8 +54,31 @@ Software for the following hardware platforms is in production support:
* [CC-WMX6UL-KIT](https://www.digi.com/products/models/cc-wmx6ul-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/3.0/cc6ul/yocto-gs_index))
* [CC-SBP-WMX-JN58](https://www.digi.com/products/models/cc-sbp-wmx-jn58)
Previous versions of Digi Embedded Yocto include support for additional Digi
hardware.
## ConnectCore 6 Plus
* ConnectCore 6 Plus System-on-Module (SOM)
* [CC-WMX-KK8D-TN](https://www.digi.com/products/models/cc-wmx-kk8d-tn)
* ConnectCore 6 Plus professional development kit
* [CC-WMX6P-KIT](https://www.digi.com/products/models/cc-wmx6p-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/3.0/cc6plus/yocto-gs_index))
## ConnectCore 6
* ConnectCore 6 System-on-Module (SOM)
* [CC-WMX-J97C-TN](https://www.digi.com/products/models/cc-wmx-j97c-tn)
* [CC-WMX-L96C-TE](https://www.digi.com/products/models/cc-wmx-l96c-te)
* [CC-WMX-L87C-TE](https://www.digi.com/products/models/cc-wmx-l87c-te)
* [CC-MX-L76C-Z1](https://www.digi.com/products/models/cc-mx-l76c-z1)
* [CC-MX-L86C-Z1](https://www.digi.com/products/models/cc-mx-l86c-z1)
* [CC-MX-L96C-Z1](https://www.digi.com/products/models/cc-mx-l96c-z1)
* [CC-WMX-L76C-TE](https://www.digi.com/products/models/cc-wmx-l76c-te)
* CC-WMX-K87C-FJA
* CC-WMX-K77C-TE
* CC-WMX-L97D-TN
* CC-WMX-J98C-FJA
* CC-WMX-J98C-FJA-1
* ConnectCore 6 Jumpstart Development Kit (SBC with Connectore 6 module)
* [CC-WMX6-KIT](https://www.digi.com/products/models/cc-wmx6-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/3.0/cc6/yocto-gs_index))
* [CC-SB-WMX-J97C-1](https://www.digi.com/products/models/cc-sb-wmx-j97c-1)
* [CC-SB-WMX-L87C-1](https://www.digi.com/products/models/cc-sb-wmx-l87c-1)
* [CC-SB-WMX-L76C-1](https://www.digi.com/products/models/cc-sb-wmx-l76c-1)
# Installation
@ -70,11 +93,23 @@ Documentation is available online at https://www.digi.com/resources/documentatio
# Downloads
* Demo images: https://ftp1.digi.com/support/digiembeddedyocto/3.0/r1/images/
* Software Development Kit (SDK): https://ftp1.digi.com/support/digiembeddedyocto/3.0/r1/sdk/
* Demo images: https://ftp1.digi.com/support/digiembeddedyocto/3.0/r2/images/
* Software Development Kit (SDK): https://ftp1.digi.com/support/digiembeddedyocto/3.0/r2/sdk/
# Release Changelog
## 3.0-r2
* Updated BSP to NXP release rel_imx_5.4.24_2.1.0.
* Added support to ConnectCore 6 and ConnectCore 6 Plus (kernel v5.4).
* Updated U-Boot to version 2020.04-r1 for ConnectCore 8X.
* TrustFence: added secure console and U-Boot environment encryption support.
to ConnectCore 8X and 8M Nano.
* Added MCA keypad support for ConnectCore 8X and 8M Nano.
* Fix SoftAP on 5GHz on ConnectCore 6UL.
* Other minor fixes.
## 3.0-r1
* Release based on [Yocto 3.0 (Zeus)](https://www.yoctoproject.org/software-overview/downloads) including:
@ -87,10 +122,11 @@ Documentation is available online at https://www.digi.com/resources/documentatio
* Removed support to bluez4
* Updated OpenSSL to v1.1.1d
* Package upgrades and security fixes
* Updated kernel version to v5.4 for i.MX8X, i.MX8MN and i.MX6UL platforms
* Updated U-Boot to version 2017.03-r6 for i.MX6UL platform
* Updated U-Boot to version 2018.03-r4 for i.MX8MN platform
* Updated U-Boot to version 2019.04-r2 for i.MX8X platform
* Updated kernel version to v5.4 for ConnectCore 8X, ConnecCore 8M Nano and
ConnectCore 6UL
* Updated U-Boot to version 2017.03-r6 for ConnectCore 6UL
* Updated U-Boot to version 2018.03-r4 for ConnectCore 8 MNano platform
* Updated U-Boot to version 2019.04-r2 for ConnectCore 8X platform
* Added support for ConnectCore 8M Nano v2 SOM
* Added initial TrustFence support for ConnectCore 8M Nano
@ -116,17 +152,13 @@ updated list can be found on the online documentation.
* When working as an access point, DFS-capable channels in the 5GHz band are
not supported.
* For P2P connections Digi recommends "Negotiated GO" modes. The QCA6564
devices (ConnectCore 6UL and ConnectCore 8M Nano) fail to join autonomous
groups.
* Trustfence is not yet supported on the ConnectCore 8M Nano.
devices (ConnectCore 6UL, ConnectCore 6 Plus, and ConnectCore 8M Nano) fail
to join autonomous groups.
## ConnectCore 8M Nano
* ConnectCore 8M Nano System-on-Module (SOM)
* CPU wake-up sources are not yet supported
* ConnectCore 8M Nano DVK
* The maximum bitrate for CAN interface is 125 Kbits/s. This is a software
limitation from the CAN controller.
## ConnectCore 8X
@ -149,6 +181,34 @@ updated list can be found on the online documentation.
reducing the maximum throughput of this interface.
* The QCA6564 wireless chip does not support Wake On Wireless LAN.
## ConnectCore 6 Plus
* ConnectCore 6 Plus System-on-Module (SOM)
* NXP i.MX6QP processor has a documented errata (ERR004512) whereby the maximum
performance of the Gigabit FEC is limited to 400Mbps (total for Tx and Rx).
* ConnectCore 6 Plus SBC
* The Micrel PHY KSZ9031 may take between five and six seconds to
auto-negotiate with Gigabit switches.
## ConnectCore 6
* ConnectCore 6 System-on-Module (SOM)
* NXP i.MX6 processor has a documented errata (ERR004512) whereby the maximum
performance of the Gigabit FEC is limited to 400Mbps (total for Tx and Rx).
* When using softAP mode on Band A on the Qualcomm AR6233, channels used for
Dynamic Frequency Selection (DFS) are not supported.
* The Qualcomm AR6233 firmware does not support the following configuration
modes:
* Concurrent modes involving P2P mode, such as P2P + softAP or P2P + STA.
* Bluetooth + softAP + STA concurrent mode.
* A maximum of five clients are supported when using Qualcomm's AR6233 in
softAP mode.
* A maximum of ten connected devices are supported when using Qualcomm's AR6233
Bluetooth Low Energy mode.
* ConnectCore 6 SBC
* The Micrel PHY KSZ9031 may take between five and six seconds to
auto-negotiate with Gigabit switches.
# Support Contact Information
For support questions please contact Digi Technical Support:

View File

@ -22,7 +22,8 @@ PREFERRED_PROVIDER_virtual/libg2d_mx6 = "imx-gpu-g2d"
# U-Boot configurations
# Last one is the default (the one the symlinks point at)
UBOOT_CONFIG ??= "ccimx6qpsbc2GB"
UBOOT_CONFIG ??= "ccimx6qpsbc1GB ccimx6qpsbc2GB"
UBOOT_CONFIG[ccimx6qpsbc1GB] = "ccimx6qpsbc1GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6qpsbc2GB] = "ccimx6qpsbc2GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
KERNEL_DEVICETREE ?= " \

View File

@ -15,12 +15,14 @@ SPL_BINARY = "spl/u-boot-spl.bin"
UBOOT_DTB_NAME = "ccimx8mn-dvk.dtb"
KERNEL_DEVICETREE ?= " \
digi/ccimx8mn_ov_bt.dtbo \
digi/ccimx8mn_ov_quad.dtbo \
digi/ccimx8mn_ov_v1.dtbo \
digi/ccimx8mn_ov_wifi.dtbo \
digi/ccimx8mn-dvk.dtb \
digi/ccimx8mn-dvk_ov_lvds.dtbo \
digi/_ov_board_lvds_ccimx8mn-dvk.dtbo \
digi/_ov_board_v1-v2_ccimx8mn-dvk.dtbo \
digi/_ov_som_bt_ccimx8mn.dtbo \
digi/_ov_som_mca-keypad_ccimx8mn.dtbo \
digi/_ov_som_quad_ccimx8mn.dtbo \
digi/_ov_som_v1_ccimx8mn.dtbo \
digi/_ov_som_wifi_ccimx8mn.dtbo \
"
SERIAL_CONSOLES ?= "115200;ttymxc0"

View File

@ -13,9 +13,9 @@ UBOOT_CONFIG[ccimx8x_sbc_express1GB] = "ccimx8x_sbc_express1GB_defconfig,,u-boot
KERNEL_DEVICETREE ?= " \
digi/ccimx8x-sbc-express.dtb \
digi/ccimx8x_ov_bt.dtbo \
digi/ccimx8x_ov_qxp.dtbo \
digi/ccimx8x_ov_wifi.dtbo \
digi/_ov_som_bt_ccimx8x.dtbo \
digi/_ov_som_quad_ccimx8x.dtbo \
digi/_ov_som_wifi_ccimx8x.dtbo \
"
SERIAL_CONSOLES ?= "115200;ttyLP2"

View File

@ -14,16 +14,18 @@ UBOOT_CONFIG[ccimx8x_sbc_pro512MB] = "ccimx8x_sbc_pro512MB_defconfig,,u-boot-dtb
KERNEL_DEVICETREE ?= " \
digi/ccimx8x-sbc-pro.dtb \
digi/ccimx8x_ov_bt.dtbo \
digi/ccimx8x_ov_qxp.dtbo \
digi/ccimx8x_ov_wifi.dtbo \
digi/ccimx8x-sbc-pro_ov_flexcan1.dtbo \
digi/ccimx8x-sbc-pro_ov_lpuart3.dtbo \
digi/ccimx8x-sbc-pro_ov_lt9812-hdmi-dsi0.dtbo \
digi/ccimx8x-sbc-pro_ov_lvds1.dtbo \
digi/ccimx8x-sbc-pro_ov_parallel-camera.dtbo \
digi/ccimx8x-sbc-pro_ov_pcie-card.dtbo \
digi/ccimx8x-sbc-pro_ov_hsd101pfw2_lvds.dtbo \
digi/_ov_board_flexcan1_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_hsd101pfw2-lvds_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_lpuart3_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_lt9812-hdmi-dsi0_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_lvds1_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_parallel-camera_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_pcie-card_ccimx8x-sbc-pro.dtbo \
digi/_ov_board_v1-v3_ccimx8x-sbc-pro.dtbo \
digi/_ov_som_bt_ccimx8x.dtbo \
digi/_ov_som_mca-keypad_ccimx8x.dtbo \
digi/_ov_som_quad_ccimx8x.dtbo \
digi/_ov_som_wifi_ccimx8x.dtbo \
"
SERIAL_CONSOLES ?= "115200;ttyLP2"

View File

@ -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"
@ -44,3 +41,6 @@ MACHINE_FEATURES += "accel-graphics accel-video wifi bluetooth pci"
# TrustFence
TRUSTFENCE_SIGN_MODE = "HAB"
# Adding 'wayland' along with 'x11' enables the xwayland backend
DISTRO_FEATURES_append = " wayland"

View File

@ -62,7 +62,6 @@ VIRTUAL-RUNTIME_initscripts ?= "initscripts"
TRUSTFENCE_SIGN_MODE = "HAB"
# TODO: Encryption not yet supported
TRUSTFENCE_DEK_PATH = "0"
TRUSTFENCE_ENCRYPT_ENVIRONMENT = "0"
# Adding 'wayland' along with 'x11' enables the xwayland backend
# Vulkan is necessary for wayland to build

View File

@ -14,8 +14,10 @@ LINUXLIBCVERSION ?= "5.4%"
#
# Platform Linux U-Boot
# -------------------------------------------------
# ccimx6 5.4 2017.03
# ccimx6qp 5.4 2017.03
# ccimx6ul 5.4 2017.03
# ccimx8x 5.4 2019.04, 2018.03, 2017.03 (all packaged in imx-boot)
# ccimx8x 5.4 2020.04 (packaged in imx-boot)
# ccimx8mn 5.4 2018.03 (packaged in imx-boot)
#

View File

@ -0,0 +1,42 @@
From: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
Date: Wed, 23 Sep 2020 10:15:08 +0200
Subject: [PATCH] imx8m: soc.mak: preserve dtbs after build
On commit ab433440269bbd5383b47ee60957e9906cda0b3b a dtb preprocess
was introduced to have compatibility with old U-Boots.
As part of those changes, the content of variable $(dtbs) was deleted
at the end of the build.
Since we added the dtbs variable as an argument, building is causing the
original dtb file to be removed, and a second build is failing since the
file pointed at by the dtbs variable does no longer exist.
Remove the file removal to avoid this.
Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
---
iMX8M/soc.mak | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak
index b7b3986..fa84c6a 100644
--- a/iMX8M/soc.mak
+++ b/iMX8M/soc.mak
@@ -143,7 +143,7 @@ u-boot.itb: $(dtbs)
./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs)
DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtbs) > u-boot.its
./mkimage_uboot -E -p 0x3000 -f u-boot.its u-boot.itb
- @rm -f u-boot.its $(dtbs)
+ @rm -f u-boot.its
dtbs_ddr3l = valddr3l.dtb
$(dtbs_ddr3l):
@@ -256,7 +256,6 @@ print_fit_hab: u-boot-nodtb.bin bl31.bin $(dtbs)
./$(PAD_IMAGE) bl31.bin
./$(PAD_IMAGE) u-boot-nodtb.bin $(dtbs)
TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ./print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtbs)
- @rm -f $(dtbs)
print_fit_hab_ddr4: u-boot-nodtb.bin bl31.bin $(dtbs_ddr4_evk)
./$(PAD_IMAGE) tee.bin

View File

@ -1,6 +1,8 @@
# Copyright 2019,2020 Digi International, Inc.
inherit boot-artifacts
SRC_URI_append_ccimx8mn = " file://0001-imx8m-soc.mak-preserve-dtbs-after-build.patch"
IMX_EXTRA_FIRMWARE_ccimx8x = "digi-sc-firmware imx-seco"
DEPENDS_append_ccimx8x = " coreutils-native"

View File

@ -8,6 +8,8 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
SECTION = "BSP"
SRC_URI_append_ccimx8mn = " file://0001-imx8m-soc.mak-preserve-dtbs-after-build.patch"
# Beware: applied last to first
DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
-fdebug-prefix-map=${STAGING_DIR_HOST}= \

View File

@ -7,6 +7,11 @@ LICENSE = "CLOSED"
DEPENDS = "openssl byacc flex"
# Explicitly add byacc-native as a dependency when building the package for the
# SDK, otherwise, it won't get installed in the sysroot, causing a compilation
# error.
DEPENDS_append_class-nativesdk = " byacc-native"
SRC_URI = " \
${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'file://cst-${PV}.tgz', '', d)} \
file://0001-gen_auth_encrypted_data-reuse-existing-DEK-file.patch \

View File

@ -2,19 +2,26 @@
# U-Boot bootscript for EMMC/SD images created by Yocto.
#
# Back up environment variables
setenv ORIG_extra_bootargs ${extra_bootargs}
#
# Set device tree filename depending on the board ID (if defined)
#
if test -n "${board_id}"; then
setenv fdt_file ${soc_family}-ccimx6qpsbc-id${board_id}.dtb
setenv fdt_file imx6qp-ccimx6qpsbc-id${board_id}.dtb
else
#
# Set device tree filename depending on the hardware variant
#
if test "${module_variant}" = "0x01"; then
setenv fdt_file ${soc_family}-ccimx6qpsbc-wb.dtb
setenv fdt_file imx6qp-ccimx6qpsbc-wb.dtb
elif test "${module_variant}" = "0x02"; then
setenv fdt_file imx6qp-ccimx6qpsbc-wb.dtb
elif test "${module_variant}" = "0x03"; then
setenv fdt_file imx6qp-ccimx6qpsbc.dtb
else
setenv fdt_file ${soc_family}-ccimx6qpsbc-wb.dtb
setenv fdt_file imx6qp-ccimx6qpsbc-wb.dtb
fi
fi
@ -34,3 +41,11 @@ else
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux mmc ${mmcbootdev}:${mmcpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -21,8 +21,10 @@ fi
# Determine U-Boot file to program basing on module variant
if test -n "${module_variant}"; then
if test "${module_variant}" = "0x01"; then
if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qpsbc2GB.imx;
elif test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qpsbc1GB.imx;
fi
fi
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
@ -36,6 +38,9 @@ else
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6 QuadPlus variant:";
echo " - For a QuadPlus CPU with 2GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qpsbc2GB.imx";
echo " - For a DualPlus CPU with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qpsbc1GB.imx";
echo "";
echo "";
echo "2. Run the install script again.";
echo "";

View File

@ -2,6 +2,9 @@
# U-Boot bootscript for EMMC/SD images created by Yocto.
#
# Back up environment variables
setenv ORIG_extra_bootargs ${extra_bootargs}
#
# Set device tree filename depending on the board ID (if defined)
#
@ -64,3 +67,11 @@ else
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux mmc ${mmcbootdev}:${mmcpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -2,6 +2,9 @@
# U-Boot bootscript for NAND images created by Yocto.
#
# Back up environment variables
setenv ORIG_extra_bootargs ${extra_bootargs}
#
# Set device tree filename depending on the board ID (if defined)
#
@ -28,3 +31,11 @@ else
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux nand ${mtdbootpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -2,6 +2,9 @@
# U-Boot bootscript for NAND images created by Yocto.
#
# Back up environment variables
setenv ORIG_extra_bootargs ${extra_bootargs}
#
# Set device tree filename depending on the board ID (if defined)
#
@ -28,3 +31,11 @@ else
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux nand ${mtdbootpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -2,6 +2,10 @@
# U-Boot bootscript for EMMC/SD images created by Yocto.
#
# Back up environment variables
setenv ORIG_overlays ${overlays}
setenv ORIG_extra_bootargs ${extra_bootargs}
# Set SOC type to "imx8mn" if not already defined by U-Boot
if test ! -n "${soc_type}"; then
setenv soc_type "imx8mn"
@ -21,21 +25,26 @@ if test -n "${module_ram}"; then
setexpr module_has_bt ${module_has_bt} / 20000
if test "${module_has_bt}" = "1"; then
setenv overlays ccimx8mn_ov_bt.dtbo,${overlays}
setenv overlays _ov_som_bt_ccimx8mn.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays ccimx8mn_ov_wifi.dtbo,${overlays}
setenv overlays _ov_som_wifi_ccimx8mn.dtbo,${overlays}
fi
if test "${som_hv}" = "1"; then
setenv overlays ccimx8mn_ov_v1.dtbo,${overlays}
setenv overlays _ov_som_v1_ccimx8mn.dtbo,${overlays}
fi
fi
# Apply quad overlay if the SOC type is "imx8mn"
if test "${soc_type}" = "imx8mn"; then
setenv overlays ccimx8mn_ov_quad.dtbo,${overlays}
setenv overlays _ov_som_quad_ccimx8mn.dtbo,${overlays}
fi
# Apply DVK v1-v2 overlay if the board version is < 3
if test "${board_version}" -lt "3"; then
setenv overlays _ov_board_v1-v2_ccimx8mn-dvk.dtbo,${overlays}
fi
# Get the UUID of the configured boot partition.
@ -54,3 +63,13 @@ else
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux mmc ${mmcbootdev}:${mmcpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv overlays ${ORIG_overlays}
setenv ORIG_overlays
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -2,6 +2,10 @@
# U-Boot bootscript for EMMC/SD images created by Yocto.
#
# Back up environment variables
setenv ORIG_overlays ${overlays}
setenv ORIG_extra_bootargs ${extra_bootargs}
# Set SOC type to "imx8qxp" if not already defined by U-Boot
if test ! -n "${soc_type}"; then
setenv soc_type "imx8qxp"
@ -17,26 +21,28 @@ if test -n "${module_ram}"; then
setexpr module_has_bt ${module_has_bt} / 2
if test "${module_has_bt}" = "1"; then
setenv overlays ccimx8x_ov_bt.dtbo,${overlays}
setenv overlays _ov_som_bt_ccimx8x.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays ccimx8x_ov_wifi.dtbo,${overlays}
setenv overlays _ov_som_wifi_ccimx8x.dtbo,${overlays}
fi
else
#
# Set overlays depending on the hardware variant
#
if test "${module_variant}" = "0x01" ||
test "${module_variant}" = "0x02" ||
test "${module_variant}" = "0x04"; then
setenv overlays ccimx8x_ov_bt.dtbo,ccimx8x_ov_wifi.dtbo,${overlays}
if test "${module_variant}" = "0x01"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,_ov_som_wifi_ccimx8x.dtbo,${overlays}
elif test "${module_variant}" = "0x02"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,_ov_som_wifi_ccimx8x.dtbo,${overlays}
elif test "${module_variant}" = "0x04"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,_ov_som_wifi_ccimx8x.dtbo,${overlays}
fi
fi
# Apply QXP overlay if the SOC type is "imx8qxp"
if test "${soc_type}" = "imx8qxp"; then
setenv overlays ccimx8x_ov_qxp.dtbo,${overlays}
setenv overlays _ov_som_quad_ccimx8x.dtbo,${overlays}
fi
# Get the UUID of the configured boot partition.
@ -55,3 +61,13 @@ else
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux mmc ${mmcbootdev}:${mmcpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv overlays ${ORIG_overlays}
setenv ORIG_overlays
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -19,24 +19,37 @@ if test $? -eq 1; then
exit;
fi
# Since SOMs with the B0 SOC might have an older U-Boot that doesn't export the
# SOC revision to the environment, use B0 by default
if test -z "${soc_rev}"; then
setenv soc_rev B0
fi
# In case this script is used to update to a newer release whose imx-boot file
# is not recognized by the SECO fw check, bypass it by default. The script has
# the necessary logic to choose the correct imx-boot file for the target's SOC.
setenv skip-uboot-check "yes"
# Determine U-Boot file to program basing on SOM's RAM size and SOC type (linked to bus width)
bus_width="32bit"
if test -n "${module_ram}" && test -n "${soc_type}"; then
if test "${soc_type}" = "imx8dx"; then
bus_width="16bit"
fi
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${module_ram}_${bus_width}.bin;
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-${module_ram}_${bus_width}.bin;
else
# Determine U-Boot file to program basing on SOM's variant
if test -n "${module_variant}"; then
if test "${module_variant}" = "0x01"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1GB_32bit.bin;
elif test "${module_variant}" = "0x02" || \
test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-2GB_32bit.bin;
elif test "${module_variant}" = "0x04" || \
test "${module_variant}" = "0x05"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1GB_16bit.bin;
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-1GB_32bit.bin;
elif test "${module_variant}" = "0x02"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-2GB_32bit.bin;
elif test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-2GB_32bit.bin;
elif test "${module_variant}" = "0x04"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-1GB_16bit.bin;
elif test "${module_variant}" = "0x05"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-1GB_16bit.bin;
fi
fi
fi
@ -51,11 +64,11 @@ else
echo "";
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 8X variant:";
echo " - For a QuadXPlus CPU with 1GB LPDDR4, run:";
echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1GB_32bit.bin";
echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-1GB_32bit.bin";
echo " - For a QuadXPlus CPU with 2GB LPDDR4, run:";
echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-2GB_32bit.bin";
echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-2GB_32bit.bin";
echo " - For a DualX CPU with 1GB LPDDR4, run:";
echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-1GB_16bit.bin";
echo " => setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-express-${soc_rev}-1GB_16bit.bin";
echo "";
echo "2. Run the install script again.";
echo "";

View File

@ -0,0 +1,78 @@
#
# U-Boot bootscript for EMMC/SD images created by Yocto.
#
# Back up environment variables
setenv ORIG_overlays ${overlays}
setenv ORIG_extra_bootargs ${extra_bootargs}
# Set SOC type to "imx8qxp" if not already defined by U-Boot
if test ! -n "${soc_type}"; then
setenv soc_type "imx8qxp"
fi
#
# Determine overlays to apply depending on the hardware capabilities
# described by the HWID, SOM version, and carrier board version.
#
if test -n "${module_ram}"; then
setexpr module_has_wifi ${hwid_3} \& 1
setexpr module_has_bt ${hwid_3} \& 2
setexpr module_has_bt ${module_has_bt} / 2
if test "${module_has_bt}" = "1"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays _ov_som_wifi_ccimx8x.dtbo,${overlays}
fi
else
#
# Set overlays depending on the hardware variant
#
if test "${module_variant}" = "0x01"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,_ov_som_wifi_ccimx8x.dtbo,${overlays}
elif test "${module_variant}" = "0x02"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,_ov_som_wifi_ccimx8x.dtbo,${overlays}
elif test "${module_variant}" = "0x04"; then
setenv overlays _ov_som_bt_ccimx8x.dtbo,_ov_som_wifi_ccimx8x.dtbo,${overlays}
fi
fi
# Apply QXP overlay if the SOC type is "imx8qxp"
if test "${soc_type}" = "imx8qxp"; then
setenv overlays _ov_som_quad_ccimx8x.dtbo,${overlays}
fi
# Apply SBCv3 overlay if the board_version is 3 or lesser
if test "${board_version}" -le "3"; then
setenv overlays _ov_board_v1-v3_ccimx8x-sbc-pro.dtbo,${overlays}
fi
# Get the UUID of the configured boot partition.
part uuid mmc ${mmcbootdev}:${mmcpart} bootpart
# Check the boot source.
if test "${bootpart}" = "${part1_uuid}"; then
# We are booting from the eMMC using 'linux'.
true
elif test "${bootpart}" = "${part2_uuid}"; then
# We are booting from the eMMC using 'recovery'.
setenv boot_initrd true
setenv initrd_file uramdisk-recovery.img
else
# We are booting from the SD card.
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
fi
setenv extra_bootargs fbcon=logo-pos:center ${extra_bootargs}
dboot linux mmc ${mmcbootdev}:${mmcpart}
# We only get here in case of an error on the dboot command.
# Undo changes to environment variables
setenv overlays ${ORIG_overlays}
setenv ORIG_overlays
setenv extra_bootargs ${ORIG_extra_bootargs}
setenv ORIG_extra_bootargs

View File

@ -42,14 +42,16 @@ else
if test -n "${module_variant}"; then
if test "${module_variant}" = "0x01"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-1GB_32bit.bin;
elif test "${module_variant}" = "0x02" || \
test "${module_variant}" = "0x03"; then
elif test "${module_variant}" = "0x02"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-2GB_32bit.bin;
elif test "${module_variant}" = "0x04" || \
test "${module_variant}" = "0x05"; then
elif test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-2GB_32bit.bin;
elif test "${module_variant}" = "0x04"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-1GB_16bit.bin;
elif test "${module_variant}" = "0x05"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-1GB_16bit.bin;
elif test "${module_variant}" = "0x06"; then
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-512GB_16bit.bin;
setenv INSTALL_UBOOT_FILENAME imx-boot-ccimx8x-sbc-pro-${soc_rev}-512MB_16bit.bin;
fi
fi
fi

View File

@ -1,8 +1,8 @@
# Copyright (C) 2018,2019 Digi International
# Copyright (C) 2018-2020 Digi International
require digi-u-boot.inc
SRCBRANCH = "v2017.03/master"
SRCBRANCH = "v2017.03/maint"
SRCREV = "${AUTOREV}"
COMPATIBLE_MACHINE = "(ccimx6$|ccimx6ul|ccimx8x)"

View File

@ -2,7 +2,7 @@
require digi-u-boot.inc
SRCBRANCH = "v2018.03/master"
SRCBRANCH = "v2018.03/maint"
SRCREV = "${AUTOREV}"
COMPATIBLE_MACHINE = "(ccimx8x|ccimx8m)"

View File

@ -1,11 +0,0 @@
# Copyright (C) 2019 Digi International
require digi-u-boot.inc
LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
DEPENDS += "flex-native bison-native"
SRCBRANCH = "v2019.04/master"
SRCREV = "${AUTOREV}"
COMPATIBLE_MACHINE = "(ccimx8x)"

View File

@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
DEPENDS += "flex-native bison-native"
SRCBRANCH = "v2020.04/master"
SRCBRANCH = "v2020.04/maint"
SRCREV = "${AUTOREV}"
COMPATIBLE_MACHINE = "(ccimx8x)"

View File

@ -1,4 +1,4 @@
# Copyright (C) 2017-2018 Digi International
# Copyright (C) 2017-2020 Digi International
SUMMARY = "TrustFence signing and encryption scripts"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425
DEPENDS = "trustfence-cst coreutils util-linux"
DEPENDS += "${@oe.utils.conditional('TRUSTFENCE_SIGN_MODE', 'AHAB', 'imx-mkimage', '', d)}"
SRCBRANCH = "v2019.04/master"
SRCBRANCH = "v2020.04/maint"
SRCREV = "${AUTOREV}"
S = "${WORKDIR}"

View File

@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/ISC;md5=f3b90e78ea0cffb20bf5cca
# Reference Qualcomm tag/version
PV = "v4.0.11.213X"
SRCBRANCH = "qca65X4/master"
SRCBRANCH = "qca65X4/dey-3.0/maint"
SRCREV = "${AUTOREV}"
QCOM_GIT_URI = "${@oe.utils.conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_MTK_GIT}linux/qcacld-2.0.git;protocol=ssh', '${DIGI_GITHUB_GIT}/qcacld-2.0.git;protocol=https', d)}"

View File

@ -4,8 +4,7 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
LOCALVERSION = "-dey"
SRCBRANCH = "v5.4.24/master"
SRCBRANCH_ccimx6 = "v4.9/dey-2.6/maint"
SRCBRANCH = "v5.4/dey-3.0/maint"
SRCREV = "${AUTOREV}"
# Select internal or Github Linux repo

View File

@ -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

View File

@ -1,5 +0,0 @@
# Copyright (C) 2019 Digi International
require recipes-kernel/linux/linux-dey.inc
COMPATIBLE_MACHINE = "(ccimx6)"

View File

@ -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)"

View File

@ -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}"

View File

@ -1,5 +0,0 @@
# Copyright (C) 2019 Digi International
require recipes-kernel/linux/linux-imx-headers.inc
COMPATIBLE_MACHINE = "(ccimx6)"

View File

@ -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)"

View File

@ -39,8 +39,8 @@ generate_installer_zip () {
# Create README file
cat >${IMGDEPLOYDIR}/README.txt <<_EOF_
Digi Embedded Yocto kit installer
---------------------------------
${DISTRO_NAME} ${DISTRO_VERSION} kit installer
----------------------------------------
_EOF_
md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g;s,${IMGDEPLOYDIR}/,,g" >> ${IMGDEPLOYDIR}/README.txt

View File

@ -15,7 +15,6 @@ BBFILE_PATTERN_digi-dey := "^${LAYERDIR}/"
BBFILE_PRIORITY_digi-dey = "6"
BBMASK += "meta-freescale/recipes-graphics/drm/libdrm_%.bbappend"
BBMASK += "meta-freescale/recipes-graphics/wayland/weston-init.bbappend"
LAYERDEPENDS_digi-dey = "core digi-arm"
LAYERDEPENDS_digi-dey += "openembedded-layer networking-layer webserver qt5-layer swupdate"

View File

@ -16,5 +16,3 @@ RDEPENDS_${PN} = "\
"
RDEPENDS_${PN}_remove_ccimx6sbc = "hostapd"
RDEPENDS_${PN}_remove_ccimx6 = "wireless-regdb-static"
RDEPENDS_${PN}_append_ccimx6 = " crda"

View File

@ -56,7 +56,7 @@ resume_interfaces() {
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were bring down on suspend
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do

View File

@ -41,7 +41,7 @@ elif [ "${1}" == "post" ]; then
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were brought down on suspend
for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do

View File

@ -56,7 +56,7 @@ resume_interfaces() {
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were bring down on suspend
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do

View File

@ -41,7 +41,7 @@ elif [ "${1}" == "post" ]; then
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were brought down on suspend
for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do

View File

@ -56,7 +56,7 @@ resume_interfaces() {
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were bring down on suspend
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do

View File

@ -41,7 +41,7 @@ elif [ "${1}" == "post" ]; then
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were brought down on suspend
for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do

View File

@ -56,7 +56,7 @@ resume_interfaces() {
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were bring down on suspend
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do

View File

@ -41,7 +41,7 @@ elif [ "${1}" == "post" ]; then
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were brought down on suspend
for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do

View File

@ -56,7 +56,7 @@ resume_interfaces() {
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=pci:v0000168Cd0000003Esv*sd*bc*sc*i*"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were bring down on suspend
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do

View File

@ -41,7 +41,7 @@ elif [ "${1}" == "post" ]; then
if [ -d "/proc/device-tree/wireless" ]; then
# Trigger wireless module loading event, and wait until the interface exists
udevadm trigger --action=add --attr-match="modalias=pci:v0000168Cd0000003Esv*sd*bc*sc*i*"
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
timeout 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
# Bring up the interfaces that were brought down on suspend
for i in $(cat /tmp/suspend_wlan_ifaces | tr ' ' '\n' | sort); do

View File

@ -29,6 +29,7 @@ IMAGE_ROOTFS_SIZE = "8192"
# Remove some packages added via recommendations
BAD_RECOMMENDATIONS += " \
openssl-bin \
openssl-conf \
"

View File

@ -1,17 +0,0 @@
# Copyright (C) 2016-2019 Digi International.
SUMMARY = "Trustfence command line tool"
SECTION = "console/tools"
LICENSE = "CLOSED"
SRC_URI_arm = "${DIGI_PKG_SRC}/${BP}-${TUNE_ARCH}.tar.gz;name=arm"
SRC_URI[arm.md5sum] = "ef253e2c781d76820f38832ceec22ada"
SRC_URI[arm.sha256sum] = "5fc478f76848b438cc28cbdc7f8eabd63f7db4b2998a5a46d75602a80365a596"
SRC_URI_aarch64 = "${DIGI_PKG_SRC}/${BP}-${TUNE_ARCH}.tar.gz;name=aarch64"
SRC_URI[aarch64.md5sum] = "a109efb8a2c7b57f2e83136ada24938d"
SRC_URI[aarch64.sha256sum] = "ddb9cb94b4ffa182e479cfbcc0f57774a6c68ac813b4af747aa493c259970c5b"
inherit bin_package

View File

@ -0,0 +1,17 @@
# Copyright (C) 2016-2020 Digi International.
SUMMARY = "Trustfence command line tool"
SECTION = "console/tools"
LICENSE = "CLOSED"
SRC_URI_arm = "${DIGI_PKG_SRC}/${BP}-${TUNE_ARCH}.tar.gz;name=arm"
SRC_URI[arm.md5sum] = "926c31fecec8e28a6ed30984b19e868f"
SRC_URI[arm.sha256sum] = "1ec9cae98553e9917ff1a88bfce17fce749a4a8af28b8c40e24c8eebb7540faa"
SRC_URI_aarch64 = "${DIGI_PKG_SRC}/${BP}-${TUNE_ARCH}.tar.gz;name=aarch64"
SRC_URI[aarch64.md5sum] = "eec9ff6c3b715ec37c8a38997f446581"
SRC_URI[aarch64.sha256sum] = "fa738cce350028d74363c78fdca567263c4863389d3741e9f8761486d97e99a6"
inherit bin_package

View File

@ -0,0 +1,24 @@
#!/bin/sh
set -e
[ -f "/etc/default/autogetty" ] && . /etc/default/autogetty
[ "${ENABLED}" != "1" ] && exit
for arg in $(cat /proc/cmdline); do
case "${arg}" in
console=*)
eval ${arg}
TTY="${console%,*}"
SPEED="${console#*,}"
# If no speed is given default to 115200 and fall-back
[ "${SPEED}" = "${TTY}" ] && SPEED="115200,57600,38400,19200,9600"
if [ -n "${TTY}" ] && grep -qs "${TTY}" /etc/securetty; then
setsid /sbin/agetty -8 -L ${TTY} ${SPEED} xterm
fi
;;
esac
done

View File

@ -0,0 +1,26 @@
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Serial Auto-Getty
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes
[Service]
ExecStart=/usr/bin/auto-getty
Type=idle
Restart=always
RestartSec=0
[Install]
WantedBy=getty.target

View File

@ -7,18 +7,22 @@ LIC_FILES_CHKSUM = "\
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420 \
"
AUTOGETTY_FILE="${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'auto-getty-systemd', 'auto-getty-sysvinit', d)}"
SRC_URI = "\
file://autogetty \
file://auto-getty \
file://${AUTOGETTY_FILE} \
file://auto-getty.service \
file://auto-serial-console \
"
S = "${WORKDIR}"
inherit update-rc.d
inherit systemd update-rc.d
INITSCRIPT_NAME = "auto-serial-console"
INITSCRIPT_PARAMS = "start 99 5 ."
SYSTEMD_SERVICE_${PN} = "auto-getty.service"
do_install () {
install -m 0755 -d ${D}${sysconfdir}/default
@ -29,6 +33,9 @@ do_install () {
install -m 0755 -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/auto-serial-console ${D}${sysconfdir}/init.d/auto-serial-console
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/auto-getty.service ${D}${systemd_unitdir}/system/auto-getty.service
install -m 0755 -d ${D}${bindir}
install -m 0755 ${WORKDIR}/auto-getty ${D}${bindir}/auto-getty
install -m 0755 ${WORKDIR}/${AUTOGETTY_FILE} ${D}${bindir}/auto-getty
}

View File

@ -1,6 +1,6 @@
# Copyright (C) 2019, Digi International Inc.
# Copyright (C) 2019,2020, Digi International Inc.
SRCBRANCH = "master"
SRCBRANCH = "dey-3.0/maint"
SRCREV = "${AUTOREV}"
DEY_EXAMPLES_STASH = "${DIGI_MTK_GIT}dey/dey-examples.git;protocol=ssh"

View File

@ -5,6 +5,7 @@ SUBSYSTEM=="iio", GROUP="digiapix", MODE="0660"
SUBSYSTEM=="misc", GROUP="digiapix", MODE="0660", ENV{DEVNAME}=="/dev/watchdog"
SUBSYSTEM=="spidev", GROUP="digiapix", MODE="0660"
SUBSYSTEM=="watchdog",GROUP="digiapix", MODE="0660"
SUBSYSTEM=="gpio", GROUP="digiapix", MODE="0660", ACTION=="add"
#
# Use two different rules for GPIO's.

View File

@ -25,8 +25,8 @@ DEFAULT_SPI = 0,0
[PWM]
# MCA PWM2 channel 0 on Expansion connector (MCA_IO7)
DEFAULT_PWM = 7,0
# MCA PWM0 channel 5 on USER LED0 (MCA_IO18)
DEFAULT_PWM = 0,5
[ADC]

View File

@ -1,4 +1,4 @@
# Copyright (C) 2017 Digi International Inc.
# Copyright (C) 2017-2020 Digi International Inc.
SUMMARY = "Digi APIX library"
DESCRIPTION = "C library to access and manage your ConnectCore platform interfaces in an easy manner"
@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/ISC;md5=f3b90e78ea0cffb20bf5cca
DEPENDS = "libsoc libsocketcan libgpiod"
SRCBRANCH ?= "master"
SRCBRANCH ?= "dey-3.0/maint"
SRCREV = "${AUTOREV}"
LIBDIGIAPIX_URI_STASH = "${DIGI_MTK_GIT}dey/libdigiapix.git;protocol=ssh"

View File

@ -254,7 +254,7 @@ make_report(){
echo "--------------------------------------"
echo ""
if grep -qs '\<digi,ccimx8x\>' /proc/device-tree/compatible; then
if grep -qs '\<digi,ccimx8\(x\|m\)\>' /proc/device-tree/compatible; then
if [ -f "/proc/device-tree/digi,tf-closed" ]; then
echo "Security status: [CLOSED]"
elif [ -f "/proc/device-tree/digi,tf-open" ]; then
@ -263,7 +263,7 @@ make_report(){
else
if [ -e ${OTP_PATH}/nvmem ]; then
# Check SEC_CONFIG on OCOTP_CFG5 (ADDR=6) bit 1.
SEC_CONFIG_WORD=$(dd if=${OTP_PATH}/nvmem of=/dev/stdout bs=4 skip=6 count=1 status=none | hexdump -n 4 -v -e '1/4 "%08x\n"')
SEC_CONFIG_WORD=$(dd if=${OTP_PATH}/nvmem of=/dev/stdout bs=4 skip=6 count=1 status=none | hexdump -n 4 -v -e '1/4 "0x%08x\n"')
if [ "$((${SEC_CONFIG_WORD} & 0x2))" != "0" ]; then
echo "Security status: [CLOSED]"
else
@ -297,7 +297,7 @@ BOARD_VARIANT="$(cat /proc/device-tree/digi,hwid,variant | tr -d '\0')"
BOARD_SN="$(cat /proc/device-tree/digi,hwid,sn | tr -d '\0')"
BOARD_VERSION="$(cat /proc/device-tree/digi,carrierboard,version | tr -d '\0')"
BOARD_ID="$(cat /proc/device-tree/digi,carrierboard,id | tr -d '\0')"
SOC_REV="$(cat /proc/device-tree/cpus/rev | tr -d '\0')"
[ -e "/proc/device-tree/cpus/rev" ] && SOC_REV="$(cat /proc/device-tree/cpus/rev | tr -d '\0')"
if grep -qs '\<digi,ccimx6ul\>' /proc/device-tree/compatible; then
MCA_NODE="/sys/bus/i2c/devices/0-007e"

View File

@ -17,6 +17,11 @@ INI_UNCOMMENT_ASSIGNMENTS_append_mx8mp = " \
use-g2d=1 \
"
# Digi: use g2d on ccimx6sbc to fix desktop window issue
INI_UNCOMMENT_ASSIGNMENTS_append_ccimx6sbc = " \
use-g2d=1 \
"
do_install_append() {
install -Dm0755 ${WORKDIR}/profile ${D}${sysconfdir}/profile.d/weston.sh

View File

@ -0,0 +1,81 @@
From: Gabriel Valcazar <gabriel.valcazar@digi.com>
Date: Thu, 17 Sep 2020 13:16:04 +0200
Subject: [PATCH] libweston: g2d-renderer: try re-adjusting fb if the
FBIOPAN_DISPLAY ioctl fails
By default, the g2d renderer works with 3 buffers, and uses the FBIOPAN_DISPLAY
ioctl to have the kernel switch between them everytime the output has to be
shown. Because of this, when the renderer is initialized, it will increase the
framebuffer's yres_virtual parameter so it is 3 times the size of yres
(vertical resolution).
However, when the system goes through a suspend/resume iteration, the
framebuffer's yres_virtual parameter will change back to its original value,
causing the FBIOPAN_DISPLAY ioctl to fail when using the 2nd and 3rd buffers,
which is 2 out of 3 times whenever something changes in the output. This has
three direct effects:
* Constant "FBIOPAN_DISPLAY failed" messages in the weston log
* Choppy framerate (due to the renderer only being able to show 1/3 of the
total output frames)
* A 2/3 chance that the desktop will not show after resuming from suspend until
there's movement on the screen
To avoid this, whenever a FBIOPAN_DISPLAY ioctl fails, check if the
yres_virtual attribute read from the kernel is different from the one saved in
the renderer and, if so, update it once again and retry the ioctl. This adds
some additional overhead in case of a FBIOPAN_DISPLAY failure, but these have
only been observed in the specific suspend/resume scenario, not in an average
use case.
The only drawback to this workaround is that there's a 1/3 chance that the
display will go blank for a very small period of time when resuming from
suspend. This is due to the framebuffer being reconfigured and, although
undesireable, is much less bothersome than the original issue.
https://jira.digi.com/browse/DEL-7236
Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
---
libweston/renderer-g2d/g2d-renderer.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/libweston/renderer-g2d/g2d-renderer.c b/libweston/renderer-g2d/g2d-renderer.c
index 456190a3..cfc2e8b6 100644
--- a/libweston/renderer-g2d/g2d-renderer.c
+++ b/libweston/renderer-g2d/g2d-renderer.c
@@ -528,12 +528,34 @@ static void
g2d_flip_surface(struct weston_output *output)
{
struct g2d_output_state *go = get_output_state(output);
+ struct fb_var_screeninfo aux_varinfo;
go->fb_info.varinfo.yoffset = go->activebuffer * go->fb_info.y_resolution;
if(ioctl(go->fb_info.fb_fd, FBIOPAN_DISPLAY, &(go->fb_info.varinfo)) < 0)
{
- weston_log("FBIOPAN_DISPLAY Failed\n");
+ /* Check if yres_virtual has changed (it happens on suspend/resume) */
+ if (ioctl(go->fb_info.fb_fd, FBIOGET_VSCREENINFO, &aux_varinfo) < 0) {
+ weston_log("FBIOGET_VSCREENINFO Failed\n");
+ goto out;
+ }
+
+ /* If yres_virtual has changed, adjust it and try flipping the surface again */
+ if (aux_varinfo.yres_virtual != go->fb_info.varinfo.yres_virtual) {
+ aux_varinfo.yres_virtual = aux_varinfo.yres * go->nNumBuffers;
+ if (ioctl(go->fb_info.fb_fd, FBIOPUT_VSCREENINFO, &aux_varinfo) < 0) {
+ weston_log("FBIOPUT_VSCREENINFO Failed\n");
+ goto out;
+ }
+
+ if(ioctl(go->fb_info.fb_fd, FBIOPAN_DISPLAY, &(go->fb_info.varinfo)) < 0) {
+ weston_log("FBIOPAN_DISPLAY Failed\n");
+ }
+ } else {
+ weston_log("FBIOPAN_DISPLAY Failed\n");
+ }
}
+
+out:
go->activebuffer = (go->activebuffer + 1) % go->nNumBuffers;
}

View File

@ -0,0 +1,3 @@
# Copyright (C) 2020 Digi International.
SRC_URI_append_ccimx6sbc = " file://0001-libweston-g2d-renderer-try-re-adjusting-fb-if-the-FB.patch"

View File

@ -15,10 +15,10 @@ Signed-off-by: Prabhu Sundararaj <prabhu.sundarara@nxp.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/xwayland/xwayland-glamor-gbm.c b/hw/xwayland/xwayland-glamor-gbm.c
index 80655fd16..e8c623e56 100644
index a211e09..f5be403 100644
--- a/hw/xwayland/xwayland-glamor-gbm.c
+++ b/hw/xwayland/xwayland-glamor-gbm.c
@@ -174,7 +174,7 @@ xwl_glamor_gbm_create_pixmap_for_bo(ScreenPtr screen, struct gbm_bo *bo,
@@ -166,7 +166,7 @@ xwl_glamor_gbm_create_pixmap_for_bo(ScreenPtr screen, struct gbm_bo *bo,
xwl_pixmap->bo = bo;
xwl_pixmap->buffer = NULL;
xwl_pixmap->image = eglCreateImageKHR(xwl_screen->egl_display,
@ -26,7 +26,7 @@ index 80655fd16..e8c623e56 100644
+ EGL_NO_CONTEXT /*xwl_screen->egl_context*/,
EGL_NATIVE_PIXMAP_KHR,
xwl_pixmap->bo, NULL);
if (xwl_pixmap->image == EGL_NO_IMAGE_KHR)
--
2.17.1

View File

@ -1,7 +0,0 @@
# Copyright (C) 2019, Digi International Inc.
# ccimx6/ccimx6qp platforms use kernel v4.9, which is incompatible with the
# latest revision of the imx-alsa-plugins code due to UAPI changes. For these
# platforms, use an older revision which is functionally the same, but using
# the v4.9 UAPI.
SRCREV_ccimx6 = "9a63071e7734bd164017f3761b8d1944c017611f"

View File

@ -1,27 +0,0 @@
From: Gabriel Valcazar <gabriel.valcazar@digi.com>
Date: Fri, 20 Jul 2018 18:04:55 +0200
Subject: [PATCH] imx_2d_device_g2d: define a G2D_AMPHION_INTERLACED macro
Currently, this symbol is not present in the libg2d used by imx6 platforms, so
this is a workaround to get the package to compile.
https://jira.digi.com/browse/DEL-6078
Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
---
libs/device-2d/imx_2d_device_g2d.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libs/device-2d/imx_2d_device_g2d.c b/libs/device-2d/imx_2d_device_g2d.c
index 56dc550..e5d58c3 100755
--- a/libs/device-2d/imx_2d_device_g2d.c
+++ b/libs/device-2d/imx_2d_device_g2d.c
@@ -27,6 +27,8 @@
GST_DEBUG_CATEGORY_EXTERN (imx2ddevice_debug);
#define GST_CAT_DEFAULT imx2ddevice_debug
+#define G2D_AMPHION_INTERLACED 0x10
+
typedef struct _Imx2DDeviceG2d {
gint capabilities;
struct g2d_surfaceEx src;

View File

@ -6,4 +6,3 @@ SRC_URI += " \
file://0001-gstimxv4l2-map-dev-video1-to-dev-fb0.patch \
file://0002-imx-gst1.0-plugin-fix-build-using-MUSL-C-library.patch \
"
SRC_URI_append_ccimx6 = " file://0002-imx_2d_device_g2d-define-a-G2D_AMPHION_INTERLACED-ma.patch"

View File

@ -1,2 +0,0 @@
# Use EGLFS platform plugin for images without X11
[ -f "/etc/init.d/xserver-nodm" ] || export QT_QPA_PLATFORM="eglfs"

View File

@ -1,9 +0,0 @@
#!/bin/sh
export QT_QPA_PLATFORM="wayland"
[ -f "/etc/profile.d/weston.sh" ] && return
export QT_QPA_PLATFORM="xcb"
# Use EGLFS platform plugin for images without XWayland and X11
[ -f "/etc/xserver-nodm/Xserver" ] || export QT_QPA_PLATFORM="eglfs"

View File

@ -1,2 +0,0 @@
#!/bin/sh
export QT_QPA_PLATFORM=eglfs

View File

@ -1,2 +0,0 @@
#!/bin/sh
export QT_QPA_PLATFORM=wayland

View File

@ -1,2 +0,0 @@
#!/bin/sh
export QT_QPA_PLATFORM=xcb

View File

@ -6,4 +6,4 @@ export QT_QPA_PLATFORM="wayland"
export QT_QPA_PLATFORM="xcb"
# Use EGLFS platform plugin for images without XWayland and X11
[ -f "/etc/xserver-nodm/Xserver" ] || export QT_QPA_PLATFORM="eglfs"
[ -f "/etc/xserver-nodm/Xserver" ] || export QT_QPA_PLATFORM="eglfs" QT_QPA_EGLFS_INTEGRATION="eglfs_viv"

View File

@ -6,13 +6,9 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
IMX_BACKEND = \
"${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland',\
bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \
'fb', d), d)}"
# Digi: we use a custom script per platform, not per backend like NXP does
SRC_URI_append = " \
file://qt5-${IMX_BACKEND}.sh \
file://qt5.sh \
"
SRC_URI_append_imxgpu3d = " \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', \
@ -52,7 +48,7 @@ do_install_append () {
sed -i 's,-L${STAGING_DIR_HOST}/usr/lib,,' ${D}${libdir}/pkgconfig/Qt5*.pc
fi
install -d ${D}${sysconfdir}/profile.d/
install -m 0755 ${WORKDIR}/qt5-${IMX_BACKEND}.sh ${D}${sysconfdir}/profile.d/qt5.sh
install -m 0755 ${WORKDIR}/qt5.sh ${D}${sysconfdir}/profile.d/qt5.sh
}
FILES_${PN} += "${sysconfdir}/profile.d/qt5.sh"

View File

@ -2,13 +2,13 @@ Digi Embedded Yocto provides the following image recipes:
* dey-image-qt: graphical QT image
By default the image is X11-based so it provides a full SATO theme
By default the image is XWayland-based so it provides a full Weston
desktop environment.
To compile the image for the framebuffer (instead of X11) add the
following line to the project's conf/local.conf:
To compile the image for the framebuffer (instead of XWayland) add
the following line to the project's conf/local.conf:
DISTRO_FEATURES_remove = "x11"
DISTRO_FEATURES_remove = "x11 wayland"
* dey-image-aws: console-only image supporting Amazon Web Services IoT

View File

@ -2,13 +2,13 @@ Digi Embedded Yocto provides the following image recipes:
* dey-image-qt: graphical QT image
By default the image is X11-based so it provides a full SATO theme
By default the image is XWayland-based so it provides a full Weston
desktop environment.
To compile the image for the framebuffer (instead of X11) add the
following line to the project's conf/local.conf:
To compile the image for the framebuffer (instead of XWayland) add
the following line to the project's conf/local.conf:
DISTRO_FEATURES_remove = "x11"
DISTRO_FEATURES_remove = "x11 wayland"
* dey-image-aws: console-only image supporting Amazon Web Services IoT