From patchwork Thu May 5 20:16:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1627252 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=wzwVoWKb; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KvQ5H0s1Zz9sBF for ; Fri, 6 May 2022 06:18:59 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4EDE984101; Thu, 5 May 2022 22:17:42 +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="wzwVoWKb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D62B2840D8; Thu, 5 May 2022 22:17:31 +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=unavailable autolearn_force=no version=3.4.2 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on0627.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0c::627]) (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 20F4B83FEC for ; Thu, 5 May 2022 22:17:21 +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 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N7jwy//CzKg4qtDxXe2KVmXmynX0dXKVvDM/z69VsWXgqMZCH+so/2Xsn09whXZS+cZx6GNpuJNsbcvRAvaInSia4QeF/XkkksYb0nDvdkcbCffOXU/UX+nwZagUz/FSVC6rDAKfH1s9vQhcngK2/igJsFFy4GC8tzCzrH/7HsmI2DAiKyaNDmt6j9HOy4/XfyW8aHJxoCjHaPi4NmzyLIuJKtrKcQZGSiqRwe5H9DWFnpAisw8UMUkOEXwzkipcjdj6hJew3f1yA/hGudKl2qSILb81AWqud9OY67Y+/4Jz94OZgAoYMRyYW5Z4vj8iCUo0xzcQc+FIn/K19IJqhw== 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=6/hFUyLZaSKXut6It+mTZ5EIsWAymGmiqIlajNY9IeQ=; b=Tu4uspagipYjlpHTlwbYPDfYprdTNM8FTO58645nIO61tHrnYmNNgf6U/820RbfOWTlBzk3dh89olH5T1nJI8uPZHWYMczE1OVOth5PofsIcvPkg3ySgg5LlQX71G49vWsMcfHXn/SAfCPI+sFVF7lcdZ89aq5dee25B2ZwrxEKdrFCJy5M25NpOLy2pfJUmcVDFREmwoG3vHOSEaxVIGNNQ1phSk4atPAKUjSUTa8/u0AYkdw0bELuLq/Uspc7wUaVul45t5+F5k4/DBt8gd7/ON8TZHhtAlQlAaiONC2rWmjVejG89uEactMH7mProKe+T1mdzT+zFewXY7uA4Mw== 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=6/hFUyLZaSKXut6It+mTZ5EIsWAymGmiqIlajNY9IeQ=; b=wzwVoWKbTIrys9bE7+deQjNMm/E03L9yl9c1QR5aLcleVZ2BZ9fhn5yq82MJwulJ35ABNmrQO7rh9TeapJJclO0xbRIyNwxKjz7lVvl6Sd2Np2PDGbEy6cp14MVYF2qSHNc0CJstUs155d3W2gSNCbhxyZkVdIUZr+bluhAWG0ZIW5I93vRQxk9aykg6xaxLGtJzvGV826Hg0e5nEpA9Fe1X4qJ5b9VF6Xwb9rZkxTAO49iqF5RV+m7XfiaeP+2wYwB2gxV7HqPrth5BBjyddQKSneKGFxwTbjXjwDAZvsAJMXj+wNgxkE5wrqlaXjG6hrCPMZkENn86WCfAY8IfMw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by DB8PR03MB5676.eurprd03.prod.outlook.com (2603:10a6:10:10b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Thu, 5 May 2022 20:17:20 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::a9d3:8abd:3f5e:a0c]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::a9d3:8abd:3f5e:a0c%5]) with mapi id 15.20.5206.027; Thu, 5 May 2022 20:17:20 +0000 From: Sean Anderson To: Tom Rini , u-boot@lists.denx.de Cc: Stefan Roese , Marek Vasut , Simon Glass , =?utf-8?q?Pali_Roh=C3=A1r?= , =?utf-8?q?Marek_Beh=C3=BAn?= , Sean Anderson , Jagan Teki , Nathan Barrett-Morrison Subject: [PATCH v3 9/9] spl: spi: Consolidate spi_load_image_os into spl_spi_load_image Date: Thu, 5 May 2022 16:16:55 -0400 Message-Id: <20220505201655.645692-10-sean.anderson@seco.com> X-Mailer: git-send-email 2.35.1.1320.gc452695387.dirty In-Reply-To: <20220505201655.645692-1-sean.anderson@seco.com> References: <20220505201655.645692-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0047.namprd20.prod.outlook.com (2603:10b6:208:235::16) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3725f6b-ab71-46c4-df88-08da2ed441ef X-MS-TrafficTypeDiagnostic: DB8PR03MB5676:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rkWJK4SZUQUco7sQt0O+G1wF8Txn9SLMAWORO7iCmoNZq4/gKlcsjZhS3FotwLqhHJSUMdBIJbghvNw3Ld5+KR7ujm5KRYsdLqU54kHyzJIx7ojSR0T3M7rDiFwG9TG+IuGgIexOaIGt8BEZ2P7h0Q7YrwHYaIM6mCEZkQbJI9DZrc2rZSxL/OXWP5lfNPGmlvwRfsu0K2rHs3RjC7ST5FxV7NBeT784EvnMeYQ4HEJv1/ixmHy6fvM3Hb7toiAXtEHzylmdsY3lr8wp7h0p3OtV7tNvZCOMG2zgNR42zQVE2MXyDay5vksLec/qMqyHdW5TMFW+lz+l948KxV4QbhPiYSR7CgXl2A62AugLTK9vkK3i7Yq0NFC6URpP5yrWBj9IFmhxFcz0PiNMYapev8zIzNb8I9TvOYboCcPnj1R2wLgVeu5HGklBdBRX8mq0nAnkCBm1aFc7c9EEK0LkKYofKd0NOKCeu/aEOcZpttsS6ntgyi6VWmj/aPvx9hfGuZvHjhxgLYtucCqOYS5EywKlLw4156nlA182SAoZRSVGknX/ndBvRmi5z6FiC5243484Ts+B4ufnhRJHxwNDeksV0/jGwtp9FiA7BjUUKSejbFIfOWKAqSUdo1C5OfAL8F0mWmFT2Jc80dMdyPsgaRYuZMvgKM8acLG0KNjRq83EtCA/zueqNzcgfLQ4a8DBDcYkIL6QAz3u8U6/UqbkpA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(86362001)(1076003)(4326008)(6512007)(54906003)(26005)(186003)(2616005)(44832011)(8676002)(83380400001)(66946007)(66556008)(66476007)(316002)(5660300002)(38350700002)(36756003)(6486002)(38100700002)(6506007)(8936002)(508600001)(2906002)(52116002)(6666004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y1iwZ3QouZ+2zyOVf6FTnQe936CXJdh0LGB613hmWiprENWyMhCSCDskZ/6pXFwbzwkDrINkj3KMdN00ibXdCby0nxEgNKBS3QeWMH9XtbeQxogGrWxDi8whi8c/kxLkcJLM5pmDeCT5c92FNpiZN/yQK36nY1HRnstYLRRA5mqn3Uq1ph9FZLC/8O/LluyFh0V96mFI60KMP3FPANkh7fjclkKtjKPQZfrdGKzSurlGdxKX2Df1CSD78HmodUQA8wBrHCZUaQppMQ8Jx1kjSuvJEs3i/e/jY2xPIrJy+MyDiq5ZIsx1brcf/a0leVwmy/wCpKg+tWwy1NF54bBU88JJnERCBYNcMemteolB4Qs2LlbrFk/xPaYOX/no1TAsrNza/WkjAL5gOwwCEt093L+j1rsh0THOb0pVdj+T8yEF5dqbmv95z+9Og3wbfYRFmihaZienMx0DQBkfuv88RYvoOQ3k0E2FlxNvD9rpM2HsSLBf4R9Bdy/TpbPe3bgaC72CWDsHfI2XwEASKa55U7SFuzLACZaQ00mii4rR31ZLcfn4R63NF6UbUTXb14lmKmWo+jpk82xos1YfqxmcReVoqsl9lmhRXpZD5D18zdrWDxx703BLs/VF/Gs+KyA+Qx2eIq5iMMX8YIJv/TXeWlCSdezm1rWa9Acot4MVAmkkyy2re33hxmNNMI8/+8MMzL/Vbk2uvg5hjU6myTCZjPPSrzOEtEgWjliZLgUZaw9E5V3u09+FSHgaRKYy1rXlU3LqCo1w4i1+lYotisZhZBUoo8edcugil9GKdzxArWo5cFljzOmpyOXfw3CYqdTF+6drWuI6UHnurKr3iNhgWcgSupCJvt94noMoncq6HPF8N1X/pfdjUOT2MXaEHMd3Pf9e1DaPLXi6zoelE0YcxEOwTF75dcy8kROOP/9mx4v2lvYGinjIg0w/rcdBYfFvcCpoq6r84wkGze8jGiPU7+8HeH920vd3S79rnHcEH65VQpsFirwMbfvug2gt6juG5V9H/CRkA3Ap9cQirE0P6QV1U4DUDO5WMw5uqZhRhSIUz7TJBVQloB1J6rzNW1NoMP3tgn6ZWwSAP+Abg213VDehbS1fEf8jELud/04jGq/UxyA2NRN6cWNEKqI2gBs3KUxz0Nu27a9Qlg39uwgXjLdkl5ulPTGUhb+w74ziSCRlnpYmbA4lCM7CaQKLGl4xOUjdPk82OEZirbu907w+UrKIloBZvJWF3hxIQtNBPX3Vq10Mz1HBgh5rJ7g855W3LVljpOWWIJSwmWqtDAl5nouVT+Vi+il+Ehf6Suxy+LpsIbFxh8CFMHB5xvRehMF7NABtQ/erwQahTvJyXJIR7K1qPt2s2vz1ThvWbTzOm8PnqN0p2ZOsvn4eIamEsCxB/zsSwIyzDTmBJTYLjawGCTJSX8sU5sQIr3rcOtjyCDvxmLIrwax5+bwW98b7fqBxfLhyTyJzZiFbnkngsUyhoiHAwk7HkjFkYPqJ4+bTkRxTugBARDhsKOnFLoMPgA658n2oRwJjolYXjaR373NbF95Sj2kEsvC6gBHX4mSjQe+uBEdGD1BvwMaJM/fdOj/04LrnFzuYjXdJ2PK0yF4J3s6P5AxEZ6U0QxNge/RoDjEw/ikG/63S2eKky6wdqrLCtlSn+J6FI5l0QTeKpWLtuHgzoJRphWZnXL1UbpyApULGxNiSBRGDb6pZtNOK0NzhqaMD3F7Rzb5bA0C+l02nTM6YgB6CctTp429qVmhbyO8= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3725f6b-ab71-46c4-df88-08da2ed441ef X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2022 20:17:20.1936 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nVDwY5d1i9XZaJOdMm7mLK3Lqtt0Wxw93Ar4I6FNBK/IsHeo0elZfpN+vrg1TjQzhubpGQt/Dx5Vqb9h0adCUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR03MB5676 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.5 at phobos.denx.de X-Virus-Status: Clean spi_load_image_os performs almost the same steps as the non-falcon-boot path of spl_spi_load_image. The load address is different, and it also loads a device tree, but that's it. Refactor the boot process so that they can both use the same load function. Signed-off-by: Sean Anderson --- (no changes since v2) Changes in v2: - New common/spl/spl_spi.c | 87 +++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 54 deletions(-) diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index 037db1a19f..e724a74783 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -18,41 +18,6 @@ #include #include -#if CONFIG_IS_ENABLED(OS_BOOT) -/* - * Load the kernel, check for a valid header we can parse, and if found load - * the kernel and then device tree. - */ -static int spi_load_image_os(struct spl_image_info *spl_image, - struct spl_boot_device *bootdev, - struct spi_flash *flash, - struct image_header *header) -{ - int err; - - /* Read for a header, parse or error out. */ - spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, sizeof(*header), - (void *)header); - - if (image_get_magic(header) != IH_MAGIC) - return -1; - - err = spl_parse_image_header(spl_image, bootdev, header); - if (err) - return err; - - spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, - spl_image->size, (void *)spl_image->load_addr); - - /* Read device tree. */ - spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS, - CONFIG_SYS_SPI_ARGS_SIZE, - (void *)CONFIG_SYS_SPL_ARGS_ADDR); - - return 0; -} -#endif - static ulong spl_spi_fit_read(struct spl_load_info *load, ulong sector, ulong count, void *buf) { @@ -71,6 +36,29 @@ unsigned int __weak spl_spi_get_uboot_offs(struct spi_flash *flash) return CONFIG_SYS_SPI_U_BOOT_OFFS; } +static int spi_do_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev, + struct spl_load_info *load, + unsigned int payload_offs) +{ + int ret; + struct spi_flash *flash = load->dev; + struct image_header *header = + spl_get_load_buffer(-sizeof(*header), sizeof(*header)); + + /* mkimage header is 64 bytes. */ + ret = spi_flash_read(flash, payload_offs, sizeof(*header), + (void *)header); + if (ret) { + debug("%s: Failed to read from SPI flash (err=%d)\n", + __func__, ret); + return ret; + } + + return spl_load(spl_image, bootdev, load, header, 0, + payload_offs); +} + /* * The main entry for SPI booting. It's necessary that SDRAM is already * configured and available since this code loads the main U-Boot image @@ -79,10 +67,8 @@ unsigned int __weak spl_spi_get_uboot_offs(struct spi_flash *flash) 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 image_header *header; struct spl_load_info load = { .bl_len = 1, .read = spl_spi_fit_read, @@ -106,31 +92,24 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, 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)) -#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; - } - - err = spl_load(spl_image, bootdev, &load, header, 0, - payload_offs); + if (spl_start_uboot()) { + int err = spi_do_load_image(spl_image, bootdev, &load, + CONFIG_SYS_SPI_KERNEL_OFFS); + if (!err) + /* Read device tree. */ + return spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS, + CONFIG_SYS_SPI_ARGS_SIZE, + (void *)CONFIG_SYS_SPL_ARGS_ADDR); } +#endif - return err; + return spi_do_load_image(spl_image, bootdev, &load, payload_offs); } /* Use priorty 1 so that boards can override this */ SPL_LOAD_IMAGE_METHOD("SPI", 1, BOOT_DEVICE_SPI, spl_spi_load_image);