Updates trusted-firmware-a to a commit with the LPM patches and removes them from yocto.
Signed-off-by: Manorit Chawdhry <[email protected]> --- .../trusted-firmware-a-ti.inc | 15 +- ...luster_start_id-depending-on-the-soc.patch | 115 ----------- ...essage-to-encrypt-tfa-during-suspend.patch | 194 ------------------ ...uspend-in-case-of-LPM_BOARDCFG_MANAG.patch | 68 ------ 4 files changed, 2 insertions(+), 390 deletions(-) delete mode 100644 meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0001-feat-k3-choose-cluster_start_id-depending-on-the-soc.patch delete mode 100644 meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0002-feat-ti-add-message-to-encrypt-tfa-during-suspend.patch delete mode 100644 meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0003-feat-k3-handle-suspend-in-case-of-LPM_BOARDCFG_MANAG.patch diff --git a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-ti.inc b/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-ti.inc index f1a6eec17d41..f830e1815ab0 100644 --- a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-ti.inc +++ b/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-ti.inc @@ -2,10 +2,10 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/trusted-firmware-a:" -PV = "2.13+git" +PV = "2.14+git" LIC_FILES_CHKSUM = "file://docs/license.rst;md5=6ed7bace7b0bc63021c6eba7b524039e" -SRCREV_tfa = "e0c4d3903b382bf34f552af53e6d955fae5283ab" +SRCREV_tfa = "76500ceaeefcda967d8a1f4e30bb04f9fe0425a2" SRC_URI_TRUSTED_FIRMWARE_A = "git://git.trustedfirmware.org/TF-A/trusted-firmware-a.git;protocol=https" SRCBRANCH = "master" @@ -30,14 +30,3 @@ EXTRA_OEMAKE += "${@ 'BL32_BASE=' + d.getVar('TFA_K3_BL32_BASE') if d.getVar('TF EXTRA_OEMAKE += "${@ 'PRELOADED_BL33_BASE=' + d.getVar('TFA_K3_PRELOADED_BL33') if d.getVar('TFA_K3_PRELOADED_BL33') else ''}" EXTRA_OEMAKE += "${@ 'K3_PM_SYSTEM_SUSPEND=' + d.getVar('TFA_K3_SYSTEM_SUSPEND') if d.getVar('TFA_K3_SYSTEM_SUSPEND') else ''}" EXTRA_OEMAKE:append:ti-falcon = " PRELOADED_BL33_BASE=0x82000000 K3_HW_CONFIG_BASE=0x88000000" - -# LPM support patches for Jacinto platforms (J7200, J742S2, J784S4) -TFA_JACINTO_LPM_PATCHES = " \ - file://0001-feat-k3-choose-cluster_start_id-depending-on-the-soc.patch \ - file://0002-feat-ti-add-message-to-encrypt-tfa-during-suspend.patch \ - file://0003-feat-k3-handle-suspend-in-case-of-LPM_BOARDCFG_MANAG.patch \ -" - -SRC_URI:append:j7200 = " ${TFA_JACINTO_LPM_PATCHES}" -SRC_URI:append:j742s2 = " ${TFA_JACINTO_LPM_PATCHES}" -SRC_URI:append:j784s4 = " ${TFA_JACINTO_LPM_PATCHES}" diff --git a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0001-feat-k3-choose-cluster_start_id-depending-on-the-soc.patch b/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0001-feat-k3-choose-cluster_start_id-depending-on-the-soc.patch deleted file mode 100644 index ad3b8fbf1358..000000000000 --- a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0001-feat-k3-choose-cluster_start_id-depending-on-the-soc.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 3de4f871d9bfe29c3862860e494bfa70ba72af3e Mon Sep 17 00:00:00 2001 -From: Abhash Kumar Jha <[email protected]> -Date: Mon, 20 Oct 2025 11:26:17 +0530 -Subject: [PATCH 1/3] feat(k3): choose cluster_start_id depending on the soc - -The CLUSTER_DEVICE_START_ID denotes the device id of the A-core cluster. -It is utilized when powering off the entire cluster. - -J7200, J721E and J721S2 have a different cluster_start_id than their -"generic" counterparts. - -Query the JTAG_ID register to get the part id and choose the -cluster_start_id depending on that. - -Upstream-Status: Pending - -Change-Id: I44d3ac0ec646c39019e4c0167d34f410015a147a -Signed-off-by: Abhash Kumar Jha <[email protected]> ---- - plat/ti/k3/common/k3_bl31_setup.c | 1 + - plat/ti/k3/common/k3_psci.c | 25 ++++++++++++++++++++++++- - plat/ti/k3/include/platform_def.h | 16 ++++++++++++++++ - 3 files changed, 41 insertions(+), 1 deletion(-) - -diff --git a/plat/ti/k3/common/k3_bl31_setup.c b/plat/ti/k3/common/k3_bl31_setup.c -index 1b93dc860..79a9c924c 100644 ---- a/plat/ti/k3/common/k3_bl31_setup.c -+++ b/plat/ti/k3/common/k3_bl31_setup.c -@@ -20,6 +20,7 @@ const mmap_region_t plat_k3_mmap[] = { - K3_MAP_REGION_FLAT(SEC_PROXY_RT_BASE, SEC_PROXY_RT_SIZE, MT_DEVICE | MT_RW | MT_SECURE), - K3_MAP_REGION_FLAT(SEC_PROXY_SCFG_BASE, SEC_PROXY_SCFG_SIZE, MT_DEVICE | MT_RW | MT_SECURE), - K3_MAP_REGION_FLAT(SEC_PROXY_DATA_BASE, SEC_PROXY_DATA_SIZE, MT_DEVICE | MT_RW | MT_SECURE), -+ K3_MAP_REGION_FLAT(WKUP_CTRL_MMR0_BASE, WKUP_CTRL_MMR0_SIZE, MT_DEVICE | MT_RW | MT_SECURE), - { /* sentinel */ } - }; - -diff --git a/plat/ti/k3/common/k3_psci.c b/plat/ti/k3/common/k3_psci.c -index ec37d9f4c..a443dd851 100644 ---- a/plat/ti/k3/common/k3_psci.c -+++ b/plat/ti/k3/common/k3_psci.c -@@ -11,6 +11,8 @@ - #include <common/debug.h> - #include <lib/el3_runtime/cpu_data.h> - #include <lib/psci/psci.h> -+#include <lib/mmio.h> -+#include <lib/utils_def.h> - #include <plat/common/platform.h> - - #include <ti_sci_protocol.h> -@@ -83,6 +85,27 @@ static int k3_pwr_domain_on(u_register_t mpidr) - return PSCI_E_SUCCESS; - } - -+uint32_t get_plat_cluster_start_id() -+{ -+ static uint32_t cluster_id; -+ uint32_t part_id, jtag_id_reg; -+ -+ if (cluster_id) { -+ return cluster_id; -+ } -+ -+ jtag_id_reg = mmio_read_32(WKUP_CTRL_MMR0_BASE + JTAG_ID); -+ part_id = EXTRACT(JTAG_PART_ID, jtag_id_reg); -+ -+ if ((part_id == J7200_PART_ID) || (part_id == J721E_PART_ID) || (part_id == J721S2_PART_ID)) { -+ cluster_id = J7_PLAT_CLUSTER_DEVICE_START_ID; -+ } else { -+ cluster_id = PLAT_CLUSTER_DEVICE_START_ID; -+ } -+ -+ return cluster_id; -+} -+ - void k3_pwr_domain_off(const psci_power_state_t *target_state) - { - int core, cluster, proc_id, device_id, cluster_id, ret; -@@ -97,7 +120,7 @@ void k3_pwr_domain_off(const psci_power_state_t *target_state) - cluster = MPIDR_AFFLVL1_VAL(read_mpidr_el1()); - proc_id = PLAT_PROC_START_ID + core; - device_id = PLAT_PROC_DEVICE_START_ID + core; -- cluster_id = PLAT_CLUSTER_DEVICE_START_ID + (cluster * 2); -+ cluster_id = get_plat_cluster_start_id() + (cluster * 2); - - /* - * If we are the last core in the cluster then we take a reference to -diff --git a/plat/ti/k3/include/platform_def.h b/plat/ti/k3/include/platform_def.h -index db5e31d95..d191781a6 100644 ---- a/plat/ti/k3/include/platform_def.h -+++ b/plat/ti/k3/include/platform_def.h -@@ -25,6 +25,22 @@ - #define SEC_PROXY_RT_SIZE 0x80000 - #endif /* K3_SEC_PROXY_LITE */ - -+#define WKUP_CTRL_MMR0_BASE UL(0x43000000) -+#define WKUP_CTRL_MMR0_SIZE UL(0x20000) -+#define JTAG_ID U(0x14) -+#define JTAG_PART_ID_MASK GENMASK(27, 12) -+ -+#define J721E_PART_ID U(0xBB64) -+#define J7200_PART_ID U(0xBB6D) -+#define J721S2_PART_ID U(0xBB75) -+#define J784S4_J742S2_PART_ID U(0xBB80) -+ -+#define JTAG_PART_ID_WIDTH U(0x10) -+#define JTAG_PART_ID_SHIFT U(0xC) -+ -+/* A-core Cluster Device ID for j721e, j7200 and j721s2 */ -+#define J7_PLAT_CLUSTER_DEVICE_START_ID U(0x4) -+ - #define SEC_PROXY_TIMEOUT_US 1000000 - #define SEC_PROXY_MAX_MESSAGE_SIZE 56 - --- -2.34.1 diff --git a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0002-feat-ti-add-message-to-encrypt-tfa-during-suspend.patch b/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0002-feat-ti-add-message-to-encrypt-tfa-during-suspend.patch deleted file mode 100644 index 09e699996035..000000000000 --- a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0002-feat-ti-add-message-to-encrypt-tfa-during-suspend.patch +++ /dev/null @@ -1,194 +0,0 @@ -From c79ff3679a4360bb848b01d4036c365533fcf791 Mon Sep 17 00:00:00 2001 -From: Richard Genoud <[email protected]> -Date: Tue, 11 Feb 2025 18:20:17 +0100 -Subject: [PATCH 2/3] feat(ti): add message to encrypt tfa during suspend - -At suspend, BL31 with its context will be encrypted by TIFS in DDR. -Encryption is needed for security matters, so that the BL31 is not -modified before entering suspend or early at resume. - -We only need the encryption function here because the decryption message -will be send by the R5 SPL at resume. - -Also introduce the LPM_ENCRYPT_IMAGE cap signals that FW has the support -to encrypt the image using the TISCI_MSG_LPM_ENCRYPT tisci message. - -This is useful in suspend to ram cases where we would like to -store the encrypted image of a secure fw instead of the original image -itself in the DDR. - -Check for LPM_ENCRYPT_IMAGE flag in the FW capabilities, and only then -call encrypt. - -Upstream-Status: Pending - -Change-Id: I266472da87dd0821493019b2d9853f8886f33811 -Signed-off-by: Richard Genoud <[email protected]> -Signed-off-by: Abhash Kumar Jha <[email protected]> ---- - drivers/ti/ti_sci/ti_sci.c | 36 +++++++++++++++++++++++++++++ - drivers/ti/ti_sci/ti_sci.h | 7 ++++++ - drivers/ti/ti_sci/ti_sci_protocol.h | 32 +++++++++++++++++++++++++ - plat/ti/k3/common/k3_psci.c | 10 ++++++++ - 4 files changed, 85 insertions(+) - -diff --git a/drivers/ti/ti_sci/ti_sci.c b/drivers/ti/ti_sci/ti_sci.c -index f0813e5b0..ee5f7166f 100644 ---- a/drivers/ti/ti_sci/ti_sci.c -+++ b/drivers/ti/ti_sci/ti_sci.c -@@ -1784,3 +1784,39 @@ int ti_sci_lpm_get_next_sys_mode(uint8_t *next_mode) - - return 0; - } -+/* -+ * ti_sci_encrypt_tfa - Ask TIFS to encrypt TFA at a specific address -+ * -+ * @src_tfa_addr: Address where the TFA lies unencrypted -+ * @src_tfa_len: Size of the TFA unencrypted -+ * -+ * Return: 0 if all goes well, else appropriate error message -+ */ -+int ti_sci_encrypt_tfa(uint64_t src_tfa_addr, -+ uint32_t src_tfa_len) -+{ -+ struct ti_sci_msg_req_encrypt_tfa req = { 0 }; -+ struct ti_sci_msg_resp_encrypt_tfa resp = { 0 }; -+ struct ti_sci_xfer xfer; -+ int ret; -+ -+ ret = ti_sci_setup_one_xfer(TISCI_MSG_LPM_ENCRYPT_TFA, 0, -+ &req, sizeof(req), -+ &resp, sizeof(resp), -+ &xfer); -+ if (ret != 0U) { -+ ERROR("Message alloc failed (%d)\n", ret); -+ return ret; -+ } -+ -+ req.src_tfa_addr = src_tfa_addr; -+ req.src_tfa_len = src_tfa_len; -+ -+ ret = ti_sci_do_xfer(&xfer); -+ if (ret != 0U) { -+ ERROR("Transfer send failed (%d)\n", ret); -+ return ret; -+ } -+ -+ return 0; -+} -diff --git a/drivers/ti/ti_sci/ti_sci.h b/drivers/ti/ti_sci/ti_sci.h -index 1f1963274..2afa11317 100644 ---- a/drivers/ti/ti_sci/ti_sci.h -+++ b/drivers/ti/ti_sci/ti_sci.h -@@ -258,6 +258,11 @@ int ti_sci_proc_wait_boot_status_no_wait(uint8_t proc_id, - * - * Return: 0 if all goes well, else appropriate error message - * -+ * - ti_sci_encrypt_tfa - Ask TIFS to encrypt TFA at a specific address -+ * -+ * @src_tfa_addr: Address where the TFA lies unencrypted -+ * @src_tfa_len: Size of the TFA unencrypted -+ * - * NOTE: for all these functions, the following are generic in nature: - * Returns 0 for successful request, else returns corresponding error message. - */ -@@ -265,5 +270,7 @@ int ti_sci_enter_sleep(uint8_t proc_id, - uint8_t mode, - uint64_t core_resume_addr); - int ti_sci_lpm_get_next_sys_mode(uint8_t *next_mode); -+int ti_sci_encrypt_tfa(uint64_t src_tfa_addr, -+ uint32_t src_tfa_len); - - #endif /* TI_SCI_H */ -diff --git a/drivers/ti/ti_sci/ti_sci_protocol.h b/drivers/ti/ti_sci/ti_sci_protocol.h -index bdd24622a..a165cda99 100644 ---- a/drivers/ti/ti_sci/ti_sci_protocol.h -+++ b/drivers/ti/ti_sci/ti_sci_protocol.h -@@ -53,6 +53,9 @@ - #define TISCI_MSG_GET_PROC_BOOT_STATUS 0xc400 - #define TISCI_MSG_WAIT_PROC_BOOT_STATUS 0xc401 - -+/* TFA encrypt/decrypt messages */ -+#define TISCI_MSG_LPM_ENCRYPT_TFA 0x030F -+ - /** - * struct ti_sci_secure_msg_hdr - Header that prefixes all TISCI messages sent - * via secure transport. -@@ -160,6 +163,7 @@ struct ti_sci_msg_resp_query_fw_caps { - #define MSG_FLAG_CAPS_LPM_STANDBY TI_SCI_MSG_FLAG(3) - #define MSG_FLAG_CAPS_LPM_PARTIAL_IO TI_SCI_MSG_FLAG(4) - #define MSG_FLAG_CAPS_LPM_DM_MANAGED TI_SCI_MSG_FLAG(5) -+#define MSG_FLAG_CAPS_LPM_ENCRYPT_IMAGE TI_SCI_MSG_FLAG(11) - uint64_t fw_caps; - } __packed; - -@@ -810,4 +814,32 @@ struct ti_sci_msg_resp_lpm_get_next_sys_mode { - uint8_t mode; - } __packed; - -+/* -+ * struct ti_sci_msg_req_encrypt_tfa - Request for TISCI_MSG_LPM_ENCRYPT_TFA. -+ * -+ * @hdr Generic Header -+ * @src_tfa_addr: Address where the TFA lies unencrypted -+ * @src_tfa_len: Size of the TFA unencrypted -+ * -+ * This message is to be sent when the system is going in suspend, just before -+ * TI_SCI_MSG_ENTER_SLEEP. -+ * The TIFS will then encrypt the TFA and store it in RAM, along with a private -+ * header. -+ * Upon resume, the SPL will ask TIFS to decrypt it back. -+ */ -+struct ti_sci_msg_req_encrypt_tfa { -+ struct ti_sci_msg_hdr hdr; -+ uint64_t src_tfa_addr; -+ uint32_t src_tfa_len; -+} __packed; -+ -+/* -+ * struct ti_sci_msg_req_encrypt_tfa - Request for TISCI_MSG_LPM_ENCRYPT_TFA. -+ * -+ * @hdr Generic Header -+ */ -+struct ti_sci_msg_resp_encrypt_tfa { -+ struct ti_sci_msg_hdr hdr; -+} __packed; -+ - #endif /* TI_SCI_PROTOCOL_H */ -diff --git a/plat/ti/k3/common/k3_psci.c b/plat/ti/k3/common/k3_psci.c -index a443dd851..c2017666b 100644 ---- a/plat/ti/k3/common/k3_psci.c -+++ b/plat/ti/k3/common/k3_psci.c -@@ -24,6 +24,7 @@ - #define SYSTEM_PWR_STATE(state) ((state)->pwr_domain_state[PLAT_MAX_PWR_LVL]) - - uintptr_t k3_sec_entrypoint; -+bool encrypt_image; - - static void k3_cpu_standby(plat_local_state_t cpu_state) - { -@@ -282,6 +283,11 @@ static void k3_pwr_domain_suspend_to_mode(const psci_power_state_t *target_state - k3_gic_cpuif_disable(); - k3_gic_save_context(); - -+ if (encrypt_image) -+ { -+ ti_sci_encrypt_tfa((uint64_t)__TEXT_START__, BL31_SIZE); -+ } -+ - k3_pwr_domain_off(target_state); - - ti_sci_enter_sleep(proc_id, mode, k3_sec_entrypoint); -@@ -347,6 +353,10 @@ int plat_setup_psci_ops(uintptr_t sec_entrypoint, - ERROR("Unable to query firmware capabilities (%d)\n", ret); - } - -+ if (fw_caps & MSG_FLAG_CAPS_LPM_ENCRYPT_IMAGE) { -+ encrypt_image = true; -+ } -+ - /* If firmware does not support any known suspend mode */ - if (!(fw_caps & (MSG_FLAG_CAPS_LPM_DEEP_SLEEP | - MSG_FLAG_CAPS_LPM_MCU_ONLY | --- -2.34.1 diff --git a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0003-feat-k3-handle-suspend-in-case-of-LPM_BOARDCFG_MANAG.patch b/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0003-feat-k3-handle-suspend-in-case-of-LPM_BOARDCFG_MANAG.patch deleted file mode 100644 index a1209fe1feca..000000000000 --- a/meta-ti-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a/0003-feat-k3-handle-suspend-in-case-of-LPM_BOARDCFG_MANAG.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 470cf022d03e350beab36605d4250944d2c92ffe Mon Sep 17 00:00:00 2001 -From: Abhash Kumar Jha <[email protected]> -Date: Tue, 28 Oct 2025 23:24:22 +0530 -Subject: [PATCH 3/3] feat(k3): handle suspend in case of LPM_BOARDCFG_MANAGED - -The J7 platforms support LPM_BOARDCFG_MANAGED capability where the -low power mode configuration is done statically for the DM via the -pm-boardcfg. - -This is entirely opposite to the case of DM_MANAGED, where the DM fw -decides the low power mode to enter into. - -Introduce LPM_BOARDCFG_MANAGED cap to handle suspend for those -platforms as well. - -Upstream-Status: Pending - -Change-Id: Iaa0ab478cbe0db6652f61e9d733c0fddb4bab234 -Signed-off-by: Abhash Kumar Jha <[email protected]> ---- - drivers/ti/ti_sci/ti_sci_protocol.h | 1 + - plat/ti/k3/common/k3_psci.c | 13 ++++++++----- - 2 files changed, 9 insertions(+), 5 deletions(-) - -diff --git a/drivers/ti/ti_sci/ti_sci_protocol.h b/drivers/ti/ti_sci/ti_sci_protocol.h -index a165cda99..b83174b0d 100644 ---- a/drivers/ti/ti_sci/ti_sci_protocol.h -+++ b/drivers/ti/ti_sci/ti_sci_protocol.h -@@ -164,6 +164,7 @@ struct ti_sci_msg_resp_query_fw_caps { - #define MSG_FLAG_CAPS_LPM_PARTIAL_IO TI_SCI_MSG_FLAG(4) - #define MSG_FLAG_CAPS_LPM_DM_MANAGED TI_SCI_MSG_FLAG(5) - #define MSG_FLAG_CAPS_LPM_ENCRYPT_IMAGE TI_SCI_MSG_FLAG(11) -+#define MSG_FLAG_CAPS_LPM_BOARDCFG_MANAGED TI_SCI_MSG_FLAG(12) - uint64_t fw_caps; - } __packed; - -diff --git a/plat/ti/k3/common/k3_psci.c b/plat/ti/k3/common/k3_psci.c -index c2017666b..9cf41b4cb 100644 ---- a/plat/ti/k3/common/k3_psci.c -+++ b/plat/ti/k3/common/k3_psci.c -@@ -357,17 +357,20 @@ int plat_setup_psci_ops(uintptr_t sec_entrypoint, - encrypt_image = true; - } - -- /* If firmware does not support any known suspend mode */ -- if (!(fw_caps & (MSG_FLAG_CAPS_LPM_DEEP_SLEEP | -+ /* If firmware is capabale of low power modes */ -+ if (fw_caps & (MSG_FLAG_CAPS_LPM_DM_MANAGED | -+ MSG_FLAG_CAPS_LPM_BOARDCFG_MANAGED)) { -+ k3_plat_psci_ops.pwr_domain_suspend = k3_pwr_domain_suspend_dm_managed; -+ } else if (!(fw_caps & (MSG_FLAG_CAPS_LPM_DEEP_SLEEP | - MSG_FLAG_CAPS_LPM_MCU_ONLY | - MSG_FLAG_CAPS_LPM_STANDBY | - MSG_FLAG_CAPS_LPM_PARTIAL_IO))) { -- /* Disable PSCI suspend support */ -+ /* If firmware does not support any known suspend mode -+ * disable PSCI suspend support -+ */ - k3_plat_psci_ops.pwr_domain_suspend = NULL; - k3_plat_psci_ops.pwr_domain_suspend_finish = NULL; - k3_plat_psci_ops.get_sys_suspend_power_state = NULL; -- } else if (fw_caps & MSG_FLAG_CAPS_LPM_DM_MANAGED) { -- k3_plat_psci_ops.pwr_domain_suspend = k3_pwr_domain_suspend_dm_managed; - } - - *psci_ops = &k3_plat_psci_ops; --- -2.34.1 -- 2.52.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#19613): https://lists.yoctoproject.org/g/meta-ti/message/19613 Mute This Topic: https://lists.yoctoproject.org/mt/118009219/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
