From patchwork Mon Jul 31 22:43:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1815298 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=YaVGDSxf; dkim=pass (2048-bit key) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=YaVGDSxf; 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 ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RFCxL2qQ4z1yfG for ; Tue, 1 Aug 2023 08:45:10 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 6F5E186AFC; Tue, 1 Aug 2023 00:43:44 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="YaVGDSxf"; dkim=pass (2048-bit key) header.d=seco.com header.i=@seco.com header.b="YaVGDSxf"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B4E8E86AC0; Tue, 1 Aug 2023 00:43:41 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0622.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe1f::622]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9AA3E86AF1 for ; Tue, 1 Aug 2023 00:43:37 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RMHU66jKXzfpAZPFnnded2/EbXW0ECQPJXDf74Fa/Bs=; b=YaVGDSxfkFwSrIMtO1vz7LuFliJA/mo5qCTzA1gnt1utX+28GLe3GwJNPyep6E6tENFVlx66fFOobPTGaLzpCpsPKBgHG18hLwNwNEMvUUjcRyICdNE/XNGuLNyXr4RM+tCayOluLM3wLPtUqonvBOfekihSqy5RZfQRai8P1TqG9ecQyCuOvKymFihuiYVaQTZwpM3B/sJYSnZRzfl/v4A8Xhe+nmAgbrFXGVJusn/zYZpY7hQme7AgbadnGEYWKHMtyvYMrZUJ47k2LHV8iKz/1TfRJXtvOA8oLp8ptQ8jtGykYqoaCierkkEvH14JZvpo/kwK8Hl4x0PLx+IFuA== Received: from AS9PR06CA0438.eurprd06.prod.outlook.com (2603:10a6:20b:49e::26) by DU2PR03MB7926.eurprd03.prod.outlook.com (2603:10a6:10:2d9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.44; Mon, 31 Jul 2023 22:43:35 +0000 Received: from AM6EUR05FT025.eop-eur05.prod.protection.outlook.com (2603:10a6:20b:49e:cafe::68) by AS9PR06CA0438.outlook.office365.com (2603:10a6:20b:49e::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.43 via Frontend Transport; Mon, 31 Jul 2023 22:43:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 20.160.56.85) smtp.mailfrom=seco.com; dkim=pass (signature was verified) header.d=seco.com;dmarc=pass action=none header.from=seco.com; Received-SPF: Pass (protection.outlook.com: domain of seco.com designates 20.160.56.85 as permitted sender) receiver=protection.outlook.com; client-ip=20.160.56.85; helo=inpost-eu.tmcas.trendmicro.com; pr=C Received: from inpost-eu.tmcas.trendmicro.com (20.160.56.85) by AM6EUR05FT025.mail.protection.outlook.com (10.233.240.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.29 via Frontend Transport; Mon, 31 Jul 2023 22:43:35 +0000 Received: from outmta (unknown [192.168.82.133]) by inpost-eu.tmcas.trendmicro.com (Trend Micro CAS) with ESMTP id EA7832008008B; Mon, 31 Jul 2023 22:43:34 +0000 (UTC) Received: from EUR02-AM0-obe.outbound.protection.outlook.com (unknown [104.47.11.241]) by repre.tmcas.trendmicro.com (Trend Micro CAS) with ESMTPS id 7F1722008006E; Mon, 31 Jul 2023 22:43:28 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gjfJPXW3HPQM7g2P7b8wklAxNsfAt3aJIXzuEEa1gQhAShk/p3dP7ZVfdpQkghnxS0Z9K8NJsfd+aHzmTCCQY4yrDqvhgnI68Gyja+Ea8re1sEdSx4PhauRCoBva387hMKcaCcnpt/0GgC/HGec9zDO07q9Q3CR69/qtUGozb5ZtrZnoIOWTsgApszm9BIoxNBwpdwWpDMWEyksPMBKncLmZ0xocDG/INSjjtdSkbdOkHgMTZhn7je0y+EupyHldbBv+HSoysQ8B+cnuFIwKlHcJ1x9WTZ2YUcT5ONt2obrshvuZRDpyKj7QAV9U1RBwKshTB4OgOxX+lsaC3wp/gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=RMHU66jKXzfpAZPFnnded2/EbXW0ECQPJXDf74Fa/Bs=; b=PUZ5giNAOKPcRweSUhoScOnVj3afA6SnZ2Mf6FjbkCUdUJ2BYKtoKPFblWnZyRjrEtUzC/0BgzZ1t/B6rr0Rr/fvkGiri9Ii1ZDnLyGc8winVFE/NiVToqMY4HLnluJWFn7aGMNlAekeG8EehntYLG3j/IFsEG6lNLa3B0/NsJKmBjIw5Km8K8Ga7aHYiVxOSLTr9BtszYNOxw9Hs63weC/6ASDYo29XkHkWNq/qhte/qjXjJWUmdcIxaBO4jSEyr7NfhmZbnqqWBf/GLhdF93shODTGBJxtd1ZPcdn9Z6WgM17zK+2PzSdLyiRdj5usm//TAwnGtxhCUJzr6q0Yhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RMHU66jKXzfpAZPFnnded2/EbXW0ECQPJXDf74Fa/Bs=; b=YaVGDSxfkFwSrIMtO1vz7LuFliJA/mo5qCTzA1gnt1utX+28GLe3GwJNPyep6E6tENFVlx66fFOobPTGaLzpCpsPKBgHG18hLwNwNEMvUUjcRyICdNE/XNGuLNyXr4RM+tCayOluLM3wLPtUqonvBOfekihSqy5RZfQRai8P1TqG9ecQyCuOvKymFihuiYVaQTZwpM3B/sJYSnZRzfl/v4A8Xhe+nmAgbrFXGVJusn/zYZpY7hQme7AgbadnGEYWKHMtyvYMrZUJ47k2LHV8iKz/1TfRJXtvOA8oLp8ptQ8jtGykYqoaCierkkEvH14JZvpo/kwK8Hl4x0PLx+IFuA== Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB9PR03MB8847.eurprd03.prod.outlook.com (2603:10a6:10:3dd::13) by AM9PR03MB7899.eurprd03.prod.outlook.com (2603:10a6:20b:436::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.43; Mon, 31 Jul 2023 22:43:27 +0000 Received: from DB9PR03MB8847.eurprd03.prod.outlook.com ([fe80::65d7:d7d8:711b:2514]) by DB9PR03MB8847.eurprd03.prod.outlook.com ([fe80::65d7:d7d8:711b:2514%5]) with mapi id 15.20.6631.043; Mon, 31 Jul 2023 22:43:27 +0000 From: Sean Anderson To: Tom Rini , u-boot@lists.denx.de Cc: =?utf-8?q?Pali_Roh=C3=A1r?= , Stefan Roese , =?utf-8?q?Marek_Beh=C3=BAn?= , Simon Glass , Xavier Drudis Ferran , Heinrich Schuchardt , Marek Vasut , Sean Anderson Subject: [PATCH v5 10/11] spl: Convert spi to spl_load Date: Mon, 31 Jul 2023 18:43:02 -0400 Message-Id: <20230731224304.111081-11-sean.anderson@seco.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230731224304.111081-1-sean.anderson@seco.com> References: <20230731224304.111081-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR15CA0013.namprd15.prod.outlook.com (2603:10b6:208:1b4::26) To DB9PR03MB8847.eurprd03.prod.outlook.com (2603:10a6:10:3dd::13) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR03MB8847:EE_|AM9PR03MB7899:EE_|AM6EUR05FT025:EE_|DU2PR03MB7926:EE_ X-MS-Office365-Filtering-Correlation-Id: 0bf7b9a9-88ab-4e36-f721-08db9217930a X-TrendMicro-CAS-OUT-LOOP-IDENTIFIER: 656f966764b7fb185830381c646b41a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: NmDXvs77fuuwVq5n36/O0XayVZHAHPk0jQ+0fpp0e2+3EFV91WdbK+HVNUTk4CGXK9eXWuh6Is5wugoKY2QjZPfoP6KbXhxtNAs5Jt7Ow3yLhYeaO2w/qXNesmZ2/evrgr2hWyPgIEIc+1o/JYwVFPitq9il4rsqEZ6R7qyfLrXdo9p/xCOxsKM1qYRlbTTOXnxQzvT3BeXcjq9v5BQ+5tBNKgF6OQJvKYkWLua2RXmqnK31AGitj80jZxYqdulQ1HVPcUFlK6EhsH168vNgVPdGxdY+nuocZI2kQ2hIHN1umiHsdz8vVijmQ/AngefxwsBVdYLQUiq6jG8YpA5J71gyNJIJYJrTP1gSbzKhjSy7CQDqSKXBqEL+Wi4uPtZy3wz01a7TBHbg611Y5SRSRRLyPUAso87lh3V6ri3k2iMJYCQSRxKGq2lmhfNZ8NeJni5RsQCkmTcc7M6ADlLb1acm21zvtZ+6hjbo3Wdgf8COn0/BjZ4gCdYd0bsYWNsPwRLySinMqoBrtxi2R7WTDJ2mhFdU2MSLO5CsMB+kqWzqE4YdZAiX+TFfc+n5Fqv2maHKbrkYGgUj4fxOzVIDElzmAz5Xr1k52oVuAKCMxiw0jIAWfW60LTDj4wf7G+CQ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR03MB8847.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(39850400004)(376002)(396003)(136003)(366004)(346002)(451199021)(6512007)(6486002)(6666004)(52116002)(186003)(83380400001)(2616005)(36756003)(86362001)(38100700002)(38350700002)(26005)(1076003)(6506007)(5660300002)(4326008)(41300700001)(8936002)(8676002)(66946007)(66476007)(2906002)(316002)(107886003)(478600001)(54906003)(66556008)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7899 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM6EUR05FT025.eop-eur05.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4b6ec95f-3faf-43af-1285-08db92178e6e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gFiPHjYB9l7e6cTo6+clZ+JQPNtZlVktC/FbEVDJgrjSPAK+eMu0WscwRgYkz0vF4DUWBMk6KfQuIpkAMbsCz0nv6GSO6mtvP727GI3/GocaSVgZSfvvlL10q6MWW5Cro8BmC1Z5B24XXh5xl2vBTEGPePw8KZsjpGNw1mVIjJFokdX8ue/OCb7Zg2P9ru6SOkxyNdD+K3gOWeDay+Ev2fmr08v6bn0jwxxoQdgPys3mY/CzTo0YoeROgd2w/qPFFB7KWP9iLg8OQlpr6BkJJTaD+Uov8lDVNmWOLnWnHIPJ/WLhPE3gPDNurX5qh0gZHvOfbXLHF0vVjIxpvt/U1B+tQgZgEoFtlHDGAefheT7hxrnfe/5NdQRk8WNp0LLVQVZxJWWA6lOyQjb0wP2x0mvRazqeCDSCwV7MSDPVV2DhpWaE4noQyswn2+XN2Nx41OAw5rrJDWaCtzfR2i6in5deVcmQpe9V+NodJdH5WTJZvPt9ivlCl3Z/6c0hA5AZuXB3h8aByebjeCAgPDCnJvEuu3LDF3Rwblgw2P1HGgvBjUL8fqVCCx/QnjlKt3WgibyCQNAi0fUT5T286JlOP8pfrTEOTtcITP3qPKIjIJxa3mTDsHhP0jWBCSt2nsIqrMU5wPG2Z8HIN/0cHjsxcEZa8SzJgREFCPyp7CVvJ4X6a9PpLoFgtneJ2Yb4I2Jww7UcCwSt6WnprIYaqOQ4qYg9xdiW1tHJdqe8GAydka78jgVFC0QLNNaKD1PYrcYs X-Forefront-Antispam-Report: CIP:20.160.56.85; CTRY:NL; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:inpost-eu.tmcas.trendmicro.com; PTR:inpost-eu.tmcas.trendmicro.com; CAT:NONE; SFS:(13230028)(376002)(136003)(396003)(346002)(39850400004)(451199021)(82310400008)(46966006)(36840700001)(82740400003)(356005)(7636003)(7596003)(54906003)(36860700001)(6512007)(26005)(1076003)(6506007)(34070700002)(6486002)(36756003)(8676002)(8936002)(6666004)(5660300002)(70206006)(70586007)(40480700001)(4326008)(107886003)(2906002)(2616005)(83380400001)(478600001)(41300700001)(336012)(47076005)(186003)(86362001)(316002)(44832011); DIR:OUT; SFP:1101; X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jul 2023 22:43:35.1617 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0bf7b9a9-88ab-4e36-f721-08db9217930a X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bebe97c3-6438-442e-ade3-ff17aa50e733; Ip=[20.160.56.85]; Helo=[inpost-eu.tmcas.trendmicro.com] X-MS-Exchange-CrossTenant-AuthSource: AM6EUR05FT025.eop-eur05.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR03MB7926 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean This converts the spi load method to use spl_load. As a consequence, it also adds support for LOAD_FIT_FULL. Signed-off-by: Sean Anderson --- Changes in v5: - Rework to load header in spl_load common/spl/spl_spi.c | 72 +++++--------------------------------------- 1 file changed, 8 insertions(+), 64 deletions(-) diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index 2aff025f76..14391a1c96 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -89,12 +89,14 @@ u32 __weak spl_spi_boot_cs(void) static int spl_spi_load_image(struct spl_image_info *spl_image, struct spl_boot_device *bootdev) { - int err = 0; unsigned int payload_offs; struct spi_flash *flash; - struct legacy_img_hdr *header; unsigned int sf_bus = spl_spi_boot_bus(); unsigned int sf_cs = spl_spi_boot_cs(); + struct spl_load_info load = { + .bl_len = 1, + .read = spl_spi_fit_read, + }; /* * Load U-Boot image from SPI flash into RAM @@ -109,77 +111,19 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, return -ENODEV; } + load.dev = flash; payload_offs = spl_spi_get_uboot_offs(flash); - header = spl_get_load_buffer(-sizeof(*header), sizeof(*header)); - if (CONFIG_IS_ENABLED(OF_REAL)) { payload_offs = ofnode_conf_read_int("u-boot,spl-payload-offset", payload_offs); } #if CONFIG_IS_ENABLED(OS_BOOT) - if (spl_start_uboot() || spi_load_image_os(spl_image, bootdev, flash, header)) + if (!spl_start_uboot() && !spi_load_image_os(spl_image, bootdev, flash, header)) + return 0; #endif - { - /* Load u-boot, mkimage header is 64 bytes. */ - err = spi_flash_read(flash, payload_offs, sizeof(*header), - (void *)header); - if (err) { - debug("%s: Failed to read from SPI flash (err=%d)\n", - __func__, err); - return err; - } - - if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) && - image_get_magic(header) == FDT_MAGIC) { - err = spi_flash_read(flash, payload_offs, - roundup(fdt_totalsize(header), 4), - (void *)CONFIG_SYS_LOAD_ADDR); - if (err) - return err; - err = spl_parse_image_header(spl_image, bootdev, - (struct legacy_img_hdr *)CONFIG_SYS_LOAD_ADDR); - } else if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && - image_get_magic(header) == FDT_MAGIC) { - struct spl_load_info load; - - debug("Found FIT\n"); - load.dev = flash; - load.priv = NULL; - load.filename = NULL; - load.bl_len = 1; - load.read = spl_spi_fit_read; - err = spl_load_simple_fit(spl_image, &load, - payload_offs, - header); - } else if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) { - struct spl_load_info load; - - load.dev = flash; - load.priv = NULL; - load.filename = NULL; - load.bl_len = 1; - load.read = spl_spi_fit_read; - - err = spl_load_imx_container(spl_image, &load, - payload_offs); - } else { - err = spl_parse_image_header(spl_image, bootdev, header); - if (err) - return err; - err = spi_flash_read(flash, payload_offs + spl_image->offset, - spl_image->size, - (void *)spl_image->load_addr); - } - if (IS_ENABLED(CONFIG_SPI_FLASH_SOFT_RESET)) { - err = spi_nor_remove(flash); - if (err) - return err; - } - } - - return err; + return spl_load(spl_image, bootdev, &load, 0, payload_offs); } /* Use priorty 1 so that boards can override this */ SPL_LOAD_IMAGE_METHOD("SPI", 1, BOOT_DEVICE_SPI, spl_spi_load_image);