Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2197197/?format=api
{ "id": 2197197, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2197197/?format=api", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/1.0/projects/18/?format=api", "name": "U-Boot", "link_name": "uboot", "list_id": "u-boot.lists.denx.de", "list_email": "u-boot@lists.denx.de", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20260217112156.272154-3-a-dutta@ti.com>", "date": "2026-02-17T11:21:51", "name": "[2/7] spl: mtd: Remove MTD device after loading images", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "3f35307da6f9914ea45d5cadb6c18049e4b532da", "submitter": { "id": 89567, "url": "http://patchwork.ozlabs.org/api/1.0/people/89567/?format=api", "name": "Anurag Dutta", "email": "a-dutta@ti.com" }, "delegate": { "id": 127735, "url": "http://patchwork.ozlabs.org/api/1.0/users/127735/?format=api", "username": "passgat", "first_name": "Dario", "last_name": "Binacchi", "email": "dario.binacchi@amarulasolutions.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260217112156.272154-3-a-dutta@ti.com/mbox/", "series": [ { "id": 492411, "url": "http://patchwork.ozlabs.org/api/1.0/series/492411/?format=api", "date": "2026-02-17T11:21:49", "name": "OSPI NAND MTD load and boot support", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/492411/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2197197/checks/", "tags": {}, "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=ti.com header.i=@ti.com header.a=rsa-sha256\n header.s=selector1 header.b=RSPDaXhg;\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=quarantine dis=none) header.from=ti.com", "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=ti.com header.i=@ti.com header.b=\"RSPDaXhg\";\n\tdkim-atps=neutral", "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com", "phobos.denx.de; spf=pass smtp.mailfrom=a-dutta@ti.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 4fFcgn3LHbz1xwF\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 22:22:45 +1100 (AEDT)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id ADE5283CD3;\n\tTue, 17 Feb 2026 12:22:17 +0100 (CET)", "by phobos.denx.de (Postfix, from userid 109)\n id 1208483C72; Tue, 17 Feb 2026 12:22:17 +0100 (CET)", "from BN1PR04CU002.outbound.protection.outlook.com\n (mail-eastus2azlp170100001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c110::1])\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 5E52283CF2\n for <u-boot@lists.denx.de>; Tue, 17 Feb 2026 12:22:11 +0100 (CET)", "from PH8PR20CA0014.namprd20.prod.outlook.com (2603:10b6:510:23c::24)\n by DM6PR10MB4361.namprd10.prod.outlook.com (2603:10b6:5:211::13) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.13; Tue, 17 Feb\n 2026 11:22:08 +0000", "from SN1PEPF0002529D.namprd05.prod.outlook.com\n (2603:10b6:510:23c:cafe::2a) by PH8PR20CA0014.outlook.office365.com\n (2603:10b6:510:23c::24) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.16 via Frontend Transport; Tue,\n 17 Feb 2026 11:22:08 +0000", "from lewvzet201.ext.ti.com (198.47.23.195) by\n SN1PEPF0002529D.mail.protection.outlook.com (10.167.242.4) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9632.12 via Frontend Transport; Tue, 17 Feb 2026 11:22:07 +0000", "from DLEE213.ent.ti.com (157.170.170.116) by lewvzet201.ext.ti.com\n (10.4.14.104) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 05:22:07 -0600", "from DLEE215.ent.ti.com (157.170.170.118) by DLEE213.ent.ti.com\n (157.170.170.116) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 05:22:07 -0600", "from lelvem-mr05.itg.ti.com (10.180.75.9) by DLEE215.ent.ti.com\n (157.170.170.118) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend\n Transport; Tue, 17 Feb 2026 05:22:07 -0600", "from a-dutta.dhcp.ti.com (a-dutta.dhcp.ti.com [10.24.51.206] (may be\n forged))\n by lelvem-mr05.itg.ti.com (8.18.1/8.18.1) with ESMTP id 61HBLutO3263329;\n Tue, 17 Feb 2026 05:22:04 -0600" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de", "X-Spam-Level": "", "X-Spam-Status": "No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=no\n autolearn_force=no version=3.4.2", "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=u1nazLuKldg9H1MXTwJvt0HXtGJela1MaRC7rUJCAU5a2dC6yASpopb1LI58JfGXYnmLVuLjqYDKI9yzZpuzur/Vp8l6ZNxEIXg7iGufLZfYQluU+NQX6qlqaOpf6ybIupdmKJIi4LPvDDXfYZYDkUzJjU9lCmIL/vxdpsLpvRURYZ6y/jj/+3HmJGFh6n16QJoY2wsRJYM3OXjUmcXHOA0iQfxTy+pgvXRrrQZtsIuqkFiATdqFQxJxxWVo01S7aa+p0/3dzEmobn//xm5VAwUbhQmOi6/ObC5cBSQK9PL6JC+kd9kjrlOE8EVY0Sk6tV2nJ0HoeCJWK0ms9AUHfw==", "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=ZhJgB7eZ0Ye5TLImlPLW20Xr45hIpnqFPU0o7ndF7rU=;\n b=YXF08EToLUKcEiDsjNEYeZ35KCNDXapb6zdneOZEnEHg8N4iezfqf/Jk129adxegdiYkUDMTDVQdmQuv3vJjY4Iy8wJN7qk9R3H8MZ+xKRqx6+8UcBrJ80E2wS47o2NcDVKfpixmHUDA9mBpo6u6P29zT5W+BOVrKwFmAhFs+xjGiR0ZvONKnlJKKiKwBOHwcqoW10vBaDyoFtvJ1XUg9vyaewH8+grPefTn73NxRRjPOmur9avNvgYvy/+cpJoqZYFf4ayjkO1G1J626ZkiPa3Zx5TDe/tqggX/9XP2oDSRRCutGKrZZbdNwyMdgzWFHkzwRjQ+/34TgYNLIhLIjA==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 198.47.23.195) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=ti.com;\n dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=ti.com;\n dkim=none (message not signed); arc=none (0)", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=ZhJgB7eZ0Ye5TLImlPLW20Xr45hIpnqFPU0o7ndF7rU=;\n b=RSPDaXhgTLCRC8C01JY8H+H2xlkW758cpWiZp8z6/wdIfadogbQqf5gtNdaFjws5ZlvZb5IDxbl8Res6tDryiIYKtW+m+xOsK2GGGCV4ZlVlm3oicQ+f/6U0k/206pd3is626iTUtZprxEDYcLu35nqGYGIY4y7YP6LId7U9XEc=", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 198.47.23.195)\n smtp.mailfrom=ti.com; dkim=none (message not signed) header.d=none;\n dmarc=pass\n action=none header.from=ti.com;", "Received-SPF": "Pass (protection.outlook.com: domain of ti.com designates\n 198.47.23.195 as permitted sender) receiver=protection.outlook.com;\n client-ip=198.47.23.195; helo=lewvzet201.ext.ti.com; pr=C", "From": "Anurag Dutta <a-dutta@ti.com>", "To": "<jagan@amarulasolutions.com>, <trini@konsulko.com>", "CC": "<michal.simek@amd.com>, <venkatesh.abbarapu@amd.com>,\n <boon.khai.ng@altera.com>, <a-dutta@ti.com>, <s-k6@ti.com>,\n <gehariprasath@ti.com>, <vigneshr@ti.com>, <u-kumar1@ti.com>,\n <u-boot@lists.denx.de>", "Subject": "[PATCH 2/7] spl: mtd: Remove MTD device after loading images", "Date": "Tue, 17 Feb 2026 16:51:51 +0530", "Message-ID": "<20260217112156.272154-3-a-dutta@ti.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20260217112156.272154-1-a-dutta@ti.com>", "References": "<20260217112156.272154-1-a-dutta@ti.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-C2ProcessedOrg": "333ef613-75bf-4e12-a4b1-8e3623f5dcea", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "SN1PEPF0002529D:EE_|DM6PR10MB4361:EE_", "X-MS-Office365-Filtering-Correlation-Id": "b955f866-f401-4ce1-c488-08de6e16c94f", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|1800799024|82310400026|36860700013|376014;", "X-Microsoft-Antispam-Message-Info": "\n HrYXr4NhwprQNY8JeEO7chEKZlqzXrIfhwpvMvHxcOpIg4c3SOCGZu3KDmFypj0VrjS0nPtdLLEG6Aeq2LHHq+oBw69cpGPmHalyvz5EjGKm29TGRcjGU53x1uIJL7NqQ4pF5FVvpMMuVq+T4dA+j2w5it4GvWsBCn4PCG/NrHFZa9IEFHC/2NGUQi/FfdAu+G6pKh/r01UeOh5KGE8+8S/ioUJl6DxitD2HMBLWNm2e01TO7Cj+ocurCNzPdJABUX3UREivYRS89DzVmH/Fdw4BtdO39Tmv6FFw5zNGDXNSOXhN+X2v8QJxmEWJpPWPMUtenfIUmHvAlJNHah02NEi+quN5Ruj7HoAaCWjAq18xlXkdzB/aJamXFuSwhdkuoTf6slWUDpx7PMQc1SMTwurDwC732eafia2Z8DEfjq1hEf13MKVnc0OsdfRE5jlaeW1G2tJWIdaSjLwB71alwi6Wpvx7/yhk720uPz6UMqNVLDoIRBIcltvNfoFCxEG6bfM7R0WWxSDADJvAOGTjfdkT13v8lx7KxLAGwAqtG9ja2qJWk8MEqXjZRb6iOAHi1Xl2o784pUxlw3QXtQi9cTlgGc55+JwbEp4I8WjGC0pXvYh6kiUe8SFjLjxcu/bFkxCSK677F7vLsz+/Fd4wW869sqvjCEyeELHTGVByUEnNRSBeTc0dsm3kSejHvOQwGiWT8Xmo3OM+VYS9dnjAo0W/cxL5o5Z+k0iNyIxH/NAa8gMf35MJygMNAgp1grQzix3kD3Nnx9T6hjENIHndCjEuKuZZGSkEFKEtjfz8kVrit33xuuJTH7JFnkTb8iOc6z0VhNI5xsVZ4wEayEGQiyqhK5ba5O7QDLPwu/eS4esPKane6q903zGdimqES1YCogp4gIOwr6vNhOgbDAwQ+6GuztjwcM3GhINesclanqjCzluYQHWaISroMVd/Nn9bR19ijPsrSMmwyfGbPO6FKR+NLIj2v4EjNEf5D9PbczLtO0rNNlLQD48P9FHZCgJMDcx/UqhPd4RlS2zMsGqjW6toMklhhVXkyElQ449zm2Yy0YtMYwL7ivpvRJH0cT103l4YH8U4VIyI4iJ1TEq7zJfi2Seaw2a16zpm/0RLCgCny1XEGx+6k3imQG5jlPWKK/g5sYDhjDOgJQcn0pOtmJ5+YgWwguDfj/APUpWqNDgxOsv0lYxrWuF9tP2nbgVYaP5y4WMru6KCjAmshcAJ28VfWhd7F+JN/hldLJtwBNNPPpFYAMdHZw7ItIdtG8gD2aaCcom29qWmmDqRCcXqgyibvK6NtbIXzWCMfJ8Wx8p8RE9hr5/Fad2COi1QGqAzBc77n7oSPC/sv/8/u8GUYHaNb8FTS+8We2fSCwJNoDkSE8cNrAJ+QUNbxQKipMis90yo1ITOSnNz9vsRftPEJzzbpF9AzidST7Rq8UpWId77eoZVksy/9XJuyU7OivXkP9DMq5qghVW3OgOyHuF2DnBlOBSp8WEDhOvgW5yMO+Jlx4OlkIFwCTqVbkPDZjpeeYQ+8Y7v2ED4fcDeVp/HixtCtYGxtOOSORJlh80mEJNUPbq6Qj/iIeEPp7dLTKie/pYqwaKSsCV8ZXyq1g/NB3nMVyCH26zmlcTYWvZW5ylJl5nQIlbhmuZTE4iF0beF", "X-Forefront-Antispam-Report": "CIP:198.47.23.195; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:lewvzet201.ext.ti.com; PTR:InfoDomainNonexistent;\n CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(36860700013)(376014);\n DIR:OUT; SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n mRE5NIBB5+uu/EoWZEPLif8Lh4hT6dfRrfrGxP9xA3Y4mkN6SMJGKz070KPA41p2sjguNQfbkNGTlvTuNf4D43CV0jnaoHCbAFuhlijJlsY20AztPDJNMR+al+JL6JmSmN8FJqlHhDcq2lsh4vRJ51CEtb3twL5ZJKqMjraGvNMKIqp/sNcW839sshPuc1XlWGuSMj6veNSyf7wgk8K3E8MKu9oQkMQTWMxaRNT1sAY31VPYp1TeABWWAl67VmpX6eq/GVviRmxl+gM81EkRWfhnIo22iiq5CowSdggu+L5gS4DPUUqd/iEv1/tMB4mAaE83ho8EEYMCQ6gYyHNl9GEPQ8StfCdYpn9+sb++XlImOLc1vXISH/z142UJg6cx1PSy0HjgmjwV81TTSoXISnc1UiTeQ3YJ2N9fN6TsJ0TiEflAEMCnHN9dXEtWVTOK", "X-OriginatorOrg": "ti.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Feb 2026 11:22:07.8352 (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b955f866-f401-4ce1-c488-08de6e16c94f", "X-MS-Exchange-CrossTenant-Id": "e5b49634-450b-4709-8abb-1e2b19b982b7", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=e5b49634-450b-4709-8abb-1e2b19b982b7; Ip=[198.47.23.195];\n Helo=[lewvzet201.ext.ti.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n SN1PEPF0002529D.namprd05.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR10MB4361", "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" }, "content": "From: Apurva Nandan <a-nandan@ti.com>\n\nReleasing the flash into proper state, after the loading completes,\nis important for the next stage bootloader/kernel to be able to use\nthe MTD device. This would enable to reset the device for fresh\nuse by next boot stage.\n\nSigned-off-by: Apurva Nandan <a-nandan@ti.com>\nSigned-off-by: Anurag Dutta <a-dutta@ti.com>\n---\n common/spl/spl_mtd.c | 19 ++++++++++---------\n common/spl/spl_mtd_nand.c | 10 +++++++---\n drivers/mtd/mtd-uclass.c | 12 ++++++++++++\n drivers/mtd/nand/spi/core.c | 12 ++++++++----\n include/mtd.h | 2 +-\n 5 files changed, 38 insertions(+), 17 deletions(-)", "diff": "diff --git a/common/spl/spl_mtd.c b/common/spl/spl_mtd.c\nindex 341e1a73392..95c0c8ce8cd 100644\n--- a/common/spl/spl_mtd.c\n+++ b/common/spl/spl_mtd.c\n@@ -62,7 +62,7 @@ int spl_mtd_load(struct spl_image_info *spl_image,\n \terr = mtd_read(mtd, spl_mtd_get_uboot_offs(), sizeof(*header),\n \t\t &ret_len, (void *)header);\n \tif (err)\n-\t\treturn err;\n+\t\tgoto out_err;\n \n \tif (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&\n \t image_get_magic(header) == FDT_MAGIC) {\n@@ -70,21 +70,22 @@ int spl_mtd_load(struct spl_image_info *spl_image,\n \t\tload.priv = mtd;\n \t\tload.bl_len = 1;\n \t\tload.read = spl_mtd_fit_read;\n-\t\treturn spl_load_simple_fit(spl_image, &load,\n-\t\t\t\t\t spl_mtd_get_uboot_offs(), header);\n+\t\terr = spl_load_simple_fit(spl_image, &load,\n+\t\t\t\t\t spl_mtd_get_uboot_offs(), header);\n \t} else if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) {\n \t\tload.priv = mtd;\n \t\tload.bl_len = 1;\n \t\tload.read = spl_mtd_fit_read;\n-\t\treturn spl_load_imx_container(spl_image, &load,\n-\t\t\t\t\t spl_mtd_get_uboot_offs());\n+\t\terr = spl_load_imx_container(spl_image, &load,\n+\t\t\t\t\t spl_mtd_get_uboot_offs());\n \t} else {\n \t\terr = spl_parse_image_header(spl_image, bootdev, header);\n \t\tif (err)\n-\t\t\treturn err;\n-\t\treturn mtd_read(mtd, spl_mtd_get_uboot_offs(), spl_image->size,\n-\t\t\t\t&ret_len, (void *)(ulong)spl_image->load_addr);\n+\t\t\tgoto out_err;\n+\t\terr = mtd_read(mtd, spl_mtd_get_uboot_offs(), spl_image->size,\n+\t\t\t &ret_len, (void *)(ulong)spl_image->load_addr);\n \t}\n \n-\treturn -EINVAL;\n+out_err:\n+\treturn err;\n }\ndiff --git a/common/spl/spl_mtd_nand.c b/common/spl/spl_mtd_nand.c\nindex 9bc6ff86ee8..2eb7458e599 100644\n--- a/common/spl/spl_mtd_nand.c\n+++ b/common/spl/spl_mtd_nand.c\n@@ -16,16 +16,20 @@ static int spl_mtd_load_image(struct spl_image_info *spl_image,\n \t\t\t struct spl_boot_device *bootdev)\n {\n \tstruct mtd_info *mtd;\n-\tint ret;\n+\tint err;\n \n \tmtd = spl_prepare_mtd(BOOT_DEVICE_SPINAND);\n \tif (IS_ERR_OR_NULL(mtd)) {\n \t\tprintf(\"MTD device %s not found, ret %ld\\n\", \"spi-nand\",\n \t\t PTR_ERR(mtd));\n-\t\treturn -EINVAL;\n+\t\terr = PTR_ERR(mtd);\n+\t\tgoto remove_mtd_device;\n \t}\n \n-\treturn spl_mtd_load(spl_image, mtd, bootdev);\n+\terr = spl_mtd_load(spl_image, mtd, bootdev);\n+remove_mtd_device:\n+\tmtd_remove(mtd);\n+\treturn err;\n }\n \n SPL_LOAD_IMAGE_METHOD(\"SPINAND\", 0, BOOT_DEVICE_SPINAND, spl_mtd_load_image);\ndiff --git a/drivers/mtd/mtd-uclass.c b/drivers/mtd/mtd-uclass.c\nindex 720bd824c4d..598eedae6a5 100644\n--- a/drivers/mtd/mtd-uclass.c\n+++ b/drivers/mtd/mtd-uclass.c\n@@ -10,6 +10,18 @@\n #include <errno.h>\n #include <mtd.h>\n \n+/**\n+ * mtd_remove - Remove the device @dev\n+ *\n+ * @dev: U-Boot device to probe\n+ *\n+ * @return 0 on success, an error otherwise.\n+ */\n+int mtd_remove(struct mtd_info *mtd)\n+{\n+\treturn device_remove(mtd->dev, DM_REMOVE_NORMAL);\n+}\n+\n /*\n * Implement a MTD uclass which should include most flash drivers.\n * The uclass private is pointed to mtd_info.\ndiff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c\nindex 14af4264612..9bd8cce58f2 100644\n--- a/drivers/mtd/nand/spi/core.c\n+++ b/drivers/mtd/nand/spi/core.c\n@@ -1718,26 +1718,28 @@ err_spinand_cleanup:\n \treturn ret;\n }\n \n-#ifndef __UBOOT__\n static int spinand_remove(struct udevice *slave)\n {\n \tstruct spinand_device *spinand;\n \tstruct mtd_info *mtd;\n-\tint ret;\n+\tint ret = 0;\n \n-\tspinand = spi_mem_get_drvdata(slave);\n+\tspinand = dev_get_priv(slave);\n \tmtd = spinand_to_mtd(spinand);\n \tfree(mtd->name);\n \n+#ifndef __UBOOT__\n \tret = mtd_device_unregister(mtd);\n \tif (ret)\n \t\treturn ret;\n \n+#endif\n \tspinand_cleanup(spinand);\n \n-\treturn 0;\n+\treturn ret;\n }\n \n+#ifndef __UBOOT__\n static const struct spi_device_id spinand_ids[] = {\n \t{ .name = \"spi-nand\" },\n \t{ /* sentinel */ },\n@@ -1783,4 +1785,6 @@ U_BOOT_DRIVER(spinand) = {\n \t.probe = spinand_probe,\n \t.bind = spinand_bind,\n \t.plat_auto = sizeof(struct spinand_plat),\n+\t.remove = spinand_remove,\n+\t.flags = DM_FLAG_OS_PREPARE,\n };\ndiff --git a/include/mtd.h b/include/mtd.h\nindex f9e5082446a..740f1bb76db 100644\n--- a/include/mtd.h\n+++ b/include/mtd.h\n@@ -11,7 +11,7 @@\n #include <linux/mtd/mtd.h>\n \n int mtd_probe_devices(void);\n-\n+int mtd_remove(struct mtd_info *mtd);\n void board_mtdparts_default(const char **mtdids, const char **mtdparts);\n \n /* compute the max size for the string associated to a dev type */\n", "prefixes": [ "2/7" ] }