diff --git a/README.md b/README.md index 54ab606b4..ca7b10607 100644 --- a/README.md +++ b/README.md @@ -59,14 +59,31 @@ Documentation is available online on the Digi documentation site: # Downloads -* Demo images: ftp://ftp1.digi.com/support/digiembeddedyocto/2.0/r4/images/ -* Software Development Kit (SDK): ftp://ftp1.digi.com/support/digiembeddedyocto/2.0/r4/sdk/ +* Demo images: ftp://ftp1.digi.com/support/digiembeddedyocto/2.0/r5/images/ +* Software Development Kit (SDK): ftp://ftp1.digi.com/support/digiembeddedyocto/2.0/r5/sdk/ # Release Changelog ## 2.0-r5 -* TBC +* Digi Embedded Yocto + * Support firmware update through the new recovery mode + * Initial support to connect to Remote Manager with the CloudConnector + * Updated U-Boot to version 'dub-2015.04-r7' for Digi ConnectCore 6 and 6UL +* Digi ConnectCore 6UL + * Added support to audio codec MAX98089 + * Added support to camera Omnivision OV5642 + * Optimized kernel configuration (smaller kernel) + * Added support for EDO mode on NAND Flash + * Added PMIC NVRAM support through sysfs + * Added suspend support for PMIC regulators + * Added support for i.MX6UL ADC channels + * Added voltage scaling support for MCA ADC + * Added full-system reset support to MCA watchdog + * Added MCA 32KHz output control through sysfs + * Added VRef output control through sysfs + * Added support to PWM1 on Starter Board expansion header + * Kernel v4.1.38 ## 2.0-r4 @@ -125,17 +142,22 @@ after a failed attempt. Hence the target needs to be reset after an authentication failure. * If TrustFence (TM) image encryption support is enabled, the uSD image will boot a signed U-Boot only. +* Firmware update + * Updating from a microSD card is not supported, only from local partitions + (e.g. the 'update' partition) or from external USB memory devices. + * The software update package must be located in the root level of the + update media (subfolders are not yet supported). +* Cloud Connector + * Remote file system management fails with long file names and paths + (over 255 characters). ## Digi ConnectCore 6UL -* In the Bluetooth interface, the UART hardware flow control doesn’t work -properly. To work around this problem the UART is configured without hardware -flow control at 115200 bps, reducing the maximum throughput of this interface. -This problem will be corrected in newer revisions of the hardware. - -* U-Boot version dub-2015.04-r4.5 may report running on Starter Board version 1 -even when your Starter Board is version 2. In that case Ethernet does not work -in U-Boot. More recent versions of U-Boot fix this issue. +* The UART connected to the Bluetooth chip on early versions of the ConnectCore + 6UL system-on-module (hardware version < 4) cannot properly execute flow + control. To work around this issue, UART1 of these SOM versions has been + configured to operate at 115200 bps and without hardware flow control, + reducing the maximum throughput of this interface. ## Digi ConnectCore 6 diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_US.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_US.bin index fd6ffaeb3..c639f16d6 100644 Binary files a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_US.bin and b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_US.bin differ diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_World.bin b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_World.bin index e3a4b0474..48c54ee1a 100644 Binary files a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_World.bin and b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/bdwlan30_World.bin differ diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/wlan/qcom_cfg.ini b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/wlan/qcom_cfg.ini index 1aaa184f7..fd1a774a1 100644 --- a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/wlan/qcom_cfg.ini +++ b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm/wlan/qcom_cfg.ini @@ -240,7 +240,7 @@ gDataInactivityTimeout=200 # Valid values are 0,1,2. If commented out, the default value is 0. # 0=MCS0-7, 1=MCS0-8, 2=MCS0-9 gVhtRxMCS=2 -gVhtTxMCS=2 +gVhtTxMCS=0 # VHT Tx/Rx MCS values for 2x2 # Valid values are 0,1,2. If commented out, the default value is 0. diff --git a/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0003-openssl_helper-use-dev-urandom-as-seed-source.patch b/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0003-openssl_helper-use-dev-urandom-as-seed-source.patch index 24dcbd229..d8a80eac2 100644 --- a/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0003-openssl_helper-use-dev-urandom-as-seed-source.patch +++ b/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0003-openssl_helper-use-dev-urandom-as-seed-source.patch @@ -20,3 +20,5 @@ index 3c9c779092c5..f0cd4e06f0dd 100644 - return RAND_load_file("/dev/random", bytes); + return RAND_load_file("/dev/urandom", bytes); } + + diff --git a/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0004-hab4_pki_tree.sh-usa-a-random-password-for-the-defau.patch b/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0004-hab4_pki_tree.sh-usa-a-random-password-for-the-defau.patch index 6b668d7c3..ed165689a 100644 --- a/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0004-hab4_pki_tree.sh-usa-a-random-password-for-the-defau.patch +++ b/meta-digi-arm/recipes-bsp/trustfence-cst/trustfence-cst-2.3.2/0004-hab4_pki_tree.sh-usa-a-random-password-for-the-defau.patch @@ -9,7 +9,7 @@ Signed-off-by: Diaz de Grenu, Jose 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/keys/hab4_pki_tree.sh b/keys/hab4_pki_tree.sh -index b2c6b71b604e..93347521cea1 100644 +index b2c6b71b604e..93347521cea1 100755 --- a/keys/hab4_pki_tree.sh +++ b/keys/hab4_pki_tree.sh @@ -95,9 +95,10 @@ fi @@ -26,4 +26,3 @@ index b2c6b71b604e..93347521cea1 100644 fi # The following is required otherwise OpenSSL complains - diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt index 828a4fff6..e30726d19 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt @@ -162,12 +162,16 @@ setenv bootcmd " exit; fi; echo \"\"; - setenv boot_recovery yes - setenv recovery_command wipe_update + setenv boot_recovery yes; + setenv recovery_command wipe_update; saveenv; - echo \">> Firmware installation complete. Booting into recovery for final deployment.\"; + echo \"\"; + echo \"\"; + echo \">> Firmware installation complete. Rebooting into recovery mode for final deployment.\"; + echo \"\"; + echo \"\"; sleep 1; - run recoverycmd; + reset; " saveenv diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulsbc/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulsbc/install_linux_fw_sd.txt index dd58604c7..2240940a9 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulsbc/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulsbc/install_linux_fw_sd.txt @@ -74,7 +74,7 @@ setenv bootcmd " echo \">> Installing Linux kernel and device tree files\"; echo \"\"; echo \"\"; - nand erase.part linux + nand erase.part linux; update linux mmc ${INSTALL_MMCDEV} fat ${INSTALL_LINUX_FILENAME}; if test \$? -eq 1; then echo \"[ERROR] Failed to update linux partition!\"; @@ -87,7 +87,7 @@ setenv bootcmd " echo \">> Installing recovery\"; echo \"\"; echo \"\"; - nand erase.part recovery + nand erase.part recovery; update recovery mmc ${INSTALL_MMCDEV} fat ${INSTALL_RECOVERY_FILENAME}; if test \$? -eq 1; then echo \"[ERROR] Failed to update recovery partition!\"; @@ -100,7 +100,7 @@ setenv bootcmd " echo \">> Installing Linux root file system\"; echo \"\"; echo \"\"; - nand erase.part rootfs + nand erase.part rootfs; update rootfs mmc ${INSTALL_MMCDEV} fat ${INSTALL_ROOTFS_FILENAME}; if test \$? -eq 1; then echo \"[ERROR] Failed to update rootfs partition!\"; @@ -109,12 +109,16 @@ setenv bootcmd " exit; fi; echo \"\"; - setenv boot_recovery yes - setenv recovery_command wipe_update + setenv boot_recovery yes; + setenv recovery_command wipe_update; saveenv; - echo \">> Firmware installation complete. Booting into recovery for final deployment.\"; + echo \"\"; + echo \"\"; + echo \">> Firmware installation complete. Rebooting into recovery mode for final deployment.\"; + echo \"\"; + echo \"\"; sleep 1; - run recoverycmd; + reset; " saveenv diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulstarter/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulstarter/install_linux_fw_sd.txt index e6865bd11..24ba14447 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulstarter/install_linux_fw_sd.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6ulstarter/install_linux_fw_sd.txt @@ -74,7 +74,7 @@ setenv bootcmd " echo \">> Installing Linux kernel and device tree files\"; echo \"\"; echo \"\"; - nand erase.part linux + nand erase.part linux; update linux mmc ${INSTALL_MMCDEV} fat ${INSTALL_LINUX_FILENAME}; if test \$? -eq 1; then echo \"[ERROR] Failed to update linux partition!\"; @@ -87,7 +87,7 @@ setenv bootcmd " echo \">> Installing recovery\"; echo \"\"; echo \"\"; - nand erase.part recovery + nand erase.part recovery; update recovery mmc ${INSTALL_MMCDEV} fat ${INSTALL_RECOVERY_FILENAME}; if test \$? -eq 1; then echo \"[ERROR] Failed to update recovery partition!\"; @@ -100,7 +100,7 @@ setenv bootcmd " echo \">> Installing Linux root file system\"; echo \"\"; echo \"\"; - nand erase.part rootfs + nand erase.part rootfs; update rootfs mmc ${INSTALL_MMCDEV} fat ${INSTALL_ROOTFS_FILENAME}; if test \$? -eq 1; then echo \"[ERROR] Failed to update rootfs partition!\"; @@ -109,12 +109,16 @@ setenv bootcmd " exit; fi; echo \"\"; - setenv boot_recovery yes - setenv recovery_command wipe_update + setenv boot_recovery yes; + setenv recovery_command wipe_update; saveenv; - echo \">> Firmware installation complete. Booting into recovery for final deployment.\"; + echo \"\"; + echo \"\"; + echo \">> Firmware installation complete. Rebooting into recovery mode for final deployment.\"; + echo \"\"; + echo \"\"; sleep 1; - run recoverycmd; + reset; " saveenv diff --git a/meta-digi-arm/recipes-digi/mca/mca-tool_1.2.bb b/meta-digi-arm/recipes-digi/mca/mca-tool_1.3.bb similarity index 67% rename from meta-digi-arm/recipes-digi/mca/mca-tool_1.2.bb rename to meta-digi-arm/recipes-digi/mca/mca-tool_1.3.bb index 803d231b7..fb130b91e 100644 --- a/meta-digi-arm/recipes-digi/mca/mca-tool_1.2.bb +++ b/meta-digi-arm/recipes-digi/mca/mca-tool_1.3.bb @@ -7,8 +7,8 @@ LICENSE = "CLOSED" PKGNAME = "mca_tool" SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz" -SRC_URI[md5sum] = "eb36b9e98c3ac30372343567c29f385d" -SRC_URI[sha256sum] = "864fdf42ce313e1a55caa654d53d9b9efa0073034914eb7b2e1ecc95f1a4fbf2" +SRC_URI[md5sum] = "d54692090bf0820e6116364822f6433f" +SRC_URI[sha256sum] = "e8267e66ba496a1e77b2dec70d6555bdeb8e06b267e776c86b9d4b01e9d13eb5" S = "${WORKDIR}/${PKGNAME}-${PV}" diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb index 1ef977f14..afe55d0dc 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm.bb @@ -34,6 +34,8 @@ SRC_URI = " \ file://0018-qcacld-Indicate-disconnect-event-to-upper-layers.patch \ file://0019-wdd_hdd_main-Print-con_mode-to-clearly-see-if-in-FTM.patch \ file://0020-Makefile-Pass-BUILD_DEBUG_VERSION-to-kbuild-system.patch \ + file://0021-cosmetic-change-log-level.patch \ + file://0022-fix-issue-with-_scan_callback.patch \ " S = "${WORKDIR}/${PV}" diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0021-cosmetic-change-log-level.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0021-cosmetic-change-log-level.patch new file mode 100644 index 000000000..2b2c6c8fb --- /dev/null +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0021-cosmetic-change-log-level.patch @@ -0,0 +1,53 @@ +From: Pedro Perez de Heredia +Date: Mon, 13 Feb 2017 09:43:50 +0100 +Subject: [PATCH] kernel-module-qualcomm: cosmetic change log level for anoying + driver messages + +Signed-off-by: Pedro Perez de Heredia +--- + CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c | 4 ++-- + CORE/SVC/src/logging/wlan_logging_sock_svc.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c +index 1a1e51e..ee2af05 100644 +--- a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c ++++ b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c +@@ -1202,7 +1202,7 @@ TODO: MMC SDIO3.0 Setting should also be modified in ReInit() function when Powe + clock = device->host->f_max; + } + +- printk(KERN_ERR "%s: Dumping clocks (%d,%d)\n", __func__, func->card->cis.max_dtr, device->host->f_max); ++ pr_info("%s: Dumping clocks (%d,%d)\n", __func__, func->card->cis.max_dtr, device->host->f_max); + + /* + // We don't need to set the clock explicitly on 8064/ADP platforms. +@@ -1513,7 +1513,7 @@ static A_STATUS hifEnableFunc(HIF_DEVICE *device, struct sdio_func *func) + sdio_release_host(func); + return A_ERROR; + } +- printk(KERN_ERR"AR6000: Set async interrupt delay clock as %d.\n", asyncintdelay); ++ pr_info("AR6000: Set async interrupt delay clock as %d.\n", asyncintdelay); + } + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) +diff --git a/CORE/SVC/src/logging/wlan_logging_sock_svc.c b/CORE/SVC/src/logging/wlan_logging_sock_svc.c +index 0253215..379d878 100644 +--- a/CORE/SVC/src/logging/wlan_logging_sock_svc.c ++++ b/CORE/SVC/src/logging/wlan_logging_sock_svc.c +@@ -431,13 +431,13 @@ static int wlan_logging_thread(void *Arg) + || gwlan_logging.exit)); + + if (ret_wait_status == -ERESTARTSYS) { +- pr_err("%s: wait_event_interruptible returned -ERESTARTSYS", ++ pr_info("%s: wait_event_interruptible returned -ERESTARTSYS", + __func__); + break; + } + + if (gwlan_logging.exit) { +- pr_err("%s: Exiting the thread\n", __func__); ++ pr_info("%s: Exiting the thread\n", __func__); + break; + } + diff --git a/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0022-fix-issue-with-_scan_callback.patch b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0022-fix-issue-with-_scan_callback.patch new file mode 100644 index 000000000..6f1f6fb51 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/kernel-module-qualcomm/kernel-module-qualcomm/0022-fix-issue-with-_scan_callback.patch @@ -0,0 +1,102 @@ +From: Pedro Perez de Heredia +Date: Mon, 13 Feb 2017 10:28:35 +0100 +Subject: [PATCH] kernel-module-qualcomm: fix issue with _scan_callback at + module unload + +Protect the invocation of the _scan_done() callback function with the +global lock to avoid that it is called while the module is being unloaded +and the data structures have been freed. + +https://jira.digi.com/browse/DEL-3607 +https://jira.digi.com/browse/DEL-3393 + +Signed-off-by: Pedro Perez de Heredia +--- + CORE/SME/src/csr/csrApiScan.c | 43 +++++++++++++++++++++++++++++-------------- + 1 file changed, 29 insertions(+), 14 deletions(-) + +diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c +index 83a74cb..2f90cce 100644 +--- a/CORE/SME/src/csr/csrApiScan.c ++++ b/CORE/SME/src/csr/csrApiScan.c +@@ -6420,13 +6420,20 @@ eHalStatus csrScanFreeRequest(tpAniSirGlobal pMac, tCsrScanRequest *pReq) + + void csrScanCallCallback(tpAniSirGlobal pMac, tSmeCmd *pCommand, eCsrScanStatus scanStatus) + { +- if(pCommand->u.scanCmd.callback) ++ eHalStatus status; ++ ++ status = sme_AcquireGlobalLock( &pMac->sme ); ++ if ( HAL_STATUS_SUCCESS( status ) ) + { +- pCommand->u.scanCmd.callback(pMac, pCommand->u.scanCmd.pContext, +- pCommand->sessionId, +- pCommand->u.scanCmd.scanID, scanStatus); +- } else { +- smsLog( pMac, LOG2, "%s:%d - Callback NULL!!!", __func__, __LINE__); ++ if(pCommand->u.scanCmd.callback) ++ { ++ pCommand->u.scanCmd.callback(pMac, pCommand->u.scanCmd.pContext, ++ pCommand->sessionId, ++ pCommand->u.scanCmd.scanID, scanStatus); ++ } else { ++ smsLog( pMac, LOG2, "%s:%d - Callback NULL!!!", __func__, __LINE__); ++ } ++ sme_ReleaseGlobalLock( &pMac->sme ); + } + } + +@@ -7126,6 +7133,7 @@ tANI_BOOLEAN csrScanRemoveFreshScanCommand(tpAniSirGlobal pMac, tANI_U8 sessionI + tSmeCmd *pCommand; + tDblLinkList localList; + tDblLinkList *pCmdList; ++ eHalStatus status; + + vos_mem_zero(&localList, sizeof(tDblLinkList)); + if(!HAL_STATUS_SUCCESS(csrLLOpen(pMac->hHdd, &localList))) +@@ -7178,15 +7186,21 @@ tANI_BOOLEAN csrScanRemoveFreshScanCommand(tpAniSirGlobal pMac, tANI_U8 sessionI + while( (pEntry = csrLLRemoveHead(&localList, LL_ACCESS_NOLOCK)) ) + { + pCommand = GET_BASE_ADDR(pEntry, tSmeCmd, Link); +- if (pCommand->u.scanCmd.callback) ++ ++ status = sme_AcquireGlobalLock( &pMac->sme ); ++ if ( HAL_STATUS_SUCCESS( status ) ) + { +- /* User scan request is pending, ++ if (pCommand->u.scanCmd.callback) ++ { ++ /* User scan request is pending, + * send response with status eCSR_SCAN_ABORT*/ +- pCommand->u.scanCmd.callback(pMac, +- pCommand->u.scanCmd.pContext, +- sessionId, +- pCommand->u.scanCmd.scanID, +- eCSR_SCAN_ABORT); ++ pCommand->u.scanCmd.callback(pMac, ++ pCommand->u.scanCmd.pContext, ++ sessionId, ++ pCommand->u.scanCmd.scanID, ++ eCSR_SCAN_ABORT); ++ } ++ sme_ReleaseGlobalLock( &pMac->sme ); + } + csrReleaseCommandScan( pMac, pCommand ); + } +@@ -8015,7 +8029,6 @@ eHalStatus csrProcessSetBGScanParam(tpAniSirGlobal pMac, tSmeCmd *pCommand) + return (status); + } + +- + eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId, + eCsrAbortReason reason) + { +@@ -8035,6 +8048,8 @@ eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId, + { + + pCommand = GET_BASE_ADDR( pEntry, tSmeCmd, Link ); ++ pCommand->u.scanCmd.callback = NULL; ++ pCommand->u.scanCmd.pContext = NULL; + csrAbortCommand( pMac, pCommand, eANI_BOOLEAN_FALSE); + } + csrLLUnlock(&pMac->scan.scanCmdPendingList); diff --git a/meta-digi-dey/classes/dey-image-installer.bbclass b/meta-digi-dey/classes/dey-image-installer.bbclass new file mode 100644 index 000000000..9c29b4c65 --- /dev/null +++ b/meta-digi-dey/classes/dey-image-installer.bbclass @@ -0,0 +1,52 @@ +# +# Generate DEY installer ZIP package +# +# Copyright 2017, Digi International Inc. +# + +DEPENDS += "zip-native" + +# +# Filesystem types allowed in the installer ZIP +# +FSTYPES_WHITELIST = " \ + boot.ubifs \ + boot.vfat \ + ext4 \ + recovery.ubifs \ + recovery.vfat \ + ubifs \ +" + +generate_installer_zip () { + # Get list of files to pack + INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr" + for ext in ${FSTYPES_WHITELIST}; do + if readlink -e "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then + INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" + fi + done + for ubconf in ${UBOOT_CONFIG}; do + if readlink -e "${DEPLOY_DIR_IMAGE}/u-boot-${ubconf}.${UBOOT_SUFFIX}" >/dev/null; then + INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/u-boot-${ubconf}.${UBOOT_SUFFIX}" + fi + done + + # Create README file + cat >README.txt <<_EOF_ +Digi Embedded Yocto kit installer +--------------------------------- + +_EOF_ + md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g" >> README.txt + + # Pack the files + zip -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} README.txt + + # Create the symlink + if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip" ]; then + ln -sf ${IMAGE_NAME}.installer.zip ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.installer.zip + fi +} + +IMAGE_POSTPROCESS_COMMAND += "generate_installer_zip; " diff --git a/meta-digi-dey/classes/dey-image.bbclass b/meta-digi-dey/classes/dey-image.bbclass index 78e12f53a..8d19292dd 100644 --- a/meta-digi-dey/classes/dey-image.bbclass +++ b/meta-digi-dey/classes/dey-image.bbclass @@ -26,3 +26,9 @@ EXTRA_USERS_PARAMS += "\ # Create QT5 capable toolchain/SDK if 'dey-qt' image feature is enabled # inherit ${@bb.utils.contains("IMAGE_FEATURES", "dey-qt", "populate_sdk_qt5", "",d)} + +# +# Generate ZIP installer if configured in the project's local.conf +# +DEY_IMAGE_INSTALLER ?= "0" +inherit ${@base_conditional("DEY_IMAGE_INSTALLER", "1", "dey-image-installer", "", d)} diff --git a/meta-digi-dey/conf/layer.conf b/meta-digi-dey/conf/layer.conf index a8b03895f..f0737ec43 100644 --- a/meta-digi-dey/conf/layer.conf +++ b/meta-digi-dey/conf/layer.conf @@ -10,12 +10,12 @@ BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ BBFILES += "${@' '.join('${LAYERDIR}/other-layers/%s/recipes*/*/*.bbappend' % layer \ for layer in BBFILE_COLLECTIONS.split())}" -BBFILE_COLLECTIONS += "dey" -BBFILE_PATTERN_dey := "^${LAYERDIR}/" -BBFILE_PRIORITY_dey = "6" +BBFILE_COLLECTIONS += "digi-dey" +BBFILE_PATTERN_digi-dey := "^${LAYERDIR}/" +BBFILE_PRIORITY_digi-dey = "6" -LAYERDEPENDS_dey = "core digi-arm" -LAYERDEPENDS_dey += "openembedded-layer networking-layer webserver qt5-layer" +LAYERDEPENDS_digi-dey = "core digi-arm" +LAYERDEPENDS_digi-dey += "openembedded-layer networking-layer webserver qt5-layer swupdate" # Digi's General and Open Source license agreements DIGI_EULA_FILE = "${LAYERDIR}/DIGI_EULA" diff --git a/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6ul/wpa_supplicant.conf-sane b/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6ul/wpa_supplicant.conf-sane index a180d27d8..c58546a06 100644 --- a/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6ul/wpa_supplicant.conf-sane +++ b/meta-digi-dey/recipes-connectivity/wpa-supplicant/wpa-supplicant/ccimx6ul/wpa_supplicant.conf-sane @@ -4,6 +4,13 @@ fast_reauth=1 update_config=1 ap_scan=1 + +# Static scheduled scan interval time in seconds +# +# The wpa-supplicant dynamically adjusts the scheduled scan time interval. On +# occassions, fixing the interval time is helpful, for example on DFS channels. +#sched_scan_interval=2 + network={ scan_ssid=1 ssid="" diff --git a/meta-digi-dey/recipes-core/busybox/busybox-1.23.2/ccimx6ul/suspend b/meta-digi-dey/recipes-core/busybox/busybox-1.23.2/ccimx6ul/suspend index c89ed5ec1..cc460bee2 100755 --- a/meta-digi-dey/recipes-core/busybox/busybox-1.23.2/ccimx6ul/suspend +++ b/meta-digi-dey/recipes-core/busybox/busybox-1.23.2/ccimx6ul/suspend @@ -3,7 +3,7 @@ # # suspend # -# Copyright (C) 2016 by Digi International Inc. +# Copyright (C) 2016, 2017 by Digi International Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify it @@ -17,6 +17,8 @@ scriptname="$(basename ${0})" syspower="/sys/power/state" +lockfile="/var/lock/${scriptname}.lock" +lockfd="9" usage() { printf "\nSuspend system to RAM memory\n" @@ -40,6 +42,21 @@ resume_interfaces() { fi } +enter_critical_section() { + # Create lock file + eval "exec ${lockfd}>${lockfile}" + + # Acquire the lock in non blocking mode. Otherwise, additional calls + # to the script will be queued and the system will endlessly go in + # and out of suspend to ram + flock -n "${lockfd}" || exit 0 +} + +exit_critical_section() { + # Release the lock + flock -u "${lockfd}" +} + while getopts "h" c; do case "${c}" in h) usage; exit;; @@ -47,15 +64,19 @@ while getopts "h" c; do done if [ -f "${syspower}" ]; then + # Avoid running multiple instances of this script in parallel + enter_critical_section + # Pre-suspend actions suspend_interfaces # Suspend the device printf "mem" > ${syspower} - sleep .5 # Post-resume actions resume_interfaces + + exit_critical_section else printf "\n[ERROR] File ${syspower} not found\n\n" fi diff --git a/meta-digi-dey/recipes-core/initscripts/initscripts-1.0/caam_jr0_wakeup.sh b/meta-digi-dey/recipes-core/initscripts/initscripts-1.0/caam_jr0_wakeup.sh new file mode 100644 index 000000000..380a98e66 --- /dev/null +++ b/meta-digi-dey/recipes-core/initscripts/initscripts-1.0/caam_jr0_wakeup.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# The full CAAM function is exclusive with the Mega/Fast mix off feature in DSM. +# If CAAM is enabled, the Mega/Fast mix off feature needs to be disabled, and +# the user should enable CAAM jr0 as a wakeup source after the kernel boots up, +# and then Mega/Fast mix will keep the power on in DSM. +JR0_WAKEUP="/sys/bus/platform/devices/2100000.aips-bus/2140000.caam/2141000.jr0/power/wakeup" +if [ -f "${JR0_WAKEUP}" ]; then + echo "enabled" > "${JR0_WAKEUP}" +fi diff --git a/meta-digi-dey/recipes-core/initscripts/initscripts_1.0.bbappend b/meta-digi-dey/recipes-core/initscripts/initscripts_1.0.bbappend index 91197617c..d803b5e8e 100644 --- a/meta-digi-dey/recipes-core/initscripts/initscripts_1.0.bbappend +++ b/meta-digi-dey/recipes-core/initscripts/initscripts_1.0.bbappend @@ -1,12 +1,21 @@ -# Copyright (C) 2013 Digi International. +# Copyright (C) 2013-2017 Digi International. FILESEXTRAPATHS_prepend := "${THISDIR}/${BP}:" SRC_URI += "file://device_table.txt \ file://devtmpfs.sh" +SRC_URI_append_ccimx6ul = " file://caam_jr0_wakeup.sh" + do_install_append() { install -m 755 ${WORKDIR}/devtmpfs.sh ${D}${sysconfdir}/init.d/devtmpfs.sh update-rc.d -r ${D} devtmpfs.sh start 03 S . install -m 0755 ${WORKDIR}/device_table.txt ${D}${sysconfdir}/device_table } + +do_install_append_ccimx6ul() { + install -m 0755 ${WORKDIR}/caam_jr0_wakeup.sh ${D}${sysconfdir}/init.d/caam_jr0_wakeup.sh + update-rc.d -r ${D} caam_jr0_wakeup.sh start 20 S . +} + +PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_1.0.bb b/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_1.0.bb deleted file mode 100644 index 0a777f821..000000000 --- a/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_1.0.bb +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (C) 2017, Digi International Inc. - -SUMMARY = "Digi's device cloud connector" -SECTION = "libs" -LICENSE = "MPL-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" - -DEPENDS = "confuse openssl recovery-utils zlib" - -SRC_URI = "${DIGI_PKG_SRC}/${BP}.tar.gz" - -SRC_URI[md5sum] = "db366b0358c1b47f6380080ce75d91e4" -SRC_URI[sha256sum] = "5ecd4b1830fea7746e005465b6eef30f118302147861eb4074cf717fffbdf9d5" - -S = "${WORKDIR}/${PN}-${PV}" - -inherit pkgconfig - -do_install() { - oe_runmake DESTDIR=${D} install -} - -PACKAGES =+ "${PN}-cert" - -FILES_${PN}-cert = "${sysconfdir}/ssl/certs/Digi_Int-ca-cert-public.crt" - -CONFFILES_${PN} += "${sysconfdir}/cc.conf" - -RDEPENDS_${PN} = "${PN}-cert" diff --git a/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb b/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb index 32afcc5f4..df5c2d21f 100644 --- a/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb +++ b/meta-digi-dey/recipes-digi/cloudconnector/cloudconnector_git.bb @@ -10,7 +10,12 @@ DEPENDS = "confuse openssl recovery-utils zlib" SRCBRANCH = "master" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://git@stash.digi.com/cc/cc_dey.git;protocol=ssh;branch=${SRCBRANCH}" +CC_STASH = "gitsm://git@stash.digi.com/cc/cc_dey.git;protocol=ssh" +CC_GITHUB = "gitsm://github.com/digi-embedded/cc_dey.git;protocol=git" + +CC_GIT_URI ?= "${@base_conditional('DIGI_INTERNAL_GIT', '1' , '${CC_STASH}', '${CC_GITHUB}', d)}" + +SRC_URI = "${CC_GIT_URI};branch=${SRCBRANCH}" S = "${WORKDIR}/git" @@ -27,5 +32,3 @@ FILES_${PN}-cert = "${sysconfdir}/ssl/certs/Digi_Int-ca-cert-public.crt" CONFFILES_${PN} += "${sysconfdir}/cc.conf" RDEPENDS_${PN} = "${PN}-cert" - -DEFAULT_PREFERENCE = "-1" diff --git a/meta-digi-dey/recipes-graphics/mesa/mesa_%.bbappend b/meta-digi-dey/recipes-graphics/mesa/mesa_%.bbappend new file mode 100644 index 000000000..d9020a0e6 --- /dev/null +++ b/meta-digi-dey/recipes-graphics/mesa/mesa_%.bbappend @@ -0,0 +1,6 @@ +# Copyright (C) 2017 Digi International + +# +# Add runtime dependency so that GLES3 headers don't need to be added manually +# +RDEPENDS_libgles2-mesa-dev += "libgles3-mesa-dev" diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf index 7c219776e..ffd115c07 100644 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf +++ b/meta-digi-dey/recipes-multimedia/pulseaudio/pulseaudio/dey-audio-sgtl5000.conf @@ -30,40 +30,48 @@ auto-profiles = no description = Analog Mono device-strings = hw:%f channel-map = mono +priority = 2 [Mapping analog-stereo] description = Analog Stereo device-strings = hw:%f channel-map = left,right +priority = 60 [Profile input:analog-mono] description = Analog Mono Input input-mappings = analog-mono skip-probe = yes +priority = 2 [Profile input:analog-stereo] description = Analog Stereo Input input-mappings = analog-stereo skip-probe = yes +priority = 60 [Profile output:analog-mono] description = Analog Mono Output output-mappings = analog-mono skip-probe = yes +priority = 200 [Profile output:analog-mono+input:analog-mono] description = Analog Mono Duplex output-mappings = analog-mono input-mappings = analog-mono skip-probe = yes +priority = 202 [Profile output:analog-stereo] description = Analog Stereo Output output-mappings = analog-stereo skip-probe = yes +priority = 6000 [Profile output:analog-stereo+input:analog-stereo] description = Analog Stereo Duplex output-mappings = analog-stereo input-mappings = analog-stereo skip-probe = yes +priority = 6060 diff --git a/sdk/build-github.sh b/sdk/build-github.sh index d2f16f66e..f84156d02 100755 --- a/sdk/build-github.sh +++ b/sdk/build-github.sh @@ -32,6 +32,10 @@ INHERIT += \"rm_work\" RM_WORK_EXCLUDE += \"dey-image-qt linux-dey qtbase u-boot-dey\" " +ZIP_INSTALLER_CFG=" +DEY_IMAGE_INSTALLER = \"1\" +" + X11_REMOVAL_CFG=" DISTRO_FEATURES_remove = \"x11\" " @@ -169,6 +173,7 @@ for platform in ${DY_PLATFORMS}; do -e "/^#SSTATE_DIR ?=/cSSTATE_DIR ?= \"${YOCTO_PROJ_DIR}/sstate-cache\"" \ conf/local.conf printf "${RM_WORK_CFG}" >> conf/local.conf + printf "${ZIP_INSTALLER_CFG}" >> conf/local.conf # Remove 'x11' distro feature if building framebuffer images if [ "${DY_FB_IMAGE}" = "true" ]; then printf "${X11_REMOVAL_CFG}" >> conf/local.conf diff --git a/sdk/build.sh b/sdk/build.sh index 178f8b78a..e7c5c1eae 100755 --- a/sdk/build.sh +++ b/sdk/build.sh @@ -45,6 +45,10 @@ INHERIT += \"rm_work\" RM_WORK_EXCLUDE += \"dey-image-qt linux-dey qtbase u-boot-dey\" " +ZIP_INSTALLER_CFG=" +DEY_IMAGE_INSTALLER = \"1\" +" + X11_REMOVAL_CFG=" DISTRO_FEATURES_remove = \"x11\" " @@ -170,6 +174,7 @@ done<<-_EOF_ ccimx6ulsbc DONTBUILDVARIANTS dey-image-qt ccimx6ulstarter DONTBUILDVARIANTS core-image-base ccimx6ulsom DONTBUILDVARIANTS dey-image-mft-module-min + ccimx6ulrftest DONTBUILDVARIANTS dey-image-mft-module-rf _EOF_ YOCTO_IMGS_DIR="${WORKSPACE}/images" @@ -243,6 +248,7 @@ for platform in ${DY_PLATFORMS}; do if [ "${DY_RM_WORK}" = "true" ]; then printf "${RM_WORK_CFG}" >> conf/local.conf fi + printf "${ZIP_INSTALLER_CFG}" >> conf/local.conf # Remove 'x11' distro feature if building framebuffer images if [ "${DY_FB_IMAGE}" = "true" ]; then printf "${X11_REMOVAL_CFG}" >> conf/local.conf