get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2206448,
    "url": "http://patchwork.ozlabs.org/api/patches/2206448/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260306181304.2426352-7-sjg@chromium.org/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/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": "<20260306181304.2426352-7-sjg@chromium.org>",
    "list_archive_url": null,
    "date": "2026-03-06T18:12:34",
    "name": "[v2,06/23] binman: test: Move FDT/fdtmap test files to test/fdt/",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "1285d82f27756111f43a4e0d7895045e0101398e",
    "submitter": {
        "id": 6170,
        "url": "http://patchwork.ozlabs.org/api/people/6170/?format=api",
        "name": "Simon Glass",
        "email": "sjg@chromium.org"
    },
    "delegate": {
        "id": 3184,
        "url": "http://patchwork.ozlabs.org/api/users/3184/?format=api",
        "username": "sjg",
        "first_name": "Simon",
        "last_name": "Glass",
        "email": "sjg@chromium.org"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260306181304.2426352-7-sjg@chromium.org/mbox/",
    "series": [
        {
            "id": 494765,
            "url": "http://patchwork.ozlabs.org/api/series/494765/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=494765",
            "date": "2026-03-06T18:12:28",
            "name": "binman: test: Organise test files into subdirectories",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/494765/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2206448/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2206448/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 (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=NCp2WtzL;\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=none dis=none) header.from=chromium.org",
            "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=chromium.org header.i=@chromium.org\n header.b=\"NCp2WtzL\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=chromium.org",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=sjg@chromium.org"
        ],
        "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 4fSF1C1slLz1xyN\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 07 Mar 2026 05:14:39 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id DF5F183FD3;\n\tFri,  6 Mar 2026 19:13:47 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 71E9383FD3; Fri,  6 Mar 2026 19:13:47 +0100 (CET)",
            "from mail-qk1-x736.google.com (mail-qk1-x736.google.com\n [IPv6:2607:f8b0:4864:20::736])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 6FCE283FC1\n for <u-boot@lists.denx.de>; Fri,  6 Mar 2026 19:13:44 +0100 (CET)",
            "by mail-qk1-x736.google.com with SMTP id\n af79cd13be357-8cb38e86cf2so1009624785a.1\n for <u-boot@lists.denx.de>; Fri, 06 Mar 2026 10:13:44 -0800 (PST)",
            "from chromium.org ([73.34.74.121]) by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8cd6f5736c0sm155930885a.49.2026.03.06.10.13.40\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 06 Mar 2026 10:13:41 -0800 (PST)"
        ],
        "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,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=chromium.org; s=google; t=1772820823; x=1773425623; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=mtY8gpTsww2QuV3dJABHzXQKOcg1tUtd69pgcJSV5l4=;\n b=NCp2WtzLqt3t0iJ+dnHBZLmtQ4DZTB3BstCzaCnleFBWPfA5dlEvPFQgA8AVoqXGHq\n iz30AJEjfJSDY90Elq6/RcWIEDDdRX4Ykd31Z/nxT3kq+aZ6M4lyy5vwP73bbctr/g48\n UNYDBfTbTWHflnql26/jR+/7c2y5xhGb0K9To=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1772820823; x=1773425623;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=mtY8gpTsww2QuV3dJABHzXQKOcg1tUtd69pgcJSV5l4=;\n b=jJMU/ai4mF9bS2u/d5UHim5606GJwMikUJH0zx/AVA2pn3WWXjjK9eCy7QzfY1Rdvy\n ErvlefdnQCDxPZxZTFaknNtu76fpOU4Ogn9cW4+nYzt18So3U6c0kvbDXC8lH4LAU1SW\n 8kJqcVJfxlQyPPMz160mZ8vWT27bESnbNknMkFmXwftqBF/3U1BJf+B5BDWmOgCpMArQ\n Rxn8lszOQd3LkUaMimNfjiIUxt9y0M+U3MfkSTgTq3xsCW/PICmMYDLQVs6L/doqURgq\n VSqkt2M8XPM+EYhVe94VhNkw6OyqzjaSdgg3EEvLKHFeOejD6cnoAy8YHrVMSJQIHyP6\n Oc6A==",
        "X-Gm-Message-State": "AOJu0YxO65rQkXzx+URFf0EKmiSV+olO/qClwwfEFSTO/dk3F/xQo2+H\n kKIARqdLap07saZMOfITDxBpqsU1+ntSz244y1dEXTuci31A2xOaa1EO5YXMSZryMZ7XC0G6b6Z\n RhHU=",
        "X-Gm-Gg": "ATEYQzzQYCvQKu4uqznRzErqqhxHzn3RAMlHqyYpd2MoBeHHQCLwl+zEmfQtY9hi9pV\n MwuJ0QatdCCUWAfj5hrE3qLH16Lqck2sojBZfMwZ3O5GePPfkP/t6n3LOCztB8WWf64XrEJQsT1\n 8U88pWfYTR9jc2vNs7SRJ9shqmO6bWaG0H9DyZnzZOSuEtTXBH472Egg40vIlAqkcA0hUMILnBO\n Xh3zUShww2VoDXggRsjr1rMREpIvMxVPsLb/nLiV7y1Dc/Ix35d3BJMbS6MbzRVZ6fih+5A+/F7\n n2j4LBByWSUml7rTl4jkZfq9mtJpqHtyLGpIuzmXoYeKcVzh6SdPgsiDqKQBWNpnczIjxkKh+Mk\n muJMsnrWvvyuXKsDovWXIaxdtOWt3L/tNJX/EzFhm0b1WdebdRDLWumqqFxT8iti0Ao7qfdse72\n dMsL4kWlLW64Jxx0rhOQ==",
        "X-Received": "by 2002:a05:620a:3911:b0:8ca:305b:748e with SMTP id\n af79cd13be357-8cd6d47bf70mr342536585a.57.1772820822501;\n Fri, 06 Mar 2026 10:13:42 -0800 (PST)",
        "From": "Simon Glass <sjg@chromium.org>",
        "To": "u-boot@lists.denx.de",
        "Cc": "Tom Rini <trini@konsulko.com>, Quentin Schulz <quentin.schulz@cherry.de>,\n Simon Glass <simon.glass@canonical.com>,\n Alper Nebi Yasak <alpernebiyasak@gmail.com>, Bryan Brattlof <bb@ti.com>,\n Moteen Shah <m-shah@ti.com>, Neha Malcom Francis <n-francis@ti.com>,\n Peng Fan <peng.fan@nxp.com>,\n Philippe Reynes <philippe.reynes@softathome.com>,\n Simon Glass <sjg@chromium.org>,\n Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>,\n Yannic Moog <y.moog@phytec.de>",
        "Subject": "[PATCH v2 06/23] binman: test: Move FDT/fdtmap test files to\n test/fdt/",
        "Date": "Fri,  6 Mar 2026 11:12:34 -0700",
        "Message-ID": "<20260306181304.2426352-7-sjg@chromium.org>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260306181304.2426352-1-sjg@chromium.org>",
        "References": "<20260306181304.2426352-1-sjg@chromium.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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: Simon Glass <simon.glass@canonical.com>\n\nMove about 30 test files for FDT update, fdtmap, DTB compression,\nalternates, and bootph into an fdt/ subdirectory. Drop the numeric\nprefixes and the redundant fdt_ filename prefix, and update all\nreferences.\n\nRemove the unused no_alt_format.dts which has no references in any\ntest.\n\nSigned-off-by: Simon Glass <simon.glass@canonical.com>\nReviewed-by: Quentin Schulz <quentin.schulz@cherry.de>\n---\n\nChanges in v2:\n- Remove unused no_alt_format.dts\n- Move ftest.py comment update from the doc patch\n\n tools/binman/ftest.py                         | 104 +++++++++---------\n tools/binman/test/214_no_alt_format.dts       |  13 ---\n .../alternates_fdt.dts}                       |   0\n .../alternates_fdtgrep.dts}                   |   0\n .../alternates_inval.dts}                     |   0\n .../alternates_spl.dts}                       |   0\n .../alternates_vpl.dts}                       |   0\n .../bootph_prop.dts}                          |   0\n .../compress_dtb.dts}                         |   0\n .../compress_dtb_invalid.dts}                 |   0\n .../compress_dtb_prepend_invalid.dts}         |   0\n .../compress_dtb_prepend_length.dts}          |   0\n .../compress_dtb_zstd.dts}                    |   0\n .../decode_image.dts}                         |   0\n .../decode_image_nohdr.dts}                   |   0\n .../test/{115_fdtmap.dts => fdt/fdtmap.dts}   |   0\n .../fdtmap_alt_format.dts}                    |   0\n .../fdtmap_hdr.dts}                           |   0\n .../fdtmap_hdr_endbad.dts}                    |   0\n .../fdtmap_hdr_middle.dts}                    |   0\n .../fdtmap_hdr_missing.dts}                   |   0\n .../fdtmap_hdr_nosize.dts}                    |   0\n .../fdtmap_hdr_pos.dts}                       |   0\n .../fdtmap_hdr_start.dts}                     |   0\n .../fdtmap_hdr_startbad.dts}                  |   0\n .../hdr_no_location.dts}                      |   0\n .../test/{194_fdt_incl.dts => fdt/incl.dts}   |   0\n .../incl_tpl.dts}                             |   0\n .../incl_vpl.dts}                             |   0\n .../list_fdtmap.dts}                          |   0\n .../{060_fdt_update.dts => fdt/update.dts}    |   0\n .../update_all.dts}                           |   0\n .../update_all_repack.dts}                    |   0\n .../update_bad.dts}                           |   0\n 34 files changed, 52 insertions(+), 65 deletions(-)\n delete mode 100644 tools/binman/test/214_no_alt_format.dts\n rename tools/binman/test/{328_alternates_fdt.dts => fdt/alternates_fdt.dts} (100%)\n rename tools/binman/test/{329_alternates_fdtgrep.dts => fdt/alternates_fdtgrep.dts} (100%)\n rename tools/binman/test/{332_alternates_inval.dts => fdt/alternates_inval.dts} (100%)\n rename tools/binman/test/{331_alternates_spl.dts => fdt/alternates_spl.dts} (100%)\n rename tools/binman/test/{330_alternates_vpl.dts => fdt/alternates_vpl.dts} (100%)\n rename tools/binman/test/{347_bootph_prop.dts => fdt/bootph_prop.dts} (100%)\n rename tools/binman/test/{124_compress_dtb.dts => fdt/compress_dtb.dts} (100%)\n rename tools/binman/test/{250_compress_dtb_invalid.dts => fdt/compress_dtb_invalid.dts} (100%)\n rename tools/binman/test/{248_compress_dtb_prepend_invalid.dts => fdt/compress_dtb_prepend_invalid.dts} (100%)\n rename tools/binman/test/{249_compress_dtb_prepend_length.dts => fdt/compress_dtb_prepend_length.dts} (100%)\n rename tools/binman/test/{251_compress_dtb_zstd.dts => fdt/compress_dtb_zstd.dts} (100%)\n rename tools/binman/test/{128_decode_image.dts => fdt/decode_image.dts} (100%)\n rename tools/binman/test/{129_decode_image_nohdr.dts => fdt/decode_image_nohdr.dts} (100%)\n rename tools/binman/test/{115_fdtmap.dts => fdt/fdtmap.dts} (100%)\n rename tools/binman/test/{213_fdtmap_alt_format.dts => fdt/fdtmap_alt_format.dts} (100%)\n rename tools/binman/test/{116_fdtmap_hdr.dts => fdt/fdtmap_hdr.dts} (100%)\n rename tools/binman/test/{137_fdtmap_hdr_endbad.dts => fdt/fdtmap_hdr_endbad.dts} (100%)\n rename tools/binman/test/{135_fdtmap_hdr_middle.dts => fdt/fdtmap_hdr_middle.dts} (100%)\n rename tools/binman/test/{119_fdtmap_hdr_missing.dts => fdt/fdtmap_hdr_missing.dts} (100%)\n rename tools/binman/test/{138_fdtmap_hdr_nosize.dts => fdt/fdtmap_hdr_nosize.dts} (100%)\n rename tools/binman/test/{118_fdtmap_hdr_pos.dts => fdt/fdtmap_hdr_pos.dts} (100%)\n rename tools/binman/test/{117_fdtmap_hdr_start.dts => fdt/fdtmap_hdr_start.dts} (100%)\n rename tools/binman/test/{136_fdtmap_hdr_startbad.dts => fdt/fdtmap_hdr_startbad.dts} (100%)\n rename tools/binman/test/{120_hdr_no_location.dts => fdt/hdr_no_location.dts} (100%)\n rename tools/binman/test/{194_fdt_incl.dts => fdt/incl.dts} (100%)\n rename tools/binman/test/{195_fdt_incl_tpl.dts => fdt/incl_tpl.dts} (100%)\n rename tools/binman/test/{257_fdt_incl_vpl.dts => fdt/incl_vpl.dts} (100%)\n rename tools/binman/test/{130_list_fdtmap.dts => fdt/list_fdtmap.dts} (100%)\n rename tools/binman/test/{060_fdt_update.dts => fdt/update.dts} (100%)\n rename tools/binman/test/{082_fdt_update_all.dts => fdt/update_all.dts} (100%)\n rename tools/binman/test/{134_fdt_update_all_repack.dts => fdt/update_all_repack.dts} (100%)\n rename tools/binman/test/{061_fdt_update_bad.dts => fdt/update_bad.dts} (100%)",
    "diff": "diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py\nindex 893cf1c7c17..8e37c0bd19e 100644\n--- a/tools/binman/ftest.py\n+++ b/tools/binman/ftest.py\n@@ -1677,7 +1677,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testUpdateFdt(self):\n         \"\"\"Test that we can update the device tree with offset/size info\"\"\"\n-        _, _, _, out_dtb_fname = self._DoReadFileDtb('060_fdt_update.dts',\n+        _, _, _, out_dtb_fname = self._DoReadFileDtb('fdt/update.dts',\n                                                      update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n@@ -1707,7 +1707,7 @@ class TestFunctional(unittest.TestCase):\n     def testUpdateFdtBad(self):\n         \"\"\"Test that we detect when ProcessFdt never completes\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('061_fdt_update_bad.dts', update_dtb=True)\n+            self._DoReadFileDtb('fdt/update_bad.dts', update_dtb=True)\n         self.assertIn('Could not complete processing of Fdt: remaining '\n                       '[<binman.etype._testing.Entry__testing',\n                         str(e.exception))\n@@ -2082,7 +2082,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that all device trees are updated with offset/size info\"\"\"\n         self._SetupSplElf()\n         self._SetupTplElf()\n-        data = self._DoReadFileRealDtb('082_fdt_update_all.dts')\n+        data = self._DoReadFileRealDtb('fdt/update_all.dts')\n \n         base_expected = {\n             'offset': 0,\n@@ -2125,7 +2125,7 @@ class TestFunctional(unittest.TestCase):\n     def testUpdateFdtOutput(self):\n         \"\"\"Test that output DTB files are updated\"\"\"\n         try:\n-            data, dtb_data, _, _ = self._DoReadFileDtb('082_fdt_update_all.dts',\n+            data, dtb_data, _, _ = self._DoReadFileDtb('fdt/update_all.dts',\n                     use_real_dtb=True, update_dtb=True, reset_dtbs=False)\n \n             # Unfortunately, compiling a source file always results in a file\n@@ -2607,7 +2607,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFdtmap(self):\n         \"\"\"Test an FDT map can be inserted in the image\"\"\"\n-        data = self.data = self._DoReadFileRealDtb('115_fdtmap.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/fdtmap.dts')\n         fdtmap_data = data[len(U_BOOT_DATA):]\n         magic = fdtmap_data[:8]\n         self.assertEqual(b'_FDTMAP_', magic)\n@@ -2631,7 +2631,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFdtmapNoMatch(self):\n         \"\"\"Check handling of an FDT map when the section cannot be found\"\"\"\n-        self.data = self._DoReadFileRealDtb('115_fdtmap.dts')\n+        self.data = self._DoReadFileRealDtb('fdt/fdtmap.dts')\n \n         # Mangle the section name, which should cause a mismatch between the\n         # correct FDT path and the one expected by the section\n@@ -2646,7 +2646,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFdtmapHeader(self):\n         \"\"\"Test an FDT map and image header can be inserted in the image\"\"\"\n-        data = self.data = self._DoReadFileRealDtb('116_fdtmap_hdr.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/fdtmap_hdr.dts')\n         fdtmap_pos = len(U_BOOT_DATA)\n         fdtmap_data = data[fdtmap_pos:]\n         fdt_data = fdtmap_data[16:]\n@@ -2659,7 +2659,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFdtmapHeaderStart(self):\n         \"\"\"Test an image header can be inserted at the image start\"\"\"\n-        data = self.data = self._DoReadFileRealDtb('117_fdtmap_hdr_start.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/fdtmap_hdr_start.dts')\n         fdtmap_pos = 0x100 + len(U_BOOT_DATA)\n         hdr_data = data[:8]\n         self.assertEqual(b'BinM', hdr_data[:4])\n@@ -2668,7 +2668,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFdtmapHeaderPos(self):\n         \"\"\"Test an image header can be inserted at a chosen position\"\"\"\n-        data = self.data = self._DoReadFileRealDtb('118_fdtmap_hdr_pos.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/fdtmap_hdr_pos.dts')\n         fdtmap_pos = 0x100 + len(U_BOOT_DATA)\n         hdr_data = data[0x80:0x88]\n         self.assertEqual(b'BinM', hdr_data[:4])\n@@ -2678,14 +2678,14 @@ class TestFunctional(unittest.TestCase):\n     def testHeaderMissingFdtmap(self):\n         \"\"\"Test an image header requires an fdtmap\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self.data = self._DoReadFileRealDtb('119_fdtmap_hdr_missing.dts')\n+            self.data = self._DoReadFileRealDtb('fdt/fdtmap_hdr_missing.dts')\n         self.assertIn(\"'image_header' section must have an 'fdtmap' sibling\",\n                       str(e.exception))\n \n     def testHeaderNoLocation(self):\n         \"\"\"Test an image header with a no specified location is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self.data = self._DoReadFileRealDtb('120_hdr_no_location.dts')\n+            self.data = self._DoReadFileRealDtb('fdt/hdr_no_location.dts')\n         self.assertIn(\"Invalid location 'None', expected 'start' or 'end'\",\n                       str(e.exception))\n \n@@ -2713,7 +2713,7 @@ class TestFunctional(unittest.TestCase):\n     def testCompressDtb(self):\n         \"\"\"Test that compress of device-tree files is supported\"\"\"\n         self._CheckLz4()\n-        data = self.data = self._DoReadFileRealDtb('124_compress_dtb.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/compress_dtb.dts')\n         self.assertEqual(U_BOOT_DATA, data[:len(U_BOOT_DATA)])\n         comp_data = data[len(U_BOOT_DATA):]\n         orig = self._decompress(comp_data)\n@@ -2837,7 +2837,7 @@ class TestFunctional(unittest.TestCase):\n     def testFindFdtmap(self):\n         \"\"\"Test locating an FDT map in an image\"\"\"\n         self._CheckLz4()\n-        data = self.data = self._DoReadFileRealDtb('128_decode_image.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/decode_image.dts')\n         image = control.images['image']\n         entries = image.GetEntries()\n         entry = entries['fdtmap']\n@@ -2851,7 +2851,7 @@ class TestFunctional(unittest.TestCase):\n     def testFindImageHeader(self):\n         \"\"\"Test locating a image header\"\"\"\n         self._CheckLz4()\n-        data = self.data = self._DoReadFileRealDtb('128_decode_image.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/decode_image.dts')\n         image = control.images['image']\n         entries = image.GetEntries()\n         entry = entries['fdtmap']\n@@ -2860,7 +2860,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFindImageHeaderStart(self):\n         \"\"\"Test locating a image header located at the start of an image\"\"\"\n-        data = self.data = self._DoReadFileRealDtb('117_fdtmap_hdr_start.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/fdtmap_hdr_start.dts')\n         image = control.images['image']\n         entries = image.GetEntries()\n         entry = entries['fdtmap']\n@@ -2875,7 +2875,7 @@ class TestFunctional(unittest.TestCase):\n     def testReadImage(self):\n         \"\"\"Test reading an image and accessing its FDT map\"\"\"\n         self._CheckLz4()\n-        data = self.data = self._DoReadFileRealDtb('128_decode_image.dts')\n+        data = self.data = self._DoReadFileRealDtb('fdt/decode_image.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         orig_image = control.images['image']\n         image = Image.FromFile(image_fname)\n@@ -2891,7 +2891,7 @@ class TestFunctional(unittest.TestCase):\n     def testReadImageNoHeader(self):\n         \"\"\"Test accessing an image's FDT map without an image header\"\"\"\n         self._CheckLz4()\n-        data = self._DoReadFileRealDtb('129_decode_image_nohdr.dts')\n+        data = self._DoReadFileRealDtb('fdt/decode_image_nohdr.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         image = Image.FromFile(image_fname)\n         self.assertTrue(isinstance(image, Image))\n@@ -2908,7 +2908,7 @@ class TestFunctional(unittest.TestCase):\n     def testListCmd(self):\n         \"\"\"Test listing the files in an image using an Fdtmap\"\"\"\n         self._CheckLz4()\n-        data = self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        data = self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n \n         # lz4 compression size differs depending on the version\n         image = control.images['image']\n@@ -2963,7 +2963,7 @@ class TestFunctional(unittest.TestCase):\n             expected: Expected list of filenames to be returned, in order\n         \"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         image = Image.FromFile(image_fname)\n         lines = image.GetListEntries(paths)[1]\n@@ -3009,7 +3009,7 @@ class TestFunctional(unittest.TestCase):\n             data from entry\n         \"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         return control.ReadEntry(image_fname, entry_name, decomp)\n \n@@ -3079,7 +3079,7 @@ class TestFunctional(unittest.TestCase):\n     def testExtractCmd(self):\n         \"\"\"Test extracting a file fron an image on the command line\"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         fname = os.path.join(self._indir, 'output.extact')\n         tmpdir = None\n         try:\n@@ -3096,7 +3096,7 @@ class TestFunctional(unittest.TestCase):\n     def testExtractOneEntry(self):\n         \"\"\"Test extracting a single entry fron an image \"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         fname = os.path.join(self._indir, 'output.extact')\n         control.ExtractEntries(image_fname, fname, None, ['u-boot'])\n@@ -3141,7 +3141,7 @@ class TestFunctional(unittest.TestCase):\n             path = os.path.join(outdir, name)\n             os.rmdir(path)\n \n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         outdir = os.path.join(self._indir, 'extract')\n         einfos = control.ExtractEntries(image_fname, None, outdir, [], decomp)\n@@ -3202,7 +3202,7 @@ class TestFunctional(unittest.TestCase):\n     def testExtractSelectedEntries(self):\n         \"\"\"Test extracting some entries\"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         outdir = os.path.join(self._indir, 'extract')\n         einfos = control.ExtractEntries(image_fname, None, outdir,\n@@ -3217,7 +3217,7 @@ class TestFunctional(unittest.TestCase):\n     def testExtractNoEntryPaths(self):\n         \"\"\"Test extracting some entries\"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         with self.assertRaises(ValueError) as e:\n             control.ExtractEntries(image_fname, 'fname', None, [])\n@@ -3227,7 +3227,7 @@ class TestFunctional(unittest.TestCase):\n     def testExtractTooManyEntryPaths(self):\n         \"\"\"Test extracting some entries\"\"\"\n         self._CheckLz4()\n-        self._DoReadFileRealDtb('130_list_fdtmap.dts')\n+        self._DoReadFileRealDtb('fdt/list_fdtmap.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         with self.assertRaises(ValueError) as e:\n             control.ExtractEntries(image_fname, 'fname', None, ['a', 'b'])\n@@ -3414,7 +3414,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that all device trees are updated with offset/size info\"\"\"\n         self._SetupSplElf()\n         self._SetupTplElf()\n-        data = self._DoReadFileRealDtb('134_fdt_update_all_repack.dts')\n+        data = self._DoReadFileRealDtb('fdt/update_all_repack.dts')\n         SECTION_SIZE = 0x300\n         DTB_SIZE = 602\n         FDTMAP_SIZE = 608\n@@ -3476,27 +3476,27 @@ class TestFunctional(unittest.TestCase):\n     def testFdtmapHeaderMiddle(self):\n         \"\"\"Test an FDT map in the middle of an image when it should be at end\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileRealDtb('135_fdtmap_hdr_middle.dts')\n+            self._DoReadFileRealDtb('fdt/fdtmap_hdr_middle.dts')\n         self.assertIn(\"Invalid sibling order 'middle' for image-header: Must be at 'end' to match location\",\n                       str(e.exception))\n \n     def testFdtmapHeaderStartBad(self):\n         \"\"\"Test an FDT map in middle of an image when it should be at start\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileRealDtb('136_fdtmap_hdr_startbad.dts')\n+            self._DoReadFileRealDtb('fdt/fdtmap_hdr_startbad.dts')\n         self.assertIn(\"Invalid sibling order 'end' for image-header: Must be at 'start' to match location\",\n                       str(e.exception))\n \n     def testFdtmapHeaderEndBad(self):\n         \"\"\"Test an FDT map at the start of an image when it should be at end\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileRealDtb('137_fdtmap_hdr_endbad.dts')\n+            self._DoReadFileRealDtb('fdt/fdtmap_hdr_endbad.dts')\n         self.assertIn(\"Invalid sibling order 'start' for image-header: Must be at 'end' to match location\",\n                       str(e.exception))\n \n     def testFdtmapHeaderNoSize(self):\n         \"\"\"Test an image header at the end of an image with undefined size\"\"\"\n-        self._DoReadFileRealDtb('138_fdtmap_hdr_nosize.dts')\n+        self._DoReadFileRealDtb('fdt/fdtmap_hdr_nosize.dts')\n \n     def testReplaceResize(self):\n         \"\"\"Test replacing a single file in an entry with a larger file\"\"\"\n@@ -4867,7 +4867,7 @@ class TestFunctional(unittest.TestCase):\n             'spl-bss-pad': 'y',\n             'tpl-dtb': '',\n         }\n-        self._DoReadFileDtb('194_fdt_incl.dts', use_expanded=True,\n+        self._DoReadFileDtb('fdt/incl.dts', use_expanded=True,\n                             entry_args=entry_args)\n         image = control.images['image']\n         entries = image.GetEntries()\n@@ -4907,7 +4907,7 @@ class TestFunctional(unittest.TestCase):\n             'tpl-bss-pad': 'y',\n             'tpl-dtb': 'y',\n         }\n-        self._DoReadFileDtb('195_fdt_incl_tpl.dts', use_expanded=True,\n+        self._DoReadFileDtb('fdt/incl_tpl.dts', use_expanded=True,\n                             entry_args=entry_args)\n         image = control.images['image']\n         entries = image.GetEntries()\n@@ -4934,7 +4934,7 @@ class TestFunctional(unittest.TestCase):\n             'spl-bss-pad': 'n',\n             'tpl-dtb': '',\n         }\n-        self._DoReadFileDtb('194_fdt_incl.dts', use_expanded=True,\n+        self._DoReadFileDtb('fdt/incl.dts', use_expanded=True,\n                             entry_args=entry_args)\n         image = control.images['image']\n         entries = image.GetEntries()\n@@ -4956,7 +4956,7 @@ class TestFunctional(unittest.TestCase):\n             'tpl-bss-pad': '',\n             'tpl-dtb': 'y',\n         }\n-        self._DoReadFileDtb('195_fdt_incl_tpl.dts', use_expanded=True,\n+        self._DoReadFileDtb('fdt/incl_tpl.dts', use_expanded=True,\n                             entry_args=entry_args)\n         image = control.images['image']\n         entries = image.GetEntries()\n@@ -4986,7 +4986,7 @@ class TestFunctional(unittest.TestCase):\n         # Build the image. It includes two separate devicetree binaries, each\n         # with their own contents, but all contain the binman definition.\n         data = self._DoReadFileDtb(\n-            '194_fdt_incl.dts', use_real_dtb=True, use_expanded=True,\n+            'fdt/incl.dts', use_real_dtb=True, use_expanded=True,\n             update_dtb=True, entry_args=entry_args)[0]\n         pad_len = 10\n \n@@ -5081,7 +5081,7 @@ class TestFunctional(unittest.TestCase):\n         begin_sym = 'dtb_embed_begin'\n         end_sym = 'dtb_embed_end'\n         retcode = self._DoTestFile(\n-            '060_fdt_update.dts', update_dtb=True,\n+            'fdt/update.dts', update_dtb=True,\n             update_fdt_in_elf=','.join([infile,outfile,begin_sym,end_sym]))\n         self.assertEqual(0, retcode)\n \n@@ -5121,7 +5121,7 @@ class TestFunctional(unittest.TestCase):\n     def testUpdateFdtInElfInvalid(self):\n         \"\"\"Test that invalid args are detected with --update-fdt-in-elf\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('060_fdt_update.dts', update_fdt_in_elf='fred')\n+            self._DoTestFile('fdt/update.dts', update_fdt_in_elf='fred')\n         self.assertIn(\"Invalid args ['fred'] to --update-fdt-in-elf\",\n                       str(e.exception))\n \n@@ -5135,7 +5135,7 @@ class TestFunctional(unittest.TestCase):\n         end_sym = 'wrong_end'\n         with self.assertRaises(ValueError) as e:\n             self._DoTestFile(\n-                '060_fdt_update.dts',\n+                'fdt/update.dts',\n                 update_fdt_in_elf=','.join([infile,outfile,begin_sym,end_sym]))\n         self.assertIn(\"Expected two symbols 'wrong_begin' and 'wrong_end': got 0:\",\n                       str(e.exception))\n@@ -5150,7 +5150,7 @@ class TestFunctional(unittest.TestCase):\n         end_sym = 'dtb_embed_end'\n         with self.assertRaises(ValueError) as e:\n             self._DoTestFile(\n-                '060_fdt_update.dts', update_dtb=True,\n+                'fdt/update.dts', update_dtb=True,\n                 update_fdt_in_elf=','.join([infile,outfile,begin_sym,end_sym]))\n         self.assertRegex(\n             str(e.exception),\n@@ -5178,7 +5178,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testAltFormat(self):\n         \"\"\"Test that alternative formats can be used to extract\"\"\"\n-        self._DoReadFileRealDtb('213_fdtmap_alt_format.dts')\n+        self._DoReadFileRealDtb('fdt/fdtmap_alt_format.dts')\n \n         try:\n             tmpdir, updated_fname = self._SetupImageInTmpdir()\n@@ -6188,13 +6188,13 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testCompressDtbPrependInvalid(self):\n         \"\"\"Test that invalid header is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('248_compress_dtb_prepend_invalid.dts')\n+            self._DoReadFileDtb('fdt/compress_dtb_prepend_invalid.dts')\n         self.assertIn(\"Node '/binman/u-boot-dtb': Invalid prepend in \"\n                       \"'u-boot-dtb': 'invalid'\", str(e.exception))\n \n     def testCompressDtbPrependLength(self):\n         \"\"\"Test that compress with length header works as expected\"\"\"\n-        data = self._DoReadFileRealDtb('249_compress_dtb_prepend_length.dts')\n+        data = self._DoReadFileRealDtb('fdt/compress_dtb_prepend_length.dts')\n         image = control.images['image']\n         entries = image.GetEntries()\n         self.assertIn('u-boot-dtb', entries)\n@@ -6227,7 +6227,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testInvalidCompress(self):\n         \"\"\"Test that invalid compress algorithm is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('250_compress_dtb_invalid.dts')\n+            self._DoTestFile('fdt/compress_dtb_invalid.dts')\n         self.assertIn(\"Unknown algorithm 'invalid'\", str(e.exception))\n \n     def testCompUtilCompressions(self):\n@@ -6261,7 +6261,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testCompressDtbZstd(self):\n         \"\"\"Test that zstd compress of device-tree files failed\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('251_compress_dtb_zstd.dts')\n+            self._DoTestFile('fdt/compress_dtb_zstd.dts')\n         self.assertIn(\"Node '/binman/u-boot-dtb': The zstd compression \"\n                       \"requires a length header\", str(e.exception))\n \n@@ -6354,7 +6354,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n             'vpl-bss-pad': 'y',\n             'vpl-dtb': 'y',\n         }\n-        self._DoReadFileDtb('257_fdt_incl_vpl.dts', use_expanded=True,\n+        self._DoReadFileDtb('fdt/incl_vpl.dts', use_expanded=True,\n                             entry_args=entry_args)\n         image = control.images['image']\n         entries = image.GetEntries()\n@@ -7724,7 +7724,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testAlternatesFdt(self):\n         \"\"\"Test handling of alternates-fdt etype\"\"\"\n         self._SetupTplElf()\n-        dtbs = self.CheckAlternates('328_alternates_fdt.dts', 'tpl',\n+        dtbs = self.CheckAlternates('fdt/alternates_fdt.dts', 'tpl',\n                                     U_BOOT_TPL_NODTB_DATA)\n         for dtb in dtbs.values():\n             # Check for the node with the tag\n@@ -7738,7 +7738,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testAlternatesFdtgrep(self):\n         \"\"\"Test handling of alternates-fdt etype using fdtgrep\"\"\"\n         self._SetupTplElf()\n-        dtbs = self.CheckAlternates('329_alternates_fdtgrep.dts', 'tpl',\n+        dtbs = self.CheckAlternates('fdt/alternates_fdtgrep.dts', 'tpl',\n                                     U_BOOT_TPL_NODTB_DATA)\n         for dtb in dtbs.values():\n             # Check for the node with the tag\n@@ -7753,20 +7753,20 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testAlternatesFdtgrepVpl(self):\n         \"\"\"Test handling of alternates-fdt etype using fdtgrep with vpl\"\"\"\n         self._SetupVplElf()\n-        dtbs = self.CheckAlternates('330_alternates_vpl.dts', 'vpl',\n+        dtbs = self.CheckAlternates('fdt/alternates_vpl.dts', 'vpl',\n                                     U_BOOT_VPL_NODTB_DATA)\n \n     def testAlternatesFdtgrepSpl(self):\n         \"\"\"Test handling of alternates-fdt etype using fdtgrep with spl\"\"\"\n         self._SetupSplElf()\n-        dtbs = self.CheckAlternates('331_alternates_spl.dts', 'spl',\n+        dtbs = self.CheckAlternates('fdt/alternates_spl.dts', 'spl',\n                                     U_BOOT_SPL_NODTB_DATA)\n \n     def testAlternatesFdtgrepInval(self):\n         \"\"\"Test alternates-fdt etype using fdtgrep with invalid phase\"\"\"\n         self._SetupSplElf()\n         with self.assertRaises(ValueError) as e:\n-            dtbs = self.CheckAlternates('332_alternates_inval.dts', 'spl',\n+            dtbs = self.CheckAlternates('fdt/alternates_inval.dts', 'spl',\n                                         U_BOOT_SPL_NODTB_DATA)\n         self.assertIn(\"Invalid U-Boot phase 'bad-phase': Use tpl/vpl/spl\",\n                       str(e.exception))\n@@ -8317,7 +8317,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testBootphPropagation(self):\n         \"\"\"Test that bootph-* properties are propagated correctly to supernodes\"\"\"\n         _, _, _, out_dtb_fname = self._DoReadFileDtb(\n-                '347_bootph_prop.dts', use_real_dtb=True, update_dtb=True)\n+                'fdt/bootph_prop.dts', use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n         root = dtb.GetRoot()\ndiff --git a/tools/binman/test/214_no_alt_format.dts b/tools/binman/test/214_no_alt_format.dts\ndeleted file mode 100644\nindex f00bcdd5764..00000000000\n--- a/tools/binman/test/214_no_alt_format.dts\n+++ /dev/null\n@@ -1,13 +0,0 @@\n-// SPDX-License-Identifier: GPL-2.0+\n-\n-/dts-v1/;\n-\n-/ {\n-\t#address-cells = <1>;\n-\t#size-cells = <1>;\n-\n-\tbinman {\n-\t\tu-boot {\n-\t\t};\n-\t};\n-};\ndiff --git a/tools/binman/test/328_alternates_fdt.dts b/tools/binman/test/fdt/alternates_fdt.dts\nsimilarity index 100%\nrename from tools/binman/test/328_alternates_fdt.dts\nrename to tools/binman/test/fdt/alternates_fdt.dts\ndiff --git a/tools/binman/test/329_alternates_fdtgrep.dts b/tools/binman/test/fdt/alternates_fdtgrep.dts\nsimilarity index 100%\nrename from tools/binman/test/329_alternates_fdtgrep.dts\nrename to tools/binman/test/fdt/alternates_fdtgrep.dts\ndiff --git a/tools/binman/test/332_alternates_inval.dts b/tools/binman/test/fdt/alternates_inval.dts\nsimilarity index 100%\nrename from tools/binman/test/332_alternates_inval.dts\nrename to tools/binman/test/fdt/alternates_inval.dts\ndiff --git a/tools/binman/test/331_alternates_spl.dts b/tools/binman/test/fdt/alternates_spl.dts\nsimilarity index 100%\nrename from tools/binman/test/331_alternates_spl.dts\nrename to tools/binman/test/fdt/alternates_spl.dts\ndiff --git a/tools/binman/test/330_alternates_vpl.dts b/tools/binman/test/fdt/alternates_vpl.dts\nsimilarity index 100%\nrename from tools/binman/test/330_alternates_vpl.dts\nrename to tools/binman/test/fdt/alternates_vpl.dts\ndiff --git a/tools/binman/test/347_bootph_prop.dts b/tools/binman/test/fdt/bootph_prop.dts\nsimilarity index 100%\nrename from tools/binman/test/347_bootph_prop.dts\nrename to tools/binman/test/fdt/bootph_prop.dts\ndiff --git a/tools/binman/test/124_compress_dtb.dts b/tools/binman/test/fdt/compress_dtb.dts\nsimilarity index 100%\nrename from tools/binman/test/124_compress_dtb.dts\nrename to tools/binman/test/fdt/compress_dtb.dts\ndiff --git a/tools/binman/test/250_compress_dtb_invalid.dts b/tools/binman/test/fdt/compress_dtb_invalid.dts\nsimilarity index 100%\nrename from tools/binman/test/250_compress_dtb_invalid.dts\nrename to tools/binman/test/fdt/compress_dtb_invalid.dts\ndiff --git a/tools/binman/test/248_compress_dtb_prepend_invalid.dts b/tools/binman/test/fdt/compress_dtb_prepend_invalid.dts\nsimilarity index 100%\nrename from tools/binman/test/248_compress_dtb_prepend_invalid.dts\nrename to tools/binman/test/fdt/compress_dtb_prepend_invalid.dts\ndiff --git a/tools/binman/test/249_compress_dtb_prepend_length.dts b/tools/binman/test/fdt/compress_dtb_prepend_length.dts\nsimilarity index 100%\nrename from tools/binman/test/249_compress_dtb_prepend_length.dts\nrename to tools/binman/test/fdt/compress_dtb_prepend_length.dts\ndiff --git a/tools/binman/test/251_compress_dtb_zstd.dts b/tools/binman/test/fdt/compress_dtb_zstd.dts\nsimilarity index 100%\nrename from tools/binman/test/251_compress_dtb_zstd.dts\nrename to tools/binman/test/fdt/compress_dtb_zstd.dts\ndiff --git a/tools/binman/test/128_decode_image.dts b/tools/binman/test/fdt/decode_image.dts\nsimilarity index 100%\nrename from tools/binman/test/128_decode_image.dts\nrename to tools/binman/test/fdt/decode_image.dts\ndiff --git a/tools/binman/test/129_decode_image_nohdr.dts b/tools/binman/test/fdt/decode_image_nohdr.dts\nsimilarity index 100%\nrename from tools/binman/test/129_decode_image_nohdr.dts\nrename to tools/binman/test/fdt/decode_image_nohdr.dts\ndiff --git a/tools/binman/test/115_fdtmap.dts b/tools/binman/test/fdt/fdtmap.dts\nsimilarity index 100%\nrename from tools/binman/test/115_fdtmap.dts\nrename to tools/binman/test/fdt/fdtmap.dts\ndiff --git a/tools/binman/test/213_fdtmap_alt_format.dts b/tools/binman/test/fdt/fdtmap_alt_format.dts\nsimilarity index 100%\nrename from tools/binman/test/213_fdtmap_alt_format.dts\nrename to tools/binman/test/fdt/fdtmap_alt_format.dts\ndiff --git a/tools/binman/test/116_fdtmap_hdr.dts b/tools/binman/test/fdt/fdtmap_hdr.dts\nsimilarity index 100%\nrename from tools/binman/test/116_fdtmap_hdr.dts\nrename to tools/binman/test/fdt/fdtmap_hdr.dts\ndiff --git a/tools/binman/test/137_fdtmap_hdr_endbad.dts b/tools/binman/test/fdt/fdtmap_hdr_endbad.dts\nsimilarity index 100%\nrename from tools/binman/test/137_fdtmap_hdr_endbad.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_endbad.dts\ndiff --git a/tools/binman/test/135_fdtmap_hdr_middle.dts b/tools/binman/test/fdt/fdtmap_hdr_middle.dts\nsimilarity index 100%\nrename from tools/binman/test/135_fdtmap_hdr_middle.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_middle.dts\ndiff --git a/tools/binman/test/119_fdtmap_hdr_missing.dts b/tools/binman/test/fdt/fdtmap_hdr_missing.dts\nsimilarity index 100%\nrename from tools/binman/test/119_fdtmap_hdr_missing.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_missing.dts\ndiff --git a/tools/binman/test/138_fdtmap_hdr_nosize.dts b/tools/binman/test/fdt/fdtmap_hdr_nosize.dts\nsimilarity index 100%\nrename from tools/binman/test/138_fdtmap_hdr_nosize.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_nosize.dts\ndiff --git a/tools/binman/test/118_fdtmap_hdr_pos.dts b/tools/binman/test/fdt/fdtmap_hdr_pos.dts\nsimilarity index 100%\nrename from tools/binman/test/118_fdtmap_hdr_pos.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_pos.dts\ndiff --git a/tools/binman/test/117_fdtmap_hdr_start.dts b/tools/binman/test/fdt/fdtmap_hdr_start.dts\nsimilarity index 100%\nrename from tools/binman/test/117_fdtmap_hdr_start.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_start.dts\ndiff --git a/tools/binman/test/136_fdtmap_hdr_startbad.dts b/tools/binman/test/fdt/fdtmap_hdr_startbad.dts\nsimilarity index 100%\nrename from tools/binman/test/136_fdtmap_hdr_startbad.dts\nrename to tools/binman/test/fdt/fdtmap_hdr_startbad.dts\ndiff --git a/tools/binman/test/120_hdr_no_location.dts b/tools/binman/test/fdt/hdr_no_location.dts\nsimilarity index 100%\nrename from tools/binman/test/120_hdr_no_location.dts\nrename to tools/binman/test/fdt/hdr_no_location.dts\ndiff --git a/tools/binman/test/194_fdt_incl.dts b/tools/binman/test/fdt/incl.dts\nsimilarity index 100%\nrename from tools/binman/test/194_fdt_incl.dts\nrename to tools/binman/test/fdt/incl.dts\ndiff --git a/tools/binman/test/195_fdt_incl_tpl.dts b/tools/binman/test/fdt/incl_tpl.dts\nsimilarity index 100%\nrename from tools/binman/test/195_fdt_incl_tpl.dts\nrename to tools/binman/test/fdt/incl_tpl.dts\ndiff --git a/tools/binman/test/257_fdt_incl_vpl.dts b/tools/binman/test/fdt/incl_vpl.dts\nsimilarity index 100%\nrename from tools/binman/test/257_fdt_incl_vpl.dts\nrename to tools/binman/test/fdt/incl_vpl.dts\ndiff --git a/tools/binman/test/130_list_fdtmap.dts b/tools/binman/test/fdt/list_fdtmap.dts\nsimilarity index 100%\nrename from tools/binman/test/130_list_fdtmap.dts\nrename to tools/binman/test/fdt/list_fdtmap.dts\ndiff --git a/tools/binman/test/060_fdt_update.dts b/tools/binman/test/fdt/update.dts\nsimilarity index 100%\nrename from tools/binman/test/060_fdt_update.dts\nrename to tools/binman/test/fdt/update.dts\ndiff --git a/tools/binman/test/082_fdt_update_all.dts b/tools/binman/test/fdt/update_all.dts\nsimilarity index 100%\nrename from tools/binman/test/082_fdt_update_all.dts\nrename to tools/binman/test/fdt/update_all.dts\ndiff --git a/tools/binman/test/134_fdt_update_all_repack.dts b/tools/binman/test/fdt/update_all_repack.dts\nsimilarity index 100%\nrename from tools/binman/test/134_fdt_update_all_repack.dts\nrename to tools/binman/test/fdt/update_all_repack.dts\ndiff --git a/tools/binman/test/061_fdt_update_bad.dts b/tools/binman/test/fdt/update_bad.dts\nsimilarity index 100%\nrename from tools/binman/test/061_fdt_update_bad.dts\nrename to tools/binman/test/fdt/update_bad.dts\n",
    "prefixes": [
        "v2",
        "06/23"
    ]
}