get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2224436,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2224436/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260417120951.3454249-7-aswin.murugan@oss.qualcomm.com/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/1.2/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,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260417120951.3454249-7-aswin.murugan@oss.qualcomm.com>",
    "list_archive_url": null,
    "date": "2026-04-17T12:09:50",
    "name": "[v3,6/7] doc: document mkimage fatfs type and Qualcomm multi-DTB",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "b0a9f8595d0125dd88c6a2dc56fb911b1003e7a7",
    "submitter": {
        "id": 90811,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/90811/?format=api",
        "name": "Aswin Murugan",
        "email": "aswin.murugan@oss.qualcomm.com"
    },
    "delegate": {
        "id": 3651,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/3651/?format=api",
        "username": "trini",
        "first_name": "Tom",
        "last_name": "Rini",
        "email": "trini@ti.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260417120951.3454249-7-aswin.murugan@oss.qualcomm.com/mbox/",
    "series": [
        {
            "id": 500319,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/500319/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=500319",
            "date": "2026-04-17T12:09:44",
            "name": "Add FIT multi-DTB selection for Qualcomm platforms",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/500319/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2224436/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2224436/checks/",
    "tags": {},
    "related": [],
    "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 (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=dmmGjOf4;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=ai3IZA8D;\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=none (p=none dis=none) header.from=oss.qualcomm.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"dmmGjOf4\";\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"ai3IZA8D\";\n\tdkim-atps=neutral",
            "phobos.denx.de; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=aswin.murugan@oss.qualcomm.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)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxtzN6dhnz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 22:12:00 +1000 (AEST)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id AA125842C9;\n\tFri, 17 Apr 2026 14:11:37 +0200 (CEST)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 15112842D2; Fri, 17 Apr 2026 14:11:36 +0200 (CEST)",
            "from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n [205.220.180.131])\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 27B0183B99\n for <u-boot@lists.denx.de>; Fri, 17 Apr 2026 14:11:33 +0200 (CEST)",
            "from pps.filterd (m0279871.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63H80F0L667783\n for <u-boot@lists.denx.de>; Fri, 17 Apr 2026 12:11:31 GMT",
            "from mail-pf1-f198.google.com (mail-pf1-f198.google.com\n [209.85.210.198])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dkaxct61n-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <u-boot@lists.denx.de>; Fri, 17 Apr 2026 12:11:31 +0000 (GMT)",
            "by mail-pf1-f198.google.com with SMTP id\n d2e1a72fcca58-82f2138a9e0so434994b3a.3\n for <u-boot@lists.denx.de>; Fri, 17 Apr 2026 05:11:31 -0700 (PDT)",
            "from hu-aswinm-blr.qualcomm.com\n (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82f8e9cbb28sm1744641b3a.13.2026.04.17.05.11.21\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 17 Apr 2026 05:11:28 -0700 (PDT)"
        ],
        "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,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2",
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n ZaeAZN+8yaN6Re2s0FGb54d2eF09X5ZjmqYxsyhA7Ag=; b=dmmGjOf4eGrh9c10\n MnO3JRxLTIlTQ3uyE9T85LfQnFv8NiiI3+LG+jz01TpW3ximSptJ5XmE+lPvbcvU\n 6WZwBSCXprhJMAqiYHDscO8o6QoExBxFl26QV4ct1K9fHOh1bT4yzMDc45AYNYxB\n hr9W24V0tzuv+IZYx9A3g7NK8owlSk5XO9AeF2I6iSGtsLgnoUBr7JCha3hlzEce\n UwdQj5PuavzfWhDRlxYHUM6XjHK0EkQWfRwyCLAOhYIFzSic1/hEVb4iBTjYc1p2\n jzJJMf/lYYTyK6MloaReO8+m+B1vtZIZ35QO4CF9TSnVMwIoQqobozikgl9WkxqG\n 0IVHWA==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1776427890; x=1777032690; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:from:to:cc:subject:date:message-id\n :reply-to; bh=ZaeAZN+8yaN6Re2s0FGb54d2eF09X5ZjmqYxsyhA7Ag=;\n b=ai3IZA8DtwfkdLQsTh/QKxKDemV5BgstaiMI5iXMSjPvnbNdx+uT9Rdk5bBji2IXUX\n eMUpiJjkL/WnfRjT4zIbYBDvX71yn5ghdsmJ6tDPvXyeQzPBAMpYMRRqmXrBSDFucoZp\n fpjb0Ft8z3Jo0LPV0L5O2nQvsIeb6t5tmeZcXKTrJu4m5p1bj6dtH1p0Ddjj3/CYk5vu\n VprHHbF0a1NY8oCxwrRTiE+Wmf3xty/aZCjEKBC6CzQm8VFueYZ3K89DUythPFTKN5gi\n 84Ie8ZXVamDjRjMy5XS71nGwYJmPpKryv11ddpu5Sp3eALCy2x6UH6AHcm2cXAS5IQd2\n gRxg=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776427890; x=1777032690;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=ZaeAZN+8yaN6Re2s0FGb54d2eF09X5ZjmqYxsyhA7Ag=;\n b=Jsl+YpclfGHnMcCJWtXq6HIyqKiNV+MzIX6DblpN9Tq/EuaZfL9O3FGUTRM+vPsNL0\n ewdpy+lB63jMxM6qTRY5esMox+5D96pe4LP7YKpZBSS4rVTS5eDv3l+lly6zU57Xl951\n +i8T1UvM+LU+626pky8h+g/aMpfMU/r3Mq73sDpQSlJTkvM2nZ16XWNbesmoz0MAcCmy\n Dqhab2PvLIa6QHLPPo66Fen4+i7O8NeITHft1UDGAY5GcvZVcfSf7sEToR43uNyLh4mO\n f40CaxgGv8IDUuY5tslH7LCSNiMUR62oTUvhLTleqJc5hIqQ2oYJLy9lr0byQU4f82P0\n 3jCg==",
        "X-Forwarded-Encrypted": "i=1;\n AFNElJ8Sg2UObf7o0eHTdqe979fNTVFzrwPpxcBvktkTTgzB6AeAzb6sfhL5qHXiZkuSISp8aQOqFoM=@lists.denx.de",
        "X-Gm-Message-State": "AOJu0YzDXp69dS3rypXVhsVxgpaDTQ82ubIQeZWie6SMiskJHntbsWLH\n rUsLNsr5aC0vbV/cij1ZeM3nlrObAEuYGdF0+LpQ4xmikrr65tf2nPQB1ZftGdkhROt/vojr95+\n WZToifj8fYncmbYMyKGUrsrL97eD+5m28ztKsYffbRk8VebW8ju80W6CJ",
        "X-Gm-Gg": "AeBDietF9v5Ladxmi+kEXXA18IkWKQTET2jpncWqz7nvV+DbFTr0qcNNK43jOkyBdO+\n rpr/jncEuQi0Tidnezw67hJ61xrHsajX5YOkGag6L2wJluw7SjG3X+RgySHlzfyVypDA/e6+izo\n DCCIinY5dwdsv2IkyLo+ClnTrU2PVmPQn5oSFgc5lAD/p+2QZmG3PRDzJvdyz4sfetRlpoSnehm\n 80Kf+HBa10Ky9/6fB+FaXNnDHdUD7FLVC7gpvqAmNI6MECUXkB9CrHAQerTrmcZqHrHxwwU0aej\n 49vOgVnbOSMBz48kmGMbfYUP4UtdHaiiImVHErjEiXecHYifIB5QJoVOJxlfs+vBMfxlK687VPn\n TxB0sclRxz2FUZyAP+uXkGM4LadSgR0SD9xlxAn1g1gSkfGa9txuDZSDnm2trjCdmUyaI0g/rQk\n LXcJACNuoaFlRuVfr48vVPb4+WPGVMJU3dT9rY3VttNTu6TYhn7mo=",
        "X-Received": [
            "by 2002:a05:6a00:a90d:b0:823:9e5:855e with SMTP id\n d2e1a72fcca58-82f8c2c6390mr2550725b3a.0.1776427889937;\n Fri, 17 Apr 2026 05:11:29 -0700 (PDT)",
            "by 2002:a05:6a00:a90d:b0:823:9e5:855e with SMTP id\n d2e1a72fcca58-82f8c2c6390mr2550681b3a.0.1776427889258;\n Fri, 17 Apr 2026 05:11:29 -0700 (PDT)"
        ],
        "From": "Aswin Murugan <aswin.murugan@oss.qualcomm.com>",
        "To": "trini@konsulko.com, casey.connolly@linaro.org, neil.armstrong@linaro.org,\n sumit.garg@kernel.org, aswin.murugan@oss.qualcomm.com,\n sughosh.ganu@arm.com, ilias.apalodimas@linaro.org, gchan9527@gmail.com,\n mchitale@ventanamicro.com, maximmosk4@gmail.com, jonas@kwiboo.se,\n marek.vasut@mailbox.org, quentin.schulz@cherry.de, peng.fan@nxp.com,\n sajattack@postmarketos.org, balaji.selvanathan@oss.qualcomm.com,\n wolfgang.wallner@at.abb.com, e@freeshell.de, yangshiji66@outlook.com,\n jan.kiszka@siemens.com, funderscore@postmarketos.org, hs@nabladev.com,\n kory.maincent@bootlin.com, jj251510319013@gmail.com,\n carlos.lopezr4096@gmail.com, u-boot-qcom@groups.io, u-boot@lists.denx.de",
        "Subject": "[PATCH v3 6/7] doc: document mkimage fatfs type and Qualcomm\n multi-DTB",
        "Date": "Fri, 17 Apr 2026 17:39:50 +0530",
        "Message-Id": "<20260417120951.3454249-7-aswin.murugan@oss.qualcomm.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260417120951.3454249-1-aswin.murugan@oss.qualcomm.com>",
        "References": "<20260417120951.3454249-1-aswin.murugan@oss.qualcomm.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-Authority-Analysis": "v=2.4 cv=JcqMa0KV c=1 sm=1 tr=0 ts=69e22373 cx=c_pps\n a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22\n a=XpE1AkgCAAAA:8 a=3zqMThaUAAAA:8 a=cSziVDP4AAAA:20 a=NEAV23lmAAAA:8\n a=EUspDBNiAAAA:8 a=RfRJOeisY0wqTn3sFHIA:9 a=ER5y7YfLcBVczURf:21\n a=lqcHg5cX4UMA:10 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10\n a=z2U-W3hJrleVIN9YIjzO:22 a=IoOABgeZipijB_acs4fv:22 a=dpZMgbseYPk84XhQl7oQ:22\n a=7DfZiAEMZEHNOMwpeQAY:22 a=bA3UWDv6hWIuX7UZL3qL:22",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDE3MDEyMiBTYWx0ZWRfX+3UTuf5Iqn5n\n +E1Eo5JJp6AeT5KkhFrDs15Iwy4nqtBhBWE3+YcNyG8osf7X0NvM7N0zTB7iCnCudOv0sk3sk4T\n nazKLrRb18peTu/sEdRzAMcSm24XTUbbdNVUuQbPPg6wWdln9Jf6g8fxJ0vu8qdLC/kkQ8Wf6Is\n YLac3qvOndVhrtgbJo7EJ2wmud7+NKHUAMv6lBP9JJBTa2AXSKp0YLIjk0AOsPSGZCSeIFwSS+Z\n d99HZ6XWqNlYREXAMYW6c5Ko4ix/qACV0zWPUj3IGDPejzJ5N1kYRfr1YrKLbiXn3ciQ+A+kf9w\n POlUzaH90uhXpOLFvgmpN6dpqJFGiwnB2TVhtszkeEdQ77hGVI98E1y9vHytmGfsjT1dZhl8UWo\n XHR0zQL33/HKFtvgFbEb26X3tkj1Dm6jqCGmFVmbdhMwFlyopn7FQ6ttdAcV12WaESoEJgrh0nK\n L2FMZK0db1Sv0ZmgbHQ==",
        "X-Proofpoint-GUID": "usHZp2MNsLGUr64Xo__MiKKvtHHZp-7A",
        "X-Proofpoint-ORIG-GUID": "usHZp2MNsLGUr64Xo__MiKKvtHHZp-7A",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-17_01,2026-04-17_01,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n spamscore=0 adultscore=0 clxscore=1015 malwarescore=0 phishscore=0\n suspectscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0\n bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound\n adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000\n definitions=main-2604170122",
        "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": "Update doc/mkimage.1 to document the new fatfs image type,\nthe --fat-* long options, a fatfs entry in the CONFIGURATION\nsection, and two usage examples.\n\nAdd doc/board/qualcomm/multi_dtb.rst describing the\nQualcomm FIT-based multi-DTB packaging workflow for\nSnapdragon platforms. The document covers:\n- FIT ITS configuration and compatible string matching\n- QCOM metadata binary format and identifier properties\n- Guidelines for adding new socver/boardrev entries\n- Step-by-step image creation using mkimage -T fatfs\n\nUpdate doc/board/qualcomm/index.rst to include the new\nmulti_dtb page in the toctree.\n\nSigned-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>\n---\n doc/board/qualcomm/index.rst     |   1 +\n doc/board/qualcomm/multi_dtb.rst | 352 +++++++++++++++++++++++++++++++\n doc/mkimage.1                    | 103 +++++++++\n 3 files changed, 456 insertions(+)\n create mode 100644 doc/board/qualcomm/multi_dtb.rst",
    "diff": "diff --git a/doc/board/qualcomm/index.rst b/doc/board/qualcomm/index.rst\nindex 3238a68e859..fe4a4aecd60 100644\n--- a/doc/board/qualcomm/index.rst\n+++ b/doc/board/qualcomm/index.rst\n@@ -10,6 +10,7 @@ Qualcomm\n    debugging\n    dragonboard410c\n    dragonwing\n+   multi_dtb\n    rb3gen2\n    iq8\n    phones\ndiff --git a/doc/board/qualcomm/multi_dtb.rst b/doc/board/qualcomm/multi_dtb.rst\nnew file mode 100644\nindex 00000000000..fa9252ce1c4\n--- /dev/null\n+++ b/doc/board/qualcomm/multi_dtb.rst\n@@ -0,0 +1,352 @@\n+.. SPDX-License-Identifier: GPL-2.0\n+\n+Qualcomm FIT-Based Multi-DTB Support\n+=====================================\n+\n+Overview\n+--------\n+\n+Qualcomm supports multiple SoCs and boards within a single software release\n+binary, which requires packaging all corresponding Device Tree Blobs (DTBs)\n+into a single image. To ensure the appropriate DTB(O)s are selected for each\n+platform, a mechanism for dynamic device tree selection is necessary.\n+\n+The Flattened Image Tree (FIT) format is a standard file format for packaging\n+images widely used in the community. U-Boot leverages this format to facilitate\n+DTB selection and meet platform-specific requirements. The appropriate DTB\n+selected for the platform by U-Boot is passed to the OS at boot time.\n+\n+Terminology\n+-----------\n+\n+- **FIT**: Flattened Image Tree\n+- **DT**: Device Tree\n+- **FDT**: Flattened Device Tree\n+- **.its**: Image Tree Source\n+- **.dtb**: Device Tree Blob\n+\n+References:\n+\n+- https://docs.u-boot.org/en/latest/usage/fit/index.html\n+- https://fitspec.osfw.foundation/\n+\n+Design\n+------\n+\n+The FIT-based approach, commonly adopted within the U-Boot community, offers a\n+standardized solution for multi-DTB packaging. This design is the first\n+implementation utilizing FIT to facilitate DT selection from a multi-DTB\n+binary.\n+\n+FIT provides a flexible and extensible format to support multiple components\n+(device tree, kernel image, ramdisk). It also supports multiple configurations\n+so that the same FIT can be used to boot multiple platforms, with some\n+components in common (e.g., kernel) and some specific to that platform (e.g.,\n+device tree). The Flattened Image Tree Specification (FITSpec) suggests the\n+image selection mechanism.\n+\n+Detailed Description\n+^^^^^^^^^^^^^^^^^^^^\n+\n+1. In the FIT ITS file, each configuration comprises a compatible string along\n+   with a declaration for the base DT blob and the overlays in sequence. A few\n+   such configuration node examples are provided in the .its tree format below.\n+\n+2. This implementation uses a metadata binary structured in DT format for\n+   selecting the appropriate configuration. A node, named\n+   ``fdt-qcom-metadata.dtb``, for the metadata binary is provided under the\n+   ``images`` node in the FIT tree with type ``qcom_metadata``.\n+\n+3. The compatible string suffixes in the FIT tree can be put in any order, but\n+   the node corresponding to each suffix must be present in the\n+   ``qcom-dtb-metadata`` binary. If any new suffix is introduced, it must be\n+   added to the metadata (refer to ``qcom-dtb-metadata.dts`` below this\n+   section). The new suffix sub-node must be added under the relevant node.\n+\n+   Suggested pattern::\n+\n+       <soc>-<soc-sku>-<socver>-<board>-<boardrev>-<board-subtype-peripheral-subtype>-<board-subtype-storage-type>-<board-subtype-memory-size>-<softsku>-<oem>\n+\n+4. Each of the suffixes inside the compatible string must be an exact match for\n+   a DTB to be selected. Upon any mismatch, a configuration is rejected and the\n+   search moves ahead with other available configurations.\n+\n+5. The compatible string that gets matched has its corresponding DTB(O)s\n+   selected for boot.\n+\n+FIT ITS Configuration\n+^^^^^^^^^^^^^^^^^^^^^\n+\n+Each configuration in the FIT ITS file comprises a compatible string along\n+with a declaration for the base DT blob and overlays in sequence. Example::\n+\n+    config-1 {\n+        compatible = \"qcom,soc\";\n+        fdt = \"fdt-soc-v2.dtb\";\n+    };\n+\n+    config-2 {\n+        compatible = \"qcom,soc-socv1.0\";\n+        fdt = \"fdt-soc-v1.dtb\";\n+    };\n+\n+Refer: https://github.com/qualcomm-linux/qcom-dtb-metadata/blob/main/qcom-fitimage.its\n+\n+DTB Metadata Description and Parsing\n+--------------------------------------\n+\n+The QCOM metadata supports the following DT nodes: ``soc``, ``soc-sku``,\n+``socver``, ``board``, ``boardrev``, ``board-subtype-peripheral-subtype``,\n+``board-subtype-storage-type``, ``board-subtype-memory-size``, ``softsku``\n+and ``oem``. Sub-nodes of the respective type can be added under each node.\n+\n+The SoC specific identifiers are encapsulated in DT properties named\n+``msm-id`` and ``socver-id``.\n+\n+Identifier Properties\n+^^^^^^^^^^^^^^^^^^^^^\n+\n+- **msm-id** ``<u32>``: Each sub-node under the ``soc`` node must contain an\n+  ``msm-id`` property. Bits 0-15 of the 32-bit value represent the chip\n+  identifier; the remaining bits are reserved.\n+\n+  Each sub-node under the ``soc-sku`` node should contain an ``msm-id``\n+  property. Bits 20-21 represent the package-id, bits 16-19 represent the\n+  foundry-id; the remaining bits are ignored.\n+\n+- **socver-id** ``<u32>``: Each sub-node under the ``socver`` node should\n+  contain a ``socver-id`` property. Bits 0-3 represent the chip minor version,\n+  bits 4-7 represent the chip major version; the remaining bits are reserved.\n+\n+- **board-id** ``<u32>``: Each sub-node under the ``board`` node must contain\n+  a ``board-id`` property. Bits 0-7 represent the board type; the remaining\n+  bits are reserved.\n+\n+- **boardrev-id** ``<u32>``: Each sub-node under the ``boardrev`` node must\n+  contain a ``boardrev-id`` property. Bits 0-3 represent the board minor\n+  version, bits 4-7 represent the board major version; the remaining bits are\n+  reserved.\n+\n+- **board-subtype** ``<u32>``: Each sub-node under the\n+  ``board-subtype-peripheral-subtype``, ``board-subtype-storage-type`` and\n+  ``board-subtype-memory-size`` nodes should contain a ``board-subtype``\n+  property.\n+\n+  - Under ``board-subtype-peripheral-subtype``: bits 0-7 represent the\n+    peripheral-based subtype; the remaining bits are ignored.\n+  - Under ``board-subtype-storage-type``: bits 12-14 represent the storage\n+    type; the remaining bits are ignored.\n+  - Under ``board-subtype-memory-size``: bits 8-11 represent the memory size;\n+    the remaining bits are ignored.\n+\n+- **oem-id** ``<u32>``: Each sub-node under the ``oem`` node must contain an\n+  ``oem-id`` property. The ``oem-id`` represents the OEM and is added by the\n+  OEM for selection of their board-specific DT.\n+\n+- **softsku-id** ``<u32>``: Each sub-node under the ``softsku`` node must\n+  contain a ``softsku-id`` property. The ``softsku-id`` represents the software\n+  SKU and is added for soft SKU (license) based selection of DT.\n+\n+The ``msm-id`` and ``socver-id`` are compared with the chip identifier value\n+read from the SoC.\n+\n+The ``board-id``, ``boardrev-id``, ``board-subtype-peripheral-subtype`` and\n+``oem-id`` are compared with the hardware description values (Configuration\n+Data Table - CDT) flashed on the board's persistent memory.\n+\n+The ``board-subtype-storage-type`` is compared with the board's boot device\n+type detected by U-Boot.\n+\n+The ``board-subtype-memory-size`` is compared with the board's DDR size\n+detected by U-Boot.\n+\n+Refer: https://github.com/qualcomm-linux/qcom-dtb-metadata/blob/main/qcom-metadata.dts\n+\n+Guidelines for socver and boardrev\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+- For any platform, the configuration entry with the shortest compatible string\n+  (containing only the ``soc`` and ``board`` fields) must always reference the\n+  latest hardware (SoC / board) version.\n+\n+- When adding support for a new hardware version that requires a separate DTB,\n+  update the ``fdt`` property in the configuration with the shortest compatible\n+  string so that it points to the DTB of the latest hardware version. If the\n+  previously supported latest hardware version must continue to be used, add a\n+  new ``socver``/``boardrev`` entry in the metadata DTS for the earlier\n+  hardware. Additionally, add a new configuration entry in the FIT ITS that\n+  corresponds to the platform compatible with the newly added\n+  ``socver``/``boardrev``.\n+\n+- Consider the following example: The \"soc\" platform supports two chip versions\n+  — socv1.0 and socv1.1 — and both versions share the same DTB (soc-v1.dtb).\n+\n+  FIT ITS::\n+\n+      config-1 {\n+          compatible = \"qcom,soc\";\n+          fdt = \"fdt-soc-v1.dtb\";\n+      };\n+\n+  Now a new chip version socv2.0 is introduced, which requires a new DTB\n+  (soc-v2.dtb). The older chip versions must continue to be supported.\n+\n+  Updated FIT ITS::\n+\n+      config-1 {\n+          compatible = \"qcom,soc\";\n+          fdt = \"fdt-soc-v2.dtb\";\n+      };\n+\n+      config-2 {\n+          compatible = \"qcom,soc-socv1.0\";\n+          fdt = \"fdt-soc-v1.dtb\";\n+      };\n+\n+      config-3 {\n+          compatible = \"qcom,soc-socv1.1\";\n+          fdt = \"fdt-soc-v1.dtb\";\n+      };\n+\n+  Updated Metadata DTS::\n+\n+      socv1.0 {\n+          socver-id = <0x10>;\n+      };\n+\n+      socv1.1 {\n+          socver-id = <0x11>;\n+      };\n+\n+- If older hardware requires a separate DT and is not currently supported in\n+  the FIT, add the required ``socver``/``boardrev`` entries in alphabetical\n+  order.\n+\n+Image Building\n+--------------\n+\n+FIT Image Properties\n+^^^^^^^^^^^^^^^^^^^^\n+\n+- FIT is normally built with image data in the ``data`` property of each image\n+  node. It is also possible for this data to reside outside the FIT itself\n+  (external FIT). This allows the FDT part of the FIT to be quite small, so\n+  that it can be loaded and scanned without loading a large amount of data.\n+  Then when an image is needed it can be loaded from an external source.\n+\n+- External FITs use ``data-offset`` or ``data-position`` instead of ``data``.\n+  The ``mkimage`` tool can convert a FIT to use external data using the ``-E``\n+  argument.\n+\n+- The ``mkimage`` tool provides a ``-B`` argument to align each image to a\n+  specific block size. Use ``-B 8`` to enforce 8-byte alignment.\n+\n+- The output FIT image must be named ``qclinux_fit.img`` so that U-Boot can\n+  locate it in the FAT partition.\n+\n+Step-by-Step Workflow\n+^^^^^^^^^^^^^^^^^^^^^\n+\n+1. **Install required tools**::\n+\n+       sudo apt-get install device-tree-compiler u-boot-tools mtools\n+\n+2. **Clone the qcom-dtb-metadata project**::\n+\n+       git clone https://github.com/qualcomm-linux/qcom-dtb-metadata.git\n+       mkdir fit_image\n+       cp -rap qcom-dtb-metadata/qcom-fitimage.its \\\n+               qcom-dtb-metadata/qcom-next-fitimage.its \\\n+               qcom-dtb-metadata/qcom-metadata.dts \\\n+               fit_image/\n+\n+3. **Copy compiled DTB/DTBO files from the kernel tree**\n+\n+   For steps on cloning and building the Qualcomm Linux Kernel Tree, refer to\n+   https://github.com/qualcomm-linux/kmake-image/blob/main/README.md ::\n+\n+       mkdir -p fit_image/arch/arm64/boot/dts/qcom/\n+       # Copy the compiled dtb/dtbo files from the kernel's kobj directory\n+       cp -rap <u-boot build dir>/dts/upstream/src/arm64/qcom/*.dtb* \\\n+               fit_image/arch/arm64/boot/dts/qcom/\n+\n+4. **Compile the metadata DTS**::\n+\n+       cd fit_image\n+       dtc -I dts -O dtb -o qcom-metadata.dtb qcom-metadata.dts\n+\n+5. **Generate the FIT image**\n+\n+   Use ``-E`` to place binary data outside the FIT structure and ``-B 8`` for\n+   8-byte alignment::\n+\n+       mkdir out\n+\n+       # For kernel main branch\n+       mkimage -f qcom-fitimage.its out/qclinux_fit.img -E -B 8\n+\n+       # For kernel qcom-next branch\n+       mkimage -f qcom-next-fitimage.its out/qclinux_fit.img -E -B 8\n+\n+   The ``-E`` flag places binary data outside the FIT structure. However,\n+   since ``/incbin/`` is used in the ``.its`` file, all binaries are appended\n+   into the same image. The FIT structure contains the offset and size for each\n+   appended binary.\n+\n+6. **Pack the FIT image into a FAT partition image using mkimage**\n+\n+   The ``mkimage`` tool supports creating FAT filesystem images directly via\n+   the ``fatfs`` image type.\n+\n+       mkimage -T fatfs -d out/ fitimage.bin \\\n+           --fat-extra-space 512 \\\n+           --fat-volume-id \"MYBOOT\" \\\n+           --fat-mkfs-opts \"-S 512 -a\"\n+\n+   Available parameters:\n+\n+   - ``--fat-extra-space <KB>`` — extra padding in KB (default: 512 KB)\n+   - ``--fat-type <12|16|32|0>`` — force FAT type (0 = auto-detect)\n+   - ``--fat-volume-id <label>`` — volume label (default: ``BOOT``)\n+   - ``--fat-mkfs-opts <opts>`` — extra ``mkfs.vfat`` options (default: ``-S 512``)\n+\n+   .. note::\n+\n+      This requires ``mkfs.vfat`` (from ``dosfstools``) and ``mcopy``\n+      (from ``mtools``) to be installed on the build host.\n+\n+   The resulting ``fitimage.bin`` is a FAT partition image containing\n+   ``qclinux_fit.img`` and is ready to be flashed to the ``dtb_a``\n+   partition.\n+\n+7. **Flash the image**::\n+\n+       fastboot flash dtb_a fitimage.bin\n+\n+Boot Flow\n+---------\n+\n+U-Boot reads ``qclinux_fit.img`` from the FAT partition image flashed to the\n+``dtb_a`` partition. It uses the metadata binary and compatible strings in the\n+FIT to select the correct DTB for the running hardware. The FIT image contains\n+a configuration table FDT, metadata FDT, and DTB/DTBO binaries. The\n+configuration table FDT contains the offset and size of each DTB/DTBO within\n+the same buffer. U-Boot parses the metadata, matches the compatible strings\n+against the hardware identifiers read from the SoC and CDT, and passes the\n+selected DTB to the OS at boot time.\n+\n+Inspecting the Generated Image\n+-------------------------------\n+\n+To verify the contents of the generated FIT image::\n+\n+    # Extract individual DTBs from the image\n+    git clone https://github.com/PabloCastellano/extract-dtb.git\n+    # Creates a \"dtb/\" folder containing each of the dtb/dtbo files\n+    ./extract-dtb/extract_dtb/extract_dtb.py fitimage.bin\n+\n+    # Verify the ITS/FIT structure (configuration table FDT)\n+    fdtdump dtb/01_dtbdump_*.dtb\n+\n+    # Verify the metadata DTB contents\n+    fdtdump dtb/02_dtbdump_Image_with_compressed_metadata_blob.dtb\ndiff --git a/doc/mkimage.1 b/doc/mkimage.1\nindex 9a2d07cee75..ed6bd9f32d9 100644\n--- a/doc/mkimage.1\n+++ b/doc/mkimage.1\n@@ -54,6 +54,14 @@ The new\n (Flattened Image Tree) format allows for more flexibility in handling images of\n various types and also enhances integrity protection of images with stronger\n checksums. It also supports verified boot.\n+.P\n+The\n+.I fatfs\n+image type creates a FAT filesystem image from a directory of files. The\n+directory is specified with\n+.BR \\-d .\n+The resulting image is a raw FAT partition image suitable for flashing directly\n+to a storage device partition.\n .\n .SH OPTIONS\n .\n@@ -227,6 +235,11 @@ then multiple images may be specified, separated by colons:\n .IP\n .IR image-data-file [\\fB:\\fP image-data-file .\\|.\\|.]\n .RE\n+.IP\n+For the\n+.B fatfs\n+image type, this argument specifies the input directory whose contents will be\n+copied into the FAT filesystem image.\n .\n .TP\n .B \\-x\n@@ -496,6 +509,59 @@ using\n But if the original input to mkimage is a binary file (already compiled), then\n the timestamp is assumed to have been set previously.\n .\n+.SS Options for creating FAT filesystem images\n+.\n+These options are only used when\n+.B \\-T fatfs\n+is specified. The input directory is provided via\n+.BR \\-d .\n+The host tools\n+.B mkfs.vfat\n+(from\n+.IR dosfstools )\n+and\n+.B mcopy\n+(from\n+.IR mtools )\n+must be installed on the build host.\n+.\n+.TP\n+.BI \\-\\-fat\\-extra\\-space \" size-kb\"\n+Add\n+.I size-kb\n+kilobytes of extra padding space to the FAT image beyond the size of the input\n+data. This reserves room for future additions. The default is\n+.BR 512 .\n+.\n+.TP\n+.BI \\-\\-fat\\-type \" type\"\n+Force the FAT filesystem type to\n+.IR type ,\n+which must be one of\n+.BR 12 ,\n+.BR 16 ,\n+.BR 32 ,\n+or\n+.B 0\n+(auto-detect based on image size). The default is\n+.B 0\n+(auto-detect). FAT32 is automatically selected for images larger than 512 MB.\n+.\n+.TP\n+.BI \\-\\-fat\\-volume\\-id \" label\"\n+Set the FAT volume label to\n+.IR label .\n+The default is\n+.BR BOOT .\n+.\n+.TP\n+.BI \\-\\-fat\\-mkfs\\-opts \" options\"\n+Pass additional options to\n+.BR mkfs.vfat (8)\n+when formatting the FAT image. The default is\n+.BR \"\\-S 512\"\n+(512-byte sector size).\n+.\n .SH CONFIGURATION\n This section documents the formats of the primary and secondary configuration\n options for each image type which supports them.\n@@ -544,6 +610,21 @@ and valid\n are decimal numbers. See section 11.4.4.1 of the SAMA5D3 Series Data Sheet for\n valid values for each parameter.\n .\n+.SS fatfs\n+The\n+.B fatfs\n+image type creates a FAT filesystem image from a directory of files. The\n+.B \\-d\n+option specifies the input directory; all files and subdirectories within it\n+are copied into the FAT image using\n+.BR mcopy .\n+The image size is calculated automatically based on the total size of the input\n+data plus the extra padding specified by\n+.BR \\-\\-fat\\-extra\\-space .\n+The FAT filesystem is formatted using\n+.BR mkfs.vfat .\n+No primary or secondary configuration is used.\n+.\n .SS imximage\n The primary configuration is a file containing configuration commands, as\n documented in doc/\\:imx/\\:mkimage/\\:imximage.txt of the U-Boot source.\n@@ -903,10 +984,32 @@ of data storage.\n \\fBmkimage -F external_data-offset.itb\n .EE\n .RE\n+.P\n+Create a FAT filesystem image from a directory, with default settings:\n+.RS\n+.P\n+.EX\n+\\fBmkimage \\-T fatfs \\-d out/ fitimage.bin\n+.EE\n+.RE\n+.P\n+Create a FAT filesystem image with custom volume label, extra space, and\n+mkfs.vfat options:\n+.RS\n+.P\n+.EX\n+\\fBmkimage \\-T fatfs \\-d out/ fitimage.bin \\\\\n+\t\\-\\-fat\\-extra\\-space 512 \\\\\n+\t\\-\\-fat\\-volume\\-id \"MYBOOT\" \\\\\n+\t\\-\\-fat\\-mkfs\\-opts \"\\-S 512 \\-a\"\n+.EE\n+.RE\n .\n .SH SEE ALSO\n .BR dtc (1),\n .BR dumpimage (1),\n+.BR mkfs.vfat (8),\n+.BR mcopy (1),\n .BR openssl (1),\n the\\~\n .UR https://\\:u-boot\\:.readthedocs\\:.io/\\:en/\\:latest/\\:index.html\n",
    "prefixes": [
        "v3",
        "6/7"
    ]
}