get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2197196/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2197196,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2197196/?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-2-a-dutta@ti.com>",
    "date": "2026-02-17T11:21:50",
    "name": "[1/7] common: spl: mtd: Add support for loading images from MTD",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "7ae010c674de2e5a3f15ebd05abbf00fd7911c4a",
    "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-2-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/2197196/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=AMCc55Q2;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; 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=\"AMCc55Q2\";\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 [85.214.62.61])\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 4fFcgP6flmz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 22:22:25 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 4A8A883C72;\n\tTue, 17 Feb 2026 12:22:17 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id B4D8083D3D; Tue, 17 Feb 2026 12:22:15 +0100 (CET)",
            "from PH8PR06CU001.outbound.protection.outlook.com\n (mail-westus3azlp170120001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c107::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 CFD7F83CB5\n for <u-boot@lists.denx.de>; Tue, 17 Feb 2026 12:22:09 +0100 (CET)",
            "from PH0P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:d3::6) by\n DM3PPFA927664FB.namprd10.prod.outlook.com (2603:10b6:f:fc00::c3f)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb\n 2026 11:22:06 +0000",
            "from SN1PEPF0002529F.namprd05.prod.outlook.com\n (2603:10b6:510:d3:cafe::9d) by PH0P220CA0001.outlook.office365.com\n (2603:10b6:510:d3::6) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.13 via Frontend Transport; Tue,\n 17 Feb 2026 11:22:05 +0000",
            "from lewvzet201.ext.ti.com (198.47.23.195) by\n SN1PEPF0002529F.mail.protection.outlook.com (10.167.242.6) 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:04 +0000",
            "from DLEE200.ent.ti.com (157.170.170.75) 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:04 -0600",
            "from DLEE209.ent.ti.com (157.170.170.98) by DLEE200.ent.ti.com\n (157.170.170.75) 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:03 -0600",
            "from lelvem-mr05.itg.ti.com (10.180.75.9) by DLEE209.ent.ti.com\n (157.170.170.98) 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:03 -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 61HBLutN3263329;\n Tue, 17 Feb 2026 05:22:00 -0600"
        ],
        "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,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,T_SPF_PERMERROR autolearn=ham\n autolearn_force=no version=3.4.2",
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=MIPBADtLXrrY42xMQff8PE/WSYMUtVZvCaZMySZAouM8Qofzfp+/b5mdFc/RUO1L80ehDnuIgUNB7nMnj+ThSKmrmLoaT01sy+2JDh2fIWb6b8GbPI6HCbuwhxAI1Y65xC/fKCB2Q+hUuep4XNV45BdfSQht5/0FoeiaEVzvYuSZXM0h9GwzhUwEs2pm6FvJXIHv+4alOSljYykUZx7bqGfEbKWXwDYpBUZ3pGqmMXhChaWefE9Xg9zpN8JHwEA6FZfMrdgy8s/vBLZrw//kCT5aGqPJ/2Oageu/N0yEhx5dliXKASLLR10/L6qt+7lTw54o7Ylgsq8jeuhK2osInQ==",
        "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=ZTr7/5U4LkdjsolSmSpes5fx/ioDitjINwskAyuPJvs=;\n b=TVqP36UtK7y9rL+3LL4V74qnYEjYwB1+O/3khIi3ZC4k34qMjeMRty7u2+AL2CyxdWktQVlp/PuM9fcMSZospkSXYvIMu2BHOdn25pM3oJKRr80ivA2qAEf3LGz02hK2SR41pihK4oXwfFPL/KonRepogxJ+93gc214d/i0BlvYhcn6e+30bNalZJTAcxBBMTy3EJ1KBr03Qngtx7+4KBPwaF68oLGiyJlSwATZrvEaE9Dm4amuT0wFRPn3VfseSqgkK8cADAWDZ8AlgwX/32UJVPs4nJrJvf7saT6ilpHQLgMlv0CDHaN9GIxANejguP3INWQY21nN76rfu2BXx/w==",
        "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=ZTr7/5U4LkdjsolSmSpes5fx/ioDitjINwskAyuPJvs=;\n b=AMCc55Q2WWm8SsIftZTimzhboq/neTRZSNKCk88lbnz5M0fa8mCrwco9WlL6PoTE414Qm42zCjS/JVPD4vEtUpPe1Uwcj/oUq0fVd0cNZUg2EXWknyC85m1VjcRVdaNK6rY8pPYKnKE55dg04WCQ6WSRpWf+sXgYKzQIeg2mZAo=",
        "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 1/7] common: spl: mtd: Add support for loading images from MTD",
        "Date": "Tue, 17 Feb 2026 16:51:50 +0530",
        "Message-ID": "<20260217112156.272154-2-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": "SN1PEPF0002529F:EE_|DM3PPFA927664FB:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "bf3fccb4-0a85-43d8-432a-08de6e16c757",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|82310400026|376014|36860700013|1800799024|13003099007;",
        "X-Microsoft-Antispam-Message-Info": "\n mG8eRjjbaojK+9BulPSFARRhJHlq4Pva2Cv5IfptzWB7muDXs0FcUwmgKBNN9RrgqRSz0KGEh1ct9g5EFzMVmHo7o5JT49d4wOnH2QaE12a5HayowIUlcFwTJ9DqV4eX2PAQASKrtpHATxl9rgJMBwvM9nv/qYj7CFQBsZfAOj/fVVetX9YQcu0uZ+6PMcSBUj0FBLUFslZiJ53jDPeQgh6KbpSuumE64Fd3uyAcAO/xvJ1QXHeFomqZQVlEH17cAm9YRXrz1tLdA5p30kGewauf1qMCHlAkbRDi+7u58jysielVdZ0cnIKqb2vy4kGhlg2dI81OWATMPeqQzG28C0XLdUyoo30H5hOhhfMyn++Q9Xq1ldsi7a83Np+o/Umj6hrZxxaLKmOy2rUT2WiO+neu3hQD3Cv61qK0x4gUWFSf/mnEMTB0G06cGRim+UgOKuDzOJkWoH5ANFdNEn3wsV2GhEG/x3mJ3mrRVYMkUEhQqmGSXF8Di45efGYSnt9qUIWAvN7cF0WCyrItH1Q63jyvDKJs+f2WN32hTdqM6QPKdwvNhH8Cdwmxaer911r2h7CB8RvwvaTvlSMeZ2vKBqrqjOChnZl5XYt0mUX2Yy2dnqOXPIsDzjU9OlQEKlBVunqtr5iL3U0XOA2oqR4lO2YMDj1qH5tfSD5IJyJPAXAGPsAmkTqNua38Ijseg3BY/s4+/ehh8R85HeEP7cxmVTcPuirTocHauW681af3fevnEj7lYsYWnDeooUiZpUaZsTp0ZaWkEqIhqHDyc4W7yJKd2bSlsvhzClyQ9miFJtAh5dtaXV0rk7uQwsB1uqM3LOnJRun2MCzvoekx5LM9F7XuyINH7lvON2zrzQ8UxyFiQ17OmCibeKkSkLjIwZQ/Dy0V0pdFL1Gc1SEFpm63xl8Squ+++jRYm2ZlQMqOzHRWradqQHJ/HfFLBTmNtYGQCPWsRdFnJ0TNRlrDMRuEkLU9+Dhy9z0pwB7xUHsXws7pea9OS28jFh3UhW8GLhV5CJ2s3IJ8tz8GzrAoyy3x/ttenO4ZM40cz4swhtR9ff1iYeeHle1t3r5ye0KvkoHZdNazCVajaEdV4+roa1Bn7qsv/Pes7X8PHjHydAOXrGYWq9N7jfxKtx94GjKiBWpBlt79ppTT50yfAVtdDAljnHeYFPcgnBZ5LgiPmYUw3lzxukM0bK84BHyyD9WW239WVb3haG21hxHDMcH+zA7qREJ1LcPNYYEHlz2Y/f9Dlj5gQS1UDndnqNiXYlutUoGwB0NFo4dxXmLQEuRZbe/GHHSvjprtT0FmLdfk+zFw0Sg9EHoIB5qme74mC9yTsf6TLQFgzbCgf9DePF2jaqzQSyghb0ldkNEz7NDX9xPQgydEMmdQuGaBRn1H+Wm0W5m9n9A03SmNkw5zNzX3TjCBHJ4CsIe/iZ37LbREwytZL+1Tr7pmwFjBfvwaUd/f5RrsPkU3gy/3VrzfIoGXSmlfLVS/1ao7ancot5i7Pd9ZdLBoP/0t3bmzskU9Uupr90sX8AhRoOt6sGzi6fWn/3C+i8mk3hp0PLDi0cP0AsPWx8+UKdewS/NLQ3J/v1MyNjNYDn8mS2LaF49MfIOaZ9RFrA==",
        "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;\n SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024)(13003099007);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n R2wlGLY4+fxiesWPIa3q8zSsNPdScduwawDXfWCqHrimOPeYoAafdi2tZNoHinASsxN8JQzQ/h9arCPcq9kcZVPz7OKlO3aKF7mA9AiMWqfRyYqs0xFL4rGrZrTeYcElBKk4PD1CT5e7X3aDvYTnirHO7u7nfX0xzyF4SFcEYlg9NFzBMD3kCqHoBsoT/rjDryLX3mCaqLivHy8KPPUL7dgcabzllf+SNLZK37vsnxds5wqvHQfkMSh38QBo7BrSFBopKwaK2/E++d5kSMJvozbxqDrNcqD79cZ0nrR1UK6+YZAdDdLIC5xd/Y0LJozlLIMx6GtW7j93vyN2Lmkb9BIMkq/usiKab1U4JSFp2Ug0/LBqrjyPptip4NlMAL39b6+VgXiTWBfGppTEtFoEMAixuQApe0FBPMND57Ws1vB+XAB/XOzQbnbuuv0nfMBO",
        "X-OriginatorOrg": "ti.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Feb 2026 11:22:04.5666 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n bf3fccb4-0a85-43d8-432a-08de6e16c757",
        "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 SN1PEPF0002529F.namprd05.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM3PPFA927664FB",
        "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\nIntroduce support for using MTD subsystem for loading images from\nmemory flashes. This will provide the support of using mtd functions\nwhich are abstracted over the type of flash being used, to load the\nboot images from the flash.\n\nCurrently, add support for only SPI NAND flashes. This can be extended\nto all other flash types, when required.\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      | 90 +++++++++++++++++++++++++++++++++++++++\n common/spl/spl_mtd_nand.c | 31 ++++++++++++++\n include/spl.h             | 18 ++++++++\n 3 files changed, 139 insertions(+)\n create mode 100644 common/spl/spl_mtd.c\n create mode 100644 common/spl/spl_mtd_nand.c",
    "diff": "diff --git a/common/spl/spl_mtd.c b/common/spl/spl_mtd.c\nnew file mode 100644\nindex 00000000000..341e1a73392\n--- /dev/null\n+++ b/common/spl/spl_mtd.c\n@@ -0,0 +1,90 @@\n+// SPDX-License-Identifier: GPL-2.0+\n+/*\n+ * FIT image loader functions using MTD read\n+ *\n+ * Copyright (C) 2026 Texas Instruments Incorporated - http://www.ti.com/\n+ *\tApurva Nandan <a-nandan@ti.com>\n+ */\n+#include <config.h>\n+#include <image.h>\n+#include <log.h>\n+#include <spl.h>\n+#include <asm/io.h>\n+#include <mtd.h>\n+\n+uint32_t __weak spl_mtd_get_uboot_offs(void)\n+{\n+\treturn CONFIG_SYS_MTD_U_BOOT_OFFS;\n+}\n+\n+static ulong spl_mtd_fit_read(struct spl_load_info *load, ulong offs,\n+\t\t\t      ulong size, void *dst)\n+{\n+\tstruct mtd_info *mtd = load->priv;\n+\tint err;\n+\tsize_t ret_len;\n+\n+\terr = mtd_read(mtd, offs, size, &ret_len, dst);\n+\tif (!err)\n+\t\treturn ret_len;\n+\n+\treturn 0;\n+}\n+\n+struct mtd_info *spl_prepare_mtd(uint boot_device)\n+{\n+\tstruct mtd_info *mtd = NULL;\n+\n+\tmtd_probe_devices();\n+\n+\tswitch (boot_device) {\n+\tcase BOOT_DEVICE_SPINAND:\n+\t\tmtd = get_mtd_device_nm(\"spi-nand0\");\n+\t\tbreak;\n+\tdefault:\n+\t\tputs(PHASE_PROMPT \"Unsupported MTD Boot Device!\\n\");\n+\t\tbreak;\n+\t}\n+\n+\treturn mtd;\n+}\n+\n+int spl_mtd_load(struct spl_image_info *spl_image,\n+\t\t struct mtd_info *mtd, struct spl_boot_device *bootdev)\n+{\n+\tint err;\n+\tstruct legacy_img_hdr *header;\n+\t__maybe_unused struct spl_load_info load;\n+\tsize_t ret_len;\n+\n+\theader = spl_get_load_buffer(0, sizeof(*header));\n+\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+\n+\tif (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&\n+\t    image_get_magic(header) == FDT_MAGIC) {\n+\t\tdebug(\"Found FIT\\n\");\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} 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} 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}\n+\n+\treturn -EINVAL;\n+}\ndiff --git a/common/spl/spl_mtd_nand.c b/common/spl/spl_mtd_nand.c\nnew file mode 100644\nindex 00000000000..9bc6ff86ee8\n--- /dev/null\n+++ b/common/spl/spl_mtd_nand.c\n@@ -0,0 +1,31 @@\n+// SPDX-License-Identifier: GPL-2.0+\n+/*\n+ * FIT image loader using MTD read\n+ *\n+ * Copyright (C) 2026 Texas Instruments Incorporated - http://www.ti.com/\n+ *\tAnurag Dutta <a-dutta@ti.com>\n+ */\n+#include <config.h>\n+#include <image.h>\n+#include <log.h>\n+#include <spl.h>\n+#include <asm/io.h>\n+#include <mtd.h>\n+\n+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+\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}\n+\n+\treturn spl_mtd_load(spl_image, mtd, bootdev);\n+}\n+\n+SPL_LOAD_IMAGE_METHOD(\"SPINAND\", 0, BOOT_DEVICE_SPINAND, spl_mtd_load_image);\ndiff --git a/include/spl.h b/include/spl.h\nindex 06dc28362d3..c4442be4fdb 100644\n--- a/include/spl.h\n+++ b/include/spl.h\n@@ -1219,4 +1219,22 @@ int spl_reloc_prepare(struct spl_image_info *image, ulong *addrp);\n  */\n int spl_reloc_jump(struct spl_image_info *image, spl_jump_to_image_t func);\n \n+/* SPL MTD functions */\n+/**\n+ * spl_prepare_mtd() - Prepares the mtd for the corresponidng boot device\n+ *\n+ * @boot_device: A number indicating the BOOT_DEVICE type\n+ */\n+struct mtd_info *spl_prepare_mtd(uint boot_device);\n+\n+/**\n+ * spl_mtd_load() - FIT Image loader\n+ *\n+ * @spl_image: SPL image to jump to\n+ * @mtd: MTD device descriptor with geometry, flags, and read/write/erase function pointers\n+ * @bootdev: boot device used by SPL\n+ */\n+int spl_mtd_load(struct spl_image_info *spl_image, struct mtd_info *mtd,\n+\t\t struct spl_boot_device *bootdev);\n+\n #endif\n",
    "prefixes": [
        "1/7"
    ]
}