From patchwork Mon Apr 27 10:52:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rayagonda Kokatanur X-Patchwork-Id: 1277621 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.a=rsa-sha256 header.s=google header.b=MCtKdTOp; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 499kbJ4vtDz9sSc for ; Mon, 27 Apr 2020 22:28:44 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 16B4481E73; Mon, 27 Apr 2020 14:22:50 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="MCtKdTOp"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 48D9E81E1A; Mon, 27 Apr 2020 13:05:57 +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=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B602981E0A for ; Mon, 27 Apr 2020 13:05:53 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rayagonda.kokatanur@broadcom.com Received: by mail-pg1-x542.google.com with SMTP id r4so8532238pgg.4 for ; Mon, 27 Apr 2020 04:05:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+IcLpdt6TT7MjUHKlf2OOODPRuO90bGFOCxFRLrT6hM=; b=MCtKdTOpS9XG+PDf0YPxDh8fD5xN7w2Pq5NLe1ea55TfbGudLdf/Yi9IjfrpohzXa7 yadXFRIgt/v1qz1wLrgQ9PaS5jgl+iQzejq/sNp8rSqLEgVL9SK11FIX+x0qPfMdAr7P /zSwu/yOZjn+eLy189LOi+Ypw1ggdKKR9N4XE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+IcLpdt6TT7MjUHKlf2OOODPRuO90bGFOCxFRLrT6hM=; b=LoGKs7D7++nu1+6GMqjxdF/zSBLBcL+qhqrS6bwYVfpRuQ1v1mh+ySWZScQK3q7ggs FRjiUjU6EIVDmMerEZNuaonyU5hwcUTx0+Hw5zDoGH/SMQWNmOzkG+Z7oo084WChWbzX Ddj86I1KrFSvqI96IZAwO6W3CSDtWMpB5X6sTrrCxB6ZwSIe4PN/HONqbifDlKl+wnIQ 1dgfYbCRNYz1OYAy3R2Au6Cw4UCameHA00d9uMMu9HlRoyGtDh1LQmjCfIjFULuXt1QM SwnUMXVI/yihO/G/ssNZG+3lsS8gEV9b47uZZSj7EphaS6982Pw6zLpG2aiS2m1WKuaw 5Bag== X-Gm-Message-State: AGi0PuZvtOv1cprXPay0xBqA7y86csM9uotGu5+02UKHwyjhcWskfiMn gptYVaHTqjYTVoV6f8+etitzIM0zMUmB1TdCVt+du6gaRQ5znX4dqYPXu1u85QOHOdQLvaBxNmG ZMyirbJRDhxrJgxStpm5NCm/RUvx2HyLZ/UrXFBxYuTHjEz5rk1abLT8ASApqFEkKvMiOHRFka7 rtl/d54Wje X-Google-Smtp-Source: APiQypKUVrK8zMT03rkJcr2gJ1aYWNe2JWhjEt1C4E3Yxe0PyT53a3k37+lI/6rULXKmTD6YpME6MA== X-Received: by 2002:a63:7050:: with SMTP id a16mr10716200pgn.105.1587985551642; Mon, 27 Apr 2020 04:05:51 -0700 (PDT) Received: from rayagonda.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id u3sm11996430pfn.217.2020.04.27.04.05.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2020 04:05:50 -0700 (PDT) From: Rayagonda Kokatanur To: u-boot@lists.denx.de, Simon Glass , Kever Yang , Michal Simek , Jagan Teki , Marek Vasut , Fabio Estevam , Baruch Siach , Troy Kisky , Josip Kelecic , Priyanka Jain , Biwen Li , Jason Li , Philippe Reynes , Eddie James , Heinrich Schuchardt , Sam Protsenko , Lukasz Majewski , Miquel Raynal , Ramon Fried , Anup Patel , AKASHI Takahiro , Patrice Chotard , Eugeniu Rosca , Joe Hershberger , Simon Goldschmidt , Boris Brezillon , Simon South , Andy Shevchenko , Marek Bykowski , Lokesh Vutla , Patrick Delaunay , Rajesh Ravi , Abhishek Shah , Vladimir Olovyannikov , Bharat Kumar Reddy Gooty , Srinath Mannam , Pramod Kumar , Ray Jui , Vikas Gupta , Trac Hoang , Corneliu Doban , Sheetal Tigadoli Cc: Rayagonda Kokatanur Subject: [PATCH v1 47/49] cmd: bcm: add nitro image load commands Date: Mon, 27 Apr 2020 16:22:05 +0530 Message-Id: <20200427105207.5659-48-rayagonda.kokatanur@broadcom.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200427105207.5659-1-rayagonda.kokatanur@broadcom.com> References: <20200427105207.5659-1-rayagonda.kokatanur@broadcom.com> X-Mailman-Approved-At: Mon, 27 Apr 2020 14:18:25 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 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.2 at phobos.denx.de X-Virus-Status: Clean From: Vikas Gupta Add nitro image load commands. Signed-off-by: Vikas Gupta Signed-off-by: Rayagonda Kokatanur --- cmd/bcm/Makefile | 1 + cmd/bcm/nitro_image_load.c | 99 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 cmd/bcm/nitro_image_load.c diff --git a/cmd/bcm/Makefile b/cmd/bcm/Makefile index dc274f6b96..671c0fbd43 100644 --- a/cmd/bcm/Makefile +++ b/cmd/bcm/Makefile @@ -3,3 +3,4 @@ obj-$(CONFIG_CMD_BCM_LOGSETUP) += logsetup.o obj-y += chimp_boot.o +obj-y += nitro_image_load.o diff --git a/cmd/bcm/nitro_image_load.c b/cmd/bcm/nitro_image_load.c new file mode 100644 index 0000000000..e460b91338 --- /dev/null +++ b/cmd/bcm/nitro_image_load.c @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom + */ + +#include +#include + +#define NITRO_FW_IMAGE_SIG 0xFF123456 +#define NITRO_NS3_CFG_IMAGE_SIG 0xCF54321A + +/*structure for Nitro bin file + * signature: Nitro fw itb file + * size: Nitro fw itb file + * signature: Nitro NS3 config file + * size: Nitro NS3 config file + * Data: Nitro fw itb file + * ............................ + * ............................ + * Data: Nitro NS3 config file + * ............................ + * ............................ + */ + +static struct nitro_img_header { + u32 nitro_fw_bin_sig; + u32 nitro_fw_bin_size; + u32 nitro_fw_cfg1_sig; + u32 nitro_fw_cfg1_size; + u32 nitro_fw_cfg2_sig; + u32 nitro_fw_cfg2_size; +} *img_header; + +static int do_spi_nitro_images_addr(cmd_tbl_t *cmdtp, int flag, int argc, + char *const argv[]) +{ + uintptr_t images_load_addr; + uintptr_t spi_load_addr; + u32 len; + u32 spi_data_offset = sizeof(struct nitro_img_header); + + if (argc != 3) + return CMD_RET_USAGE; + + /* convert command parameter to fastboot address (base 16), i.e. hex */ + images_load_addr = (uintptr_t)simple_strtoul(argv[1], NULL, 16); + if (!images_load_addr) { + pr_err("Invalid load address\n"); + return CMD_RET_USAGE; + } + + spi_load_addr = (uintptr_t)simple_strtoul(argv[2], NULL, 16); + if (!spi_load_addr) { + pr_err("Invalid spi load address\n"); + return CMD_RET_USAGE; + } + + img_header = (struct nitro_img_header *)images_load_addr; + + if (img_header->nitro_fw_bin_sig != NITRO_FW_IMAGE_SIG) { + pr_err("Invalid Nitro bin file\n"); + return CMD_RET_FAILURE; + } + + env_set_hex("spi_nitro_fw_itb_start_addr", (ulong)0); + env_set_hex("spi_nitro_fw_itb_len", (ulong)0); + env_set_hex("spi_nitro_fw_ns3_cfg_start_addr", (ulong)0); + env_set_hex("spi_nitro_fw_ns3_cfg_len", (ulong)0); + + len = img_header->nitro_fw_bin_size; + + env_set_hex("spi_nitro_fw_itb_start_addr", (ulong) + (spi_load_addr + spi_data_offset)); + env_set_hex("spi_nitro_fw_itb_len", (ulong) + img_header->nitro_fw_bin_size); + + spi_data_offset += len; + + if (img_header->nitro_fw_cfg1_sig == NITRO_NS3_CFG_IMAGE_SIG) { + len = img_header->nitro_fw_cfg1_size; + + env_set_hex("spi_nitro_fw_ns3_cfg_start_addr", (ulong) + (spi_load_addr + spi_data_offset)); + env_set_hex("spi_nitro_fw_ns3_cfg_len", (ulong)len); + + spi_data_offset += len; + } + + /* disable nitro secure boot */ + env_set_hex("nitro_fastboot_secure", (ulong)0); + + return CMD_RET_SUCCESS; +} + +U_BOOT_CMD + (spi_nitro_images_addr, 3, 1, do_spi_nitro_images_addr, + "Load the nitro bin header and sets envs ", + "spi_nitro_images_addr \n" +);