[{"id":3673379,"web_url":"http://patchwork.ozlabs.org/comment/3673379/","msgid":"<723d3321-cf32-4739-bfdf-88cd8dcac394@mailbox.org>","list_archive_url":null,"date":"2026-04-03T23:00:01","subject":"Re: [PATCH v3 1/6] imx9: Add support for saving DDR training data to\n NVM","submitter":{"id":85664,"url":"http://patchwork.ozlabs.org/api/people/85664/","name":"Marek Vasut","email":"marek.vasut@mailbox.org"},"content":"On 4/2/26 11:40 AM, Simona Toaca (OSS) wrote:\n> From: Simona Toaca <simona.toaca@nxp.com>\n> \n> DDR training data can be saved to NVM and be available\n> to OEI at boot time, which will trigger QuickBoot flow.\n> \n> U-Boot only checks for data integrity (CRC32), while\n> OEI is in charge of authentication when it tries to\n> load the data from NVM.\n> \n> On iMX95 A0/A1, 'authentication' is done via another\n> CRC32. On the other boards, authentication is done by\n\nOn the other ... SoC revisions (not boards) , ... ?\n\n[...]\n\n> +++ b/arch/arm/include/asm/arch-imx9/ddr.h\n> @@ -1,6 +1,6 @@\n>   /* SPDX-License-Identifier: GPL-2.0+ */\n>   /*\n> - * Copyright 2022 NXP\n> + * Copyright 2022-2026 NXP\n>    */\n>   \n>   #ifndef __ASM_ARCH_IMX8M_DDR_H\n> @@ -100,6 +100,52 @@ struct dram_timing_info {\n>   \n>   extern struct dram_timing_info dram_timing;\n>   \n> +/* Quick Boot related */\n> +#define DDRPHY_QB_CSR_SIZE\t5168\n> +#define DDRPHY_QB_ACSM_SIZE\t(4 * 1024)\n> +#define DDRPHY_QB_MSB_SIZE\t0x200\n> +#define DDRPHY_QB_PSTATES\t0\n> +#define DDRPHY_QB_PST_SIZE\t(DDRPHY_QB_PSTATES * 4 * 1024)\n> +\n> +/**\n> + * This structure needs to be aligned with the one in OEI.\n> + */\n> +struct ddrphy_qb_state {\n> +\tu32 crc;\t\t  /* Used for ensuring integrity in DRAM */\n> +#define MAC_LENGTH              8 /* 256 bits, 32-bit aligned */\n\nPlease indent with tabs.\n\n> +\tu32 mac[MAC_LENGTH];\t  /* For 95A0/1 use mac[0] to keep CRC32 value */\n\n\n[...]\n\n> +++ b/arch/arm/include/asm/mach-imx/qb.h\n> @@ -0,0 +1,15 @@\n> +/* SPDX-License-Identifier: GPL-2.0+ */\n> +/*\n> + * Copyright 2026 NXP\n> + */\n> +\n> +#ifndef __IMX_QB_H__\n> +#define __IMX_QB_H__\n> +\n> +#include <stdbool.h>\n> +\n> +bool qb_check(void);\n> +int qb(int qb_dev, bool save);\n> +void spl_qb_save(void);\n\nPlease call the functions something less opaque than \"qb()\" , imx_qb_*() \nwould alrady be so much better.\n\n[...]\n\n> diff --git a/arch/arm/mach-imx/imx9/qb.c b/arch/arm/mach-imx/imx9/qb.c\n> new file mode 100644\n> index 00000000000..220545192d4\n> --- /dev/null\n> +++ b/arch/arm/mach-imx/imx9/qb.c\n> @@ -0,0 +1,379 @@\n> +// SPDX-License-Identifier: GPL-2.0+\n> +/**\n> + * Copyright 2024-2026 NXP\n> + */\n> +#include <dm/device-internal.h>\n> +#include <dm/uclass.h>\n> +#include <errno.h>\n> +#include <imx_container.h>\n> +#include <linux/bitfield.h>\n> +#include <mmc.h>\n> +#include <spi_flash.h>\n> +#include <spl.h>\n> +#include <stdlib.h>\n> +#include <u-boot/crc.h>\n> +\n> +#include <asm/arch/ddr.h>\n> +#include <asm/mach-imx/boot_mode.h>\n> +#include <asm/mach-imx/sys_proto.h>\n> +\n> +#define QB_STATE_LOAD_SIZE    SZ_64K\n> +\n> +#define MMC_DEV\t\t0\n> +#define QSPI_DEV\t1\n> +\n> +#define IMG_FLAGS_IMG_TYPE_MASK   0xF\n> +#define IMG_FLAGS_IMG_TYPE(x)     FIELD_GET(IMG_FLAGS_IMG_TYPE_MASK, (x))\n> +\n> +#define IMG_TYPE_DDR_TDATA_DUMMY  0xD   /* dummy DDR training data image */\n> +\n> +bool qb_check(void)\n> +{\n> +\tstruct ddrphy_qb_state *qb_state;\n> +\tu32 size, crc;\n> +\n> +\t/**\n> +\t * Ensure CRC is not empty, the reason is that\n> +\t * the data is invalidated after first save run\n> +\t * or after it is overwritten.\n> +\t */\n> +\tqb_state = (struct ddrphy_qb_state *)CONFIG_QB_SAVED_STATE_BASE;\n> +\tsize = sizeof(struct ddrphy_qb_state) - sizeof(qb_state->crc);\n> +\tcrc = crc32(0, (u8 *)qb_state->mac, size);\n> +\n> +\tif (!qb_state->crc || crc != qb_state->crc)\n> +\t\treturn false;\n> +\n> +\treturn true;\n> +}\n> +\n> +static unsigned long qb_get_boot_device_offset(void *dev, int dev_type)\n> +{\n> +\tunsigned long offset = 0;\n> +\tstruct mmc *mmc;\n> +\n> +\tswitch (dev_type) {\n> +\tcase MMC_DEV:\n> +\t\tmmc = dev;\n> +\n> +\t\tif (IS_SD(mmc) || mmc->part_config == MMCPART_NOAVAILABLE) {\n> +\t\t\toffset = CONTAINER_HDR_MMCSD_OFFSET;\n\nMultiple return in this case will make the function simpler:\n\nreturn CONTAINER_HDR_MMCSD_OFFSET;\n\n> +\t\t} else {\n\nNo need for } else { anymore.\n\n> +\t\t\tu8 part = EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config);\n> +\n> +\t\t\tif (part == EMMC_BOOT_PART_BOOT1 || part == EMMC_BOOT_PART_BOOT2)\n> +\t\t\t\toffset = CONTAINER_HDR_EMMC_OFFSET;\n\nreturn CONTAINER_HDR_EMMC_OFFSET;\n\n> +\t\t\telse\n> +\t\t\t\toffset = CONTAINER_HDR_MMCSD_OFFSET;\n\nreturn CONTAINER_HDR_MMCSD_OFFSET;\n\n> +\t\t}\n> +\t\tbreak;\n> +\tcase QSPI_DEV:\n> +\t\toffset = CONTAINER_HDR_QSPI_OFFSET;\n> +\t\tbreak;\n> +\tdefault:\n> +\t\treturn -EOPNOTSUPP;\n> +\t}\n> +\n> +\treturn offset;\n> +}\n\n[...]\n\n> +static int get_dev_qbdata_offset(void *dev, int dev_type, unsigned long offset,\n> +\t\t\t\t u32 *qbdata_offset)\n> +{\n> +\tint ret = -EOPNOTSUPP;\n> +\tu16 ctnr_hdr_align = CONTAINER_HDR_ALIGNMENT;\n> +\tvoid *buf = kmalloc(ctnr_hdr_align, GFP_KERNEL);\n\nCan you use buffer on stack ? u8 buf[CONTAINER_HDR_ALIGNMENT]; ? That \nwould allow you to remove all the goto statements.\n\nIf not, use malloc() not kmalloc().\n\n> +\tif (!buf) {\n> +\t\tprintf(\"kmalloc buffer failed\\n\");\n\nif malloc fails, so will printing, so drop this print and return -ENOMEM \nonly.\n\n> +\t\treturn -ENOMEM;\n> +\t}\n> +\n> +\tswitch (dev_type) {\n> +\tcase MMC_DEV:\n> +\t\tunsigned long count = 0;\n> +\t\tstruct mmc *mmc = dev;\n> +\n> +\t\tif (!(CONFIG_IS_ENABLED(DM_MMC) && CONFIG_IS_ENABLED(MMC_WRITE)))\n> +\t\t\tgoto get_dev_qbdata_offset_exit;\n> +\n> +\t\tcount = blk_dread(mmc_get_blk_desc(mmc),\n> +\t\t\t\t  offset / mmc->read_bl_len,\n> +\t\t\t\t  ctnr_hdr_align / mmc->read_bl_len,\n> +\t\t\t\t  buf);\n> +\t\tif (count == 0) {\n> +\t\t\tprintf(\"Read container image from MMC/SD failed\\n\");\n> +\t\t\tret = -EIO;\n> +\t\t\tgoto get_dev_qbdata_offset_exit;\n> +\t\t}\n> +\t\tbreak;\n> +\tcase QSPI_DEV:\n> +\t\tif (!CONFIG_IS_ENABLED(SPI))\n> +\t\t\tgoto get_dev_qbdata_offset_exit;\n> +\n> +\t\tret = spi_flash_read(dev, offset,\n> +\t\t\t\t     ctnr_hdr_align, buf);\n> +\t\tif (ret) {\n> +\t\t\tprintf(\"Read container header from QSPI failed\\n\");\n> +\t\t\tret = -EIO;\n> +\t\t\tgoto get_dev_qbdata_offset_exit;\n> +\t\t}\n> +\t\tbreak;\n> +\tdefault:\n> +\t\tprintf(\"Support for device %d not enabled\\n\", dev_type);\n> +\t\tgoto get_dev_qbdata_offset_exit;\n> +\t}\n> +\n> +\tret = qb_parse_container(buf, qbdata_offset);\n> +\n> +get_dev_qbdata_offset_exit:\n> +\tfree(buf);\n> +\n> +\treturn ret;\n> +}\n\n[...]\n\n> +void spl_qb_save(void)\n> +{\n> +\tint dev = spl_boot_device();\n> +\n> +\t/* Save QB data on current boot device */\n> +\tif (qb(dev, true))\n\nPlease call this function something less opaque than \"qb()\" , pick \nsomething more descriptive.\n\n> +\t\tprintf(\"QB save failed\\n\");\n> +}\n[...]","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=mailbox.org","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n secure) header.d=mailbox.org header.i=@mailbox.org header.b=\"wTL5qHmW\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=mailbox.org","phobos.denx.de;\n spf=pass smtp.mailfrom=marek.vasut@mailbox.org"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fnkDL0nTSz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 04 Apr 2026 16:09:53 +1100 (AEDT)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 69A20840ED;\n\tSat,  4 Apr 2026 07:09:45 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 82E7C840AA; Sat,  4 Apr 2026 07:09:44 +0200 (CEST)","from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 96DD283B8F\n for <u-boot@lists.denx.de>; Sat,  4 Apr 2026 07:09:41 +0200 (CEST)","from smtp102.mailbox.org (smtp102.mailbox.org\n [IPv6:2001:67c:2050:b231:465::102])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4fnkD40YNwz9v8y;\n Sat,  4 Apr 2026 07:09:40 +0200 (CEST)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-0.6 required=5.0 tests=BAYES_00, DATE_IN_PAST_06_12,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,\n RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_PASS,SPF_PASS autolearn=no\n autolearn_force=no version=3.4.2","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org;\n s=mail20150812; t=1775279380;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=UowXNcZas2C80sRZEvBY65054QBKalsPVvg2XspKauE=;\n b=wTL5qHmWTd5QHtneV51HrJyMWRzn7cI2x6HgXhrTIhTaWNuQ9SxTyK+PLg6wsZorg8k/t0\n wBtwkwi/PRiKQ4RVO3SYgoxrmug8pyqcW001x0ZRwnOGRjPuSV1Gc0VPaq+i/BHhldIiBX\n pM36RbRIiAEvmzQUi3EVb26unNHkmsaXJebiXxGvdu9UCbU9gXwSKFja3dgSMmxyi41UT3\n 0SfHefRa2DCTK5TyqY/W91pYex2P4A1OGXHw3P3hlZuXdO+CJOLwjRIHxqf3HachzR6QQ1\n TVnzMnUqZzdnKKTyJrsQ2Z9pgtMTRhFX6IOJjkBtSBKsQQs6UPjX+VY0oAZ6jw==","Message-ID":"<723d3321-cf32-4739-bfdf-88cd8dcac394@mailbox.org>","Date":"Sat, 4 Apr 2026 01:00:01 +0200","MIME-Version":"1.0","Subject":"Re: [PATCH v3 1/6] imx9: Add support for saving DDR training data to\n NVM","To":"\"Simona Toaca (OSS)\" <simona.toaca@oss.nxp.com>, uboot-imx@nxp.com,\n u-boot@lists.denx.de","Cc":"Stefano Babic <sbabic@nabladev.com>, festevam@gmail.com,\n peng.fan@nxp.com, alice.guo@nxp.com, viorel.suman@nxp.com,\n simona.toaca@nxp.com, ye.li@nxp.com, ping.bai@nxp.com,\n sebastien.szymanski@armadeus.com, ravi@prevas.dk,\n joao.goncalves@toradex.com, ji.luo@nxp.com, semen.protsenko@linaro.org,\n tharvey@gateworks.com, qijian.guo@nxp.com","References":"<cover.1775121078.git.simona.toaca@nxp.com>\n <7edcce04b39aabc1f58e09814e7fadff226e2bb8.1775121078.git.simona.toaca@nxp.com>","Content-Language":"en-US","From":"Marek Vasut <marek.vasut@mailbox.org>","In-Reply-To":"\n <7edcce04b39aabc1f58e09814e7fadff226e2bb8.1775121078.git.simona.toaca@nxp.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-MBO-RS-META":"k8wrmdxa6b9t49icst6d7txbodomqzko","X-MBO-RS-ID":"5f076326857ef3d99cb","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"}},{"id":3673554,"web_url":"http://patchwork.ozlabs.org/comment/3673554/","msgid":"<CAFLszTgb5a3QtyviHc-MRTdDUoDUWnYksWXMeCUxagHmvfQK2g@mail.gmail.com>","list_archive_url":null,"date":"2026-04-05T11:49:56","subject":"Re: [PATCH v3 1/6] imx9: Add support for saving DDR training data to\n NVM","submitter":{"id":6170,"url":"http://patchwork.ozlabs.org/api/people/6170/","name":"Simon Glass","email":"sjg@chromium.org"},"content":"Hi,\n\nOn Thu, 2 Apr 2026 at 03:29, Simona Toaca (OSS)\n<simona.toaca@oss.nxp.com> wrote:\n>\n> From: Simona Toaca <simona.toaca@nxp.com>\n>\n> DDR training data can be saved to NVM and be available\n> to OEI at boot time, which will trigger QuickBoot flow.\n>\n> U-Boot only checks for data integrity (CRC32), while\n> OEI is in charge of authentication when it tries to\n> load the data from NVM.\n>\n> On iMX95 A0/A1, 'authentication' is done via another\n> CRC32. On the other boards, authentication is done by\n> using ELE to check the MAC stored in the ddrphy_qb_state\n> structure.\n>\n> Supported platforms: iMX94, iMX95, iMX952 (using OEI)\n> Supported storage types: eMMC, SD, SPI flash.\n>\n> Signed-off-by: Viorel Suman <viorel.suman@nxp.com>\n> Signed-off-by: Ye Li <ye.li@nxp.com>\n> Signed-off-by: Simona Toaca <simona.toaca@nxp.com>\n> ---\n>  arch/arm/include/asm/arch-imx9/ddr.h |  48 +++-\n>  arch/arm/include/asm/mach-imx/qb.h   |  15 ++\n>  arch/arm/mach-imx/imx9/Makefile      |   6 +-\n>  arch/arm/mach-imx/imx9/qb.c          | 379 +++++++++++++++++++++++++++\n>  arch/arm/mach-imx/imx9/scmi/soc.c    |   7 +\n>  drivers/ddr/imx/imx9/Kconfig         |   7 +\n>  6 files changed, 459 insertions(+), 3 deletions(-)\n>  create mode 100644 arch/arm/include/asm/mach-imx/qb.h\n>  create mode 100644 arch/arm/mach-imx/imx9/qb.c\n\nNote that this feature is present on x86 boards already.\n\nI wonder if we could make this more generic? E.g. it could be a\nfunction of UCLASS_RAM ? I could do the x86 part to try it out if you\nlike.\n\nRegards,\nSimon","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=F2PZX3wt;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=chromium.org","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org\n header.b=\"F2PZX3wt\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=chromium.org","phobos.denx.de;\n spf=pass smtp.mailfrom=sjg@chromium.org"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fpW3w4sz9z1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 05 Apr 2026 21:50:20 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 31AA083C14;\n\tSun,  5 Apr 2026 13:50:12 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id B978E83C5E; Sun,  5 Apr 2026 13:50:11 +0200 (CEST)","from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com\n [IPv6:2a00:1450:4864:20::62c])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 850D18394E\n for <u-boot@lists.denx.de>; Sun,  5 Apr 2026 13:50:09 +0200 (CEST)","by mail-ej1-x62c.google.com with SMTP id\n a640c23a62f3a-b936331786dso330029366b.3\n for <u-boot@lists.denx.de>; Sun, 05 Apr 2026 04:50:09 -0700 (PDT)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; t=1775389809; cv=none;\n d=google.com; s=arc-20240605;\n b=bT0CUSrCl3DsVYLOf98AdBxLFwR4GrsCDfzrwv6Av+ly/lmUGCMq1p38pFx8aw9eB+\n WH4hDbAZWo3ODEMyQ9fiMTUi6VyU34k0nJi4GWWKdvbvobsXtGl0njNTLN5y4q4zQKu4\n KF35LTXYSYB2xSHyDsvx+K53jpnp+jeoWyNhxXh7NfTpVnhj98qnx8vcuKHEFsb8LHyK\n QyMSIED+H3ugjaoJQpvp03XkGms04kWQGyb6iAHCc0UxJfI9k3n9xqjVk43nPi7lZjqM\n lV5oUtMnlQg4tKHKu8ufTdcofrITJwzYPI/nbfvJBgbzVgtNUDd27REorpLuU+VMZwNj\n ABuA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=IDEY00+i3JJRO+kad4dnp5tWHWcWzcZzL5RMGD6qr8M=;\n fh=FupddYeo0GvvCek3hd4jW7j0f5swrzsvCXAhY05xPqY=;\n b=YNa515TXnzoTYRSnbN/LFpHLlGNfN7POJDaCkG6wofZQgds8Jo8VQJAOPAZNIRTYhd\n 4GWdWnZ+w1GOfScy4SqGqh3bP8GD4mDTzdde3ucfugBMBY7mnlxrAgJIfPFByMpSpNXQ\n prLSBKfQypn1BgyuFrj+3hvrzy1uB2MoCgK3aVfa8guYoPlKtGFFIoKTKNRTo9JZo18w\n T0AigMEZLo0zsOMwiXW+pl1NBzAfENbGpEcW2j3a7/bubgNWA2CrtHqGQ8oimkn39vhV\n 7bX7JpvjBTpRjXYz9iO2X6yqJv2m4/dKtgiUAXcV2N7K86Y3cK1TSOb7L66Lqnrl9a+y\n CVlQ==; darn=lists.denx.de","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=chromium.org; s=google; t=1775389809; x=1775994609; darn=lists.denx.de;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=IDEY00+i3JJRO+kad4dnp5tWHWcWzcZzL5RMGD6qr8M=;\n b=F2PZX3wt5X7cdZhplhjF41Ng3G44R/XoAUpi6GT056w2v58j04t6DQ3rSnNz0MkY54\n KReei8nWpdfuC5ciGPfSg5MZZQQzyo2s1JelxTgGUjxQ+fzMCxXl4tY60lO6PxRbif24\n MDngBAR/LcBVpRKMHTH2rG620F8VuABOMbS1A=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775389809; x=1775994609;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=IDEY00+i3JJRO+kad4dnp5tWHWcWzcZzL5RMGD6qr8M=;\n b=rfLtLBjun+ZilgKZEU9uP0ClvJhQ1tkXhow8Gg5hYCHda60E68ClUxNrRIy78uUaGr\n VRq3tJXsdrUKlJAenFgWRrL3bJNpZj8hHPh0bvHvM6JM0r8k0drx32+4t0BO2S6wNR12\n UVYwE1H2CCt9SH6L9J8MsfrMDInwsg3OvBIRe7CeOg5cyVyfbeboKsKqy25OwmLjSJ88\n 600XA3hep6HrK+mvnGPCdguIXGlYe1gOv0DN9KB36uxYsT/dIuEfqJnb5pjuFEYqRuht\n JsgOsML/BmjQiNisvkmsRuAkk7RIRkEjsuv4ulwuOwI7RdS2DtymTW/rptRSuJ3iT4VH\n WOLg==","X-Forwarded-Encrypted":"i=1;\n AJvYcCX+ZM1QKBE0WaW81XXKQZOF9Dpbx6P5PHZ+UmOX5CXd6d+6uwanllY2VTSC35GQTcQon5UYQIA=@lists.denx.de","X-Gm-Message-State":"AOJu0YzNPJSyb4YFMrnQC6wyZWeEj5RgaSraL4x9Ov7A/ZQ9XUZVMNJZ\n 1Xt07w+XNrjiSJwzWqFqDQpQy+MSleuoK6pFPlHNB32i5heFGm0F7Nn3xWmQE61hqnffbki2Wde\n DqvbxDQ25D0yeH3AhMaka4NIqrGUr5P7asPcqrN/i","X-Gm-Gg":"AeBDieuYKQoHlIw4xjjEY1jthmf5Jaq1FuBDjOPdtlAFu9mcfYn6I3rtgAdqS3iTlCz\n N5LVkU63Bksz1y+QQ+jT3x/ROizzvGe8nCFTOT9KwqlsAYjVsnSaCc03KotnG8j/Mz5gmGUh+Vt\n cLjR03ewQN4+sCoPVdI+pV3F/sxI2u9jYujVX7VeCTFl8eEwzOLQ+2TavsPIjNNNs+XrLHWuSpR\n mvRYtkqXp2UqA1P4agVEsWLR3D+e8j1xmc+wKAUf6l3k0ae3qtkpTlsKaIMJ+SGAq69DdSLTNFp\n x1AxQQ==","X-Received":"by 2002:a17:907:8b95:b0:b97:b2dc:91e2 with SMTP id\n a640c23a62f3a-b9c67428c5fmr457264066b.16.1775389808616; Sun, 05 Apr 2026\n 04:50:08 -0700 (PDT)","MIME-Version":"1.0","References":"<cover.1775121078.git.simona.toaca@nxp.com>\n <7edcce04b39aabc1f58e09814e7fadff226e2bb8.1775121078.git.simona.toaca@nxp.com>","In-Reply-To":"\n <7edcce04b39aabc1f58e09814e7fadff226e2bb8.1775121078.git.simona.toaca@nxp.com>","From":"Simon Glass <sjg@chromium.org>","Date":"Sun, 5 Apr 2026 05:49:56 -0600","X-Gm-Features":"AQROBzDq7w7Z5nKrfivdktDw_qk0K_ji8ZCrWMJV6K_zDXwCTiHFgMDHsektPy4","Message-ID":"\n <CAFLszTgb5a3QtyviHc-MRTdDUoDUWnYksWXMeCUxagHmvfQK2g@mail.gmail.com>","Subject":"Re: [PATCH v3 1/6] imx9: Add support for saving DDR training data to\n NVM","To":"\"Simona Toaca (OSS)\" <simona.toaca@oss.nxp.com>","Cc":"uboot-imx@nxp.com, u-boot@lists.denx.de,\n Stefano Babic <sbabic@nabladev.com>, festevam@gmail.com, peng.fan@nxp.com,\n alice.guo@nxp.com, viorel.suman@nxp.com, simona.toaca@nxp.com, ye.li@nxp.com,\n ping.bai@nxp.com, marex@nabladev.com, sebastien.szymanski@armadeus.com,\n ravi@prevas.dk, joao.goncalves@toradex.com, ji.luo@nxp.com,\n semen.protsenko@linaro.org, tharvey@gateworks.com, qijian.guo@nxp.com","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"}},{"id":3673681,"web_url":"http://patchwork.ozlabs.org/comment/3673681/","msgid":"<mtfbgewm7kw4jzmxjkksdmq2ahb3mdrb6p5bi5qvpow2tydyl7@bejuojige3bw>","list_archive_url":null,"date":"2026-04-06T08:39:36","subject":"Re: [PATCH v3 1/6] imx9: Add support for saving DDR training data to\n NVM","submitter":{"id":92829,"url":"http://patchwork.ozlabs.org/api/people/92829/","name":"Simona Toaca","email":"simona.toaca@oss.nxp.com"},"content":"Hi Simon,\n\nOn Sun, Apr 05, 2026 at 05:49:56AM -0600, Simon Glass wrote:\n> Hi,\n> \n> On Thu, 2 Apr 2026 at 03:29, Simona Toaca (OSS)\n> <simona.toaca@oss.nxp.com> wrote:\n> >\n> > From: Simona Toaca <simona.toaca@nxp.com>\n> >\n> > DDR training data can be saved to NVM and be available\n> > to OEI at boot time, which will trigger QuickBoot flow.\n> >\n> > U-Boot only checks for data integrity (CRC32), while\n> > OEI is in charge of authentication when it tries to\n> > load the data from NVM.\n> >\n> > On iMX95 A0/A1, 'authentication' is done via another\n> > CRC32. On the other boards, authentication is done by\n> > using ELE to check the MAC stored in the ddrphy_qb_state\n> > structure.\n> >\n> > Supported platforms: iMX94, iMX95, iMX952 (using OEI)\n> > Supported storage types: eMMC, SD, SPI flash.\n> >\n> > Signed-off-by: Viorel Suman <viorel.suman@nxp.com>\n> > Signed-off-by: Ye Li <ye.li@nxp.com>\n> > Signed-off-by: Simona Toaca <simona.toaca@nxp.com>\n> > ---\n> >  arch/arm/include/asm/arch-imx9/ddr.h |  48 +++-\n> >  arch/arm/include/asm/mach-imx/qb.h   |  15 ++\n> >  arch/arm/mach-imx/imx9/Makefile      |   6 +-\n> >  arch/arm/mach-imx/imx9/qb.c          | 379 +++++++++++++++++++++++++++\n> >  arch/arm/mach-imx/imx9/scmi/soc.c    |   7 +\n> >  drivers/ddr/imx/imx9/Kconfig         |   7 +\n> >  6 files changed, 459 insertions(+), 3 deletions(-)\n> >  create mode 100644 arch/arm/include/asm/mach-imx/qb.h\n> >  create mode 100644 arch/arm/mach-imx/imx9/qb.c\n> \n> Note that this feature is present on x86 boards already.\n> \n> I wonder if we could make this more generic? E.g. it could be a\n> function of UCLASS_RAM ? I could do the x86 part to try it out if you\n> like.\n> \n\nCan you please point me to the implementation for x86? This Quickboot\nfeature is specific to Synopsis DDR PHYs, and the location where we\nsave this data is specific to iMX9 series (since it is needed by OEI).\nI need a bit more details about what you mean.\n\nThank you,\nSimona","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector1-NXP1-onmicrosoft-com\n header.b=mmgKNFkd;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=oss.nxp.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com\n header.b=\"mmgKNFkd\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=oss.nxp.com","phobos.denx.de;\n spf=pass smtp.mailfrom=simona.toaca@oss.nxp.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=oss.nxp.com;"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fq2XM0S0qz1yFt\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 06 Apr 2026 18:28:19 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 544F48394E;\n\tMon,  6 Apr 2026 10:28:10 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 3A00283A41; Mon,  6 Apr 2026 10:28:09 +0200 (CEST)","from AS8PR04CU009.outbound.protection.outlook.com\n (mail-westeuropeazlp170110003.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c201::3])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 3565C8352B\n for <u-boot@lists.denx.de>; Mon,  6 Apr 2026 10:28:07 +0200 (CEST)","from VI0PR04MB11917.eurprd04.prod.outlook.com (2603:10a6:800:306::9)\n by PA1PR04MB10098.eurprd04.prod.outlook.com (2603:10a6:102:45b::6)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Mon, 6 Apr\n 2026 08:28:04 +0000","from VI0PR04MB11917.eurprd04.prod.outlook.com\n ([fe80::a506:3460:d2bc:26e7]) by VI0PR04MB11917.eurprd04.prod.outlook.com\n ([fe80::a506:3460:d2bc:26e7%4]) with mapi id 15.20.9769.016; Mon, 6 Apr 2026\n 08:28:04 +0000"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,FORGED_SPF_HELO,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,\n T_SPF_PERMERROR autolearn=no autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Oqjxw749hDwf8mw+qSoAVUtGdwXBSC7+W1yCDUADkY+z06xe0uofaLjH6RgA4aGgLN1RE9LYhs/cBHuVj7cDDmKDgbFHZ+YcDshMAb0EMJhBBNf+tf/Ygk2bpLvOIha6of71IkC2RTQ44GOu4mtYpVNpTezw41rIEQ0nP2e1UpoRBKO2gakWnErGWHV1H7KjqrI2zD223lNLseXCRNDC945A5/MV+VoWAlDEcK3wIKckOWsPrrNJFzkp/KCQKsa8MpRHPc9Vi9xXqhv2cqfrYv52ZkCF+OTtt7I2KVkZQP7ricrE03IJ2DCV+uH1ZtuJJN2fiWlt0eG1EhqdsWZXWA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=/q2C6NQJknQBbACphqejOTRUQO1e8YWIHoTHyhkz1OA=;\n b=Lws7ZdiL/Lyc/r937lkUwUFxVcuEZD0GtfKWPcPVtjJ6h6ecM5gprnOUHk5cFwCCW4skmHMFWrtmJNJI+2zkDSAE7utCfQei6knCot7+dQUrJQpZIUSi2GWK7F6gv4CtEVdDKGGTZfF75APnD29MMX1Ty00q0drqB+Aa47GRuNubMHebFVWHvzlfPYJdNiUDLqMSqxtZLX41ZKG5amtJmOJh+hHk/bqGQMW7Hch8MnM0IN9WY4k4s7rrzv60I1EeghbsMWzYLQ4opYioog9LijBx6v1IQappf42ofn497VoG4eQvf3kjFaNOjKH8O9A0x5D1I4u9V8jpHh/Cm8hDOw==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;\n dkim=pass header.d=oss.nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;\n s=selector1-NXP1-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=/q2C6NQJknQBbACphqejOTRUQO1e8YWIHoTHyhkz1OA=;\n b=mmgKNFkdt3lCFYGc9IvbEeps/NVfsxPnj2dwmhWdSduxmwuqaZ+jfqZZljw32Z1ei4QSkr4lOpXpjdQOkatXgVzXIYILz30ZGbzP+5z/XS7L0FXrjQsgBt4g8aMFZbLrPqnYCSqEcQEnoNH27l88zr2kDD6CG8DkAe1PT2StxJduNXUUc/IHegHEkWi6D5bs8BlwtM0DX1eShO9G216+WbXf7LyP7S2ChUwAX6tqvsX5Cin8tWiYVpMCcI+eIT6+LHnUCrHiBU0w0hWNZ3yGYLEuBBGI2nZngI0nOQ3miO1Ukc+4EHqSPOeD3zUpOuT+ZMf13qbXxHgDmdLuaSY79A==","Date":"Mon, 6 Apr 2026 11:39:36 +0300","From":"Simona Toaca <simona.toaca@oss.nxp.com>","To":"Simon Glass <sjg@chromium.org>","Cc":"uboot-imx@nxp.com, u-boot@lists.denx.de,\n Stefano Babic <sbabic@nabladev.com>, festevam@gmail.com, peng.fan@nxp.com,\n alice.guo@nxp.com,\n viorel.suman@nxp.com, simona.toaca@nxp.com, ye.li@nxp.com, ping.bai@nxp.com,\n marex@nabladev.com, sebastien.szymanski@armadeus.com, ravi@prevas.dk,\n joao.goncalves@toradex.com, ji.luo@nxp.com, semen.protsenko@linaro.org,\n tharvey@gateworks.com, qijian.guo@nxp.com","Subject":"Re: [PATCH v3 1/6] imx9: Add support for saving DDR training data to\n NVM","Message-ID":"<mtfbgewm7kw4jzmxjkksdmq2ahb3mdrb6p5bi5qvpow2tydyl7@bejuojige3bw>","References":"<cover.1775121078.git.simona.toaca@nxp.com>\n <7edcce04b39aabc1f58e09814e7fadff226e2bb8.1775121078.git.simona.toaca@nxp.com>\n <CAFLszTgb5a3QtyviHc-MRTdDUoDUWnYksWXMeCUxagHmvfQK2g@mail.gmail.com>","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"\n <CAFLszTgb5a3QtyviHc-MRTdDUoDUWnYksWXMeCUxagHmvfQK2g@mail.gmail.com>","X-ClientProxiedBy":"AS4P195CA0007.EURP195.PROD.OUTLOOK.COM\n (2603:10a6:20b:5e2::7) To VI0PR04MB11917.eurprd04.prod.outlook.com\n (2603:10a6:800:306::9)","MIME-Version":"1.0","X-MS-Exchange-MessageSentRepresentingType":"1","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"VI0PR04MB11917:EE_|PA1PR04MB10098:EE_","X-MS-Office365-Filtering-Correlation-Id":"b311e28b-68fe-4339-1831-08de93b66c50","X-MS-Exchange-SharedMailbox-RoutingAgent-Processed":"True","X-LD-Processed":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|1800799024|19092799006|366016|376014|7416014|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info":"\n 7+NbvJLykbs6qlyPo2Gxc2osoxPJH/VPzlzSdFYwZQ9EWgyQBT2IVhp7R9BXa9iDH2uJ+848IDhS0bGksvBhcA0aC59aV0taZbpPsO5hTTHHD1aXxJdblJXoNjdHKSoApe5anuMj1Lko1YL/dRheG7Q4U1yMJ/TR0D5fVRVSUwSUday4cCDiD9SLFxL234b4QQKavPir5V3i4AOhtVFnNRcDGQfT2ee873nW4dhqrCaTH0sUUkq8mTyqeMy3neO+s7DB9HfOt/wAuqmXj/73PY3At/epSryCImoz/q4Q1kXARRpT/jDWItxlgwvOVN7TZm2CZFVfzEWHjaMvp5/8cHmmojP8+Wvys0mStROng5lptp6qhhJT61rWYjvUDNwGAmBjPKhQ0JQtWjgw4BPXgEfe15oVHuXSigpOnEeJ+pBn3gqMg3l3qHfpyj97dzJEJMMI4EuFEuSaWDhmxObj7bdAf5+GNVhp565w/pQLMDIlzJ6tzKrJhUFF5b3P696ZqvjCKv9xsil9WLiaNRY0P6YqwPnzkfU+GbRUs2Yo7aj5ze8BwGQWSxd6rOHEWcxfmlhSvI73Q6WZmmYyYNz1qKveRk51L0+7fxbO1Mmor8MhPYEcReajVwYxOIiRCQ7yhCo3ErhnDF1dyvK+FUXUrGk9TEDzzglgSsSVAeXCGtWJ9gRLlQag709s/9dVDx+5pTL2TWUbv1gjXJAsfl94pVl/Fr9AgybHrcbkUj+6Moc=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:VI0PR04MB11917.eurprd04.prod.outlook.com; PTR:;\n CAT:NONE;\n SFS:(13230040)(1800799024)(19092799006)(366016)(376014)(7416014)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n gwGYbwSG3wQa1oCMwvsdtbtVKmlRuNMYQ/5l4f6Rq4aCqHvkFHC8J+SPCuTp3aFr/pPnxE1yzPXPqQiZ6KKv1030E6HxdGtB1sRlNtdjxUl2OPcZvZDJIklEEl7sZuaUFBqgFZhQCRvwi/w8PPeOwEcXV39uUAYzadH/RdmQHqrTgDjoHkhkdxMXvo6BXFJ51YMlf4WnA1RDZURKEICCrFkCW/AEPP4fomA51n499bx6qW2lTalRRqnDU6Vljd82ejSsJP/fMdmNviRDGJoZYRHouK4ua53Va/6u9KiudCqdVu1S8CFh7BZWR2uwql7pZQ1hTo1ZGMJIa2r7kB5fqF9awJ1DHFVHxHNd3WOkaud7mx1t+SvGJuEo32+TO3wQqlvkhAe6FCZP70ATocAcWAye9oDV2FaieRx4d6cTYeakiEnDKB5wxQa0CqfooHff3sfEFUgJphw8tNKBI5R0jJktCChwCSc/2IubX3TzTmyqDqAZ/loybZwfwIWD5/Eh+/Bk/F6VZ1M/jFakGkRzW65QZPNkX0z3z3eNX1q8ee3LBUNm13qxmNoCU2eE/gA3sHTCI/Xp7U6plWduhbyEzM2CucXaWBvueZqZAUygftM+hpFDgzpXZiudquGjESX/xCIQV4bFNVZb6FoagXYiamwSy7cL1+oZhP5gaoDnj+He/r/JmKTC9716ytfQuCAC6zQUs8zRlfsBpKAaVJVL6qzOHkUJWSWd60iH9YYBtqxGuBdSnzq7zkcSqrJ2EMq4bfibqBGF0RuySHsj6s0CPcHC5O6+oXMd3qq8cey5GNwVNDO36s1ZdYje4a9o8t3AP08LCR2stl6uPFc6qLwxHOh1KrZ1p6EhgbW4g6Ot38J7ldEPSJ+A0SpcIFGzgzMAEFzQwoctwEIIW0hawTvB47Wnb6aKv8KI8f5SiZpBbgFIuDMCxGId0aAM0mGZY3cBM/U+uUOHnwJqj9P4x86DlgRqekuIb9qQsfDJoSCM13xAbcfEeSzMdpaVEfaydlH6t5l1tS6yCZbWAzJbHzM7XQ6iLji1l1c8uLVhdjA1AENawuY4r4O4uIPBuh8v0h8eJbS0rCMB/WKAWHUh6FBEDoxQ6YE8HZcpzN8rrRlZqbQCeVxiRax4uBD7i/3fGpdPmoCq58zOYzySubW9BvvfIufDwiTM/v+1cYBDq+0O9MqIn/s261IcQIY8t/rmDMt39Ssw33mNxtpGxtjoFJy/AKiWicD9QshrGXph5SgJEmUukqN9osQTEF/5tayuSbHBbb/v+TdHgooTyA2SyA3ovk1FJhG+7/Fq6KhZwqTjKs8gh8Vis3SirhnTK9EdLpa8iK3xBgiEU1m0iY1HfkoR0dpphGKGMOvondVZ2BdEHMCHJqrHwBP7B+Uxiq0ODE+24LJ+Dxi97cW20DOR8MGc1fZkNuImh0otZ6ko223oeL075hVptgJzLPKRLvfRvHQls7mpdR9QUireL99sERKhKX93dxCarW67CEVOt1N8Ie+7gN+FwLv+NCXhwHTWX3G33o3r389KCk4I2fibhOf7et1PjGcwHaMooXV4bsbjPRhZuIpxyfv0/33o+isI/NolfvdEQ94AJxxzzZuGZ5s0vyOV3QAJdNjIgcInCTp2fo6KwEBATPJPP4zpHAGjGV+ENRNEA3WLfti2u8jvS6ONLjgqeCgh+Mm41+2XHoo4MqoBzgEdYdtnPqAhgHiQWFaAYwKev9bwp2hNlAdNiB27hA==","X-OriginatorOrg":"oss.nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n b311e28b-68fe-4339-1831-08de93b66c50","X-MS-Exchange-CrossTenant-AuthSource":"VI0PR04MB11917.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"06 Apr 2026 08:28:04.6334 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n A9fo2sgo235uEAgVBvQPU9pQk5e+y2u2ma4R5VTFte1TP5B3xGWA7jw4bIjBKeF9GctE7qzdJy0xSJCqqh+oAQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PA1PR04MB10098","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"}}]