From patchwork Mon Dec 21 11:43:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sughosh Ganu X-Patchwork-Id: 346405 Delivered-To: patch@linaro.org Received: by 2002:a02:85a7:0:0:0:0:0 with SMTP id d36csp4384446jai; Mon, 21 Dec 2020 03:44:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJxxPLbilOw2Nsin5QyXJ/LqpHT4i54TAFZ9wMKW8XTfCAZzORxwkvVUFhpafYdXiAhyAUKQ X-Received: by 2002:a17:906:dd3:: with SMTP id p19mr14706936eji.221.1608551066675; Mon, 21 Dec 2020 03:44:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608551066; cv=none; d=google.com; s=arc-20160816; b=JZWg1+eInJZVDid6vG/QJqBxJaXupJpr07Lb389MSYW2HkMe4ACI2GdxVeFCVWqhW8 4ZbjF3ieHBSh3yXS82+Bffck0fphefA6s8r8sI3eJo6YVqajJ74q+qr6eSBZIc+98z0g hGYWXaONAu3mXCgxAERFnuwKCChmmsW0MbYhw/kBr0GaOZCnBX6beOjmRyyxF9ZNg6fv Zz1aYsLwYwXG+tExeRXcrvH5aMLJmJr39Y/uysFRiXpOqcLKQrSebkmBv0nvtUt5Ryd1 mM5HE+t2hFKzpVLJISLTfR3BRyD59Hw7mccxV3O2Bit3pjZ9dEDPH//dtpNW9zTnRvyi EZxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:cc:to:from; bh=N7RiwEAfpReA0hj4ORN3V597x5mJdFldTFhIxqJ3A9o=; b=FWbrMKH7Ah0Q3MfxD19Chb7qk/7DB72kcKwaKUz/jmOMdvIJ13+dkBbJYJWj7DfCIl DFggqW5LdSAOa42mm+2bd8KXCtgfBEC5EcRH03hVCsCIRrZ0YWHm1Q848cdWvjUsKd6/ SQLCP5Al3zdnMlqjxqdteM1hNrwJp4idr0yq5graKp2rxmkAWqy7YTv+CuLnv8Ve5PNx BZrIOVHEPn7zhzbnjIebK0sns249B5WmwA3AkYWnUDHv3iwYYsQx6R0Ls4Ljf57ys0Ja fkur5d3zqM/UhypEN7Ff5O1TWjC0DhWeTTZZ/m6obDUFB+RXqpGc+JfGIyqgHwakgP+p 5Xjw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id ce8si8748532ejb.147.2020.12.21.03.44.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Dec 2020 03:44:26 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0CA8E82824; Mon, 21 Dec 2020 12:43:50 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id 7EFA082809; Mon, 21 Dec 2020 12:43:46 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by phobos.denx.de (Postfix) with ESMTP id 1CD7E827EB for ; Mon, 21 Dec 2020 12:43:43 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=sughosh.ganu@linaro.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 39BCF1042; Mon, 21 Dec 2020 03:43:42 -0800 (PST) Received: from a076522.blr.arm.com (a076522.blr.arm.com [10.162.16.44]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9758F3F718; Mon, 21 Dec 2020 03:43:39 -0800 (PST) From: Sughosh Ganu To: u-boot@lists.denx.de Cc: Takahiro Akashi , Heinrich Schuchardt , Alexander Graf , Lukasz Majewski , Tuomas Tynkkynen , Tom Rini , Ilias Apalodimas , Sughosh Ganu Subject: [PATCH v2 05/14] qemu: arm64: Set dfu_alt_info variable for the platform Date: Mon, 21 Dec 2020 17:13:05 +0530 Message-Id: <20201221114314.25588-6-sughosh.ganu@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201221114314.25588-1-sughosh.ganu@linaro.org> References: <20201221114314.25588-1-sughosh.ganu@linaro.org> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean The dfu framework uses the dfu_alt_info environment variable to get information that is needed for performing the firmware update. Set the dfu_alt_info for the platform to reflect the two mtd partitions created for the u-boot env and the firmware image. Signed-off-by: Sughosh Ganu --- Changes since V1: * Build set_dfu_alt_info and board_get_alt_info functions only if CONFIG_SET_DFU_ALT_INFO is defined * Enable CONFIG_SET_DFU_ALT_INFO with CONFIG_EFI_CAPSULE_FIRMWARE_MANAGEMENT board/emulation/qemu-arm/qemu-arm.c | 57 +++++++++++++++++++++++++++++ lib/efi_loader/Kconfig | 1 + 2 files changed, 58 insertions(+) -- 2.17.1 diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c index 68f70cb9be..a7be3c7c1c 100644 --- a/board/emulation/qemu-arm/qemu-arm.c +++ b/board/emulation/qemu-arm/qemu-arm.c @@ -195,8 +195,65 @@ void flash_write32(u32 value, void *addr) #if defined(CONFIG_EFI_CAPSULE_FIRMWARE_MANAGEMENT) +#include #include +#define MTDPARTS_LEN 256 +#define MTDIDS_LEN 128 + +#define DFU_ALT_BUF_LEN SZ_1K + +#if defined(CONFIG_SET_DFU_ALT_INFO) +static void board_get_alt_info(struct mtd_info *mtd, char *buf) +{ + struct mtd_info *part; + bool first = true; + const char *name; + int len, partnum = 0; + + name = mtd->name; + len = strlen(buf); + + if (buf[0] != '\0') + len += snprintf(buf + len, DFU_ALT_BUF_LEN - len, "&"); + len += snprintf(buf + len, DFU_ALT_BUF_LEN - len, + "mtd %s=", name); + + list_for_each_entry(part, &mtd->partitions, node) { + partnum++; + if (!first) + len += snprintf(buf + len, DFU_ALT_BUF_LEN - len, ";"); + first = false; + + len += snprintf(buf + len, DFU_ALT_BUF_LEN - len, + "%s part %d", + part->name, partnum); + } +} + +void set_dfu_alt_info(char *interface, char *devstr) +{ + struct mtd_info *mtd; + + ALLOC_CACHE_ALIGN_BUFFER(char, buf, DFU_ALT_BUF_LEN); + + if (env_get("dfu_alt_info")) + return; + + memset(buf, 0, sizeof(buf)); + + /* probe all MTD devices */ + mtd_probe_devices(); + + mtd = get_mtd_device_nm("nor0"); + if (!IS_ERR_OR_NULL(mtd)) + board_get_alt_info(mtd, buf); + + env_set("dfu_alt_info", buf); + printf("dfu_alt_info set\n"); +} +#endif /* CONFIG_SET_DFU_ALT_INFO */ + static void board_get_mtdparts(const char *dev, const char *partition, char *mtdids, char *mtdparts) { diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index 2cb0a6e399..bc47e7fe76 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -136,6 +136,7 @@ config EFI_CAPSULE_FIRMWARE_MANAGEMENT depends on EFI_HAVE_CAPSULE_SUPPORT default y select SYS_MTDPARTS_RUNTIME + select SET_DFU_ALT_INFO help Select this option if you want to enable capsule-based firmware update using Firmware Management Protocol.