get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 809835,
    "url": "http://patchwork.ozlabs.org/api/patches/809835/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/1504555943-12893-9-git-send-email-pantelis.antoniou@konsulko.com/",
    "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": "<1504555943-12893-9-git-send-email-pantelis.antoniou@konsulko.com>",
    "list_archive_url": null,
    "date": "2017-09-04T20:12:17",
    "name": "[U-Boot,v3,08/14] fit: fdt overlays doc",
    "commit_ref": "6b54e50b5a5889efe179cb06aa6aa25583ef25d5",
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "9f4c95e6a7c746913ff820fdc07ea6fad74df326",
    "submitter": {
        "id": 64098,
        "url": "http://patchwork.ozlabs.org/api/people/64098/?format=api",
        "name": "Pantelis Antoniou",
        "email": "pantelis.antoniou@konsulko.com"
    },
    "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/1504555943-12893-9-git-send-email-pantelis.antoniou@konsulko.com/mbox/",
    "series": [
        {
            "id": 1453,
            "url": "http://patchwork.ozlabs.org/api/series/1453/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=1453",
            "date": "2017-09-04T20:12:09",
            "name": "uboot overlays, FIT image & unittest",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/1453/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/809835/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/809835/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.denx.de\n\t(client-ip=81.169.180.215; helo=lists.denx.de;\n\tenvelope-from=u-boot-bounces@lists.denx.de;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=konsulko.com header.i=@konsulko.com\n\theader.b=\"BDL1aMIv\"; dkim-atps=neutral"
        ],
        "Received": [
            "from lists.denx.de (dione.denx.de [81.169.180.215])\n\tby ozlabs.org (Postfix) with ESMTP id 3xmLnr61rxz9t2R\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 06:20:48 +1000 (AEST)",
            "by lists.denx.de (Postfix, from userid 105)\n\tid 94287C21F68; Mon,  4 Sep 2017 20:15:21 +0000 (UTC)",
            "from lists.denx.de (localhost [IPv6:::1])\n\tby lists.denx.de (Postfix) with ESMTP id F0B7CC21F49;\n\tMon,  4 Sep 2017 20:14:32 +0000 (UTC)",
            "by lists.denx.de (Postfix, from userid 105)\n\tid 76BE0C21EF2; Mon,  4 Sep 2017 20:13:13 +0000 (UTC)",
            "from mail-wm0-f53.google.com (mail-wm0-f53.google.com\n\t[74.125.82.53])\n\tby lists.denx.de (Postfix) with ESMTPS id EFEF8C21F1C\n\tfor <u-boot@lists.denx.de>; Mon,  4 Sep 2017 20:13:06 +0000 (UTC)",
            "by mail-wm0-f53.google.com with SMTP id 187so8639133wmn.1\n\tfor <u-boot@lists.denx.de>; Mon, 04 Sep 2017 13:13:06 -0700 (PDT)",
            "from localhost.localdomain ([195.97.110.117])\n\tby smtp.gmail.com with ESMTPSA id\n\tu8sm3720435wrc.92.2017.09.04.13.13.04\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tMon, 04 Sep 2017 13:13:06 -0700 (PDT)"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE,\n\tRCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,\n\tT_DKIM_INVALID autolearn=unavailable\n\tautolearn_force=no version=3.4.0",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=konsulko.com;\n\ts=google; \n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=P8H8vlnnbwGL09YifcqOyVbVNZSxrYRrhIMz5BM+aqI=;\n\tb=BDL1aMIvue3/InCrpv8SkBrwHGHVW8zzo8QxpejuPQpy6MiRvTZucxwTW1y5YNXecj\n\tzZI4qYrCKNRsIHCVRQsOZG634RYWe1kYwlXhNaso7hzAguNKINrTc520XC50Bgjj9Ydf\n\tY6PQ9a4B5oaoOqshXePi3cOHpoI/kG78OtdlM=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=P8H8vlnnbwGL09YifcqOyVbVNZSxrYRrhIMz5BM+aqI=;\n\tb=DnZ5bsDDHzFAGo/lgXjth//QmitKxNobBRhGVKQ4hkr6lfBQBqkpKRWIUZPaFtGekz\n\tU/GjW1Mx7eZnzO6v3uJ+ewGN51AtH4QOxgUoza3Wb92PfKwGwOU4FB93B6uEmksgrH8e\n\tOSyY3q1RKzb+53lrkTS2+hOE3KaJBDZAZbsQKVD94pjwuyyMeA8m0n26q8paIE9qYQtx\n\tA471FqiiaLewbgyKlV58C+FXOVoCt9X/NJ+Bt8nO4CcooVZ1swwT1+kgHsqRfMWn5x7d\n\tTMCev5MFF/gBU+mWnwPk5eIFsYSdGc64VUg7vkTUyEFfIW1evat96RWQi8rY7784pfqM\n\t0LYw==",
        "X-Gm-Message-State": "AHPjjUgdmDtkN+4l47nzka0X1OmpfaqOKuodyb/uSjP+foacQnR2nous\n\tTXTMfsTM5nfrWD//",
        "X-Google-Smtp-Source": "ADKCNb4jJ7NCqw71Mg1eeXy2epSlCO8CtKZ/IRvE5LvJc9HwYZ/HO1T9zzJqpFKU8d/SaSN7IXWViw==",
        "X-Received": "by 10.28.126.199 with SMTP id z190mr1136755wmc.52.1504555986522; \n\tMon, 04 Sep 2017 13:13:06 -0700 (PDT)",
        "From": "Pantelis Antoniou <pantelis.antoniou@konsulko.com>",
        "To": "Tom Rini <trini@konsulko.com>",
        "Date": "Mon,  4 Sep 2017 23:12:17 +0300",
        "Message-Id": "<1504555943-12893-9-git-send-email-pantelis.antoniou@konsulko.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<1504555943-12893-1-git-send-email-pantelis.antoniou@konsulko.com>",
        "References": "<1504555943-12893-1-git-send-email-pantelis.antoniou@konsulko.com>",
        "Cc": "Marek Vasut <marex@denx.de>,\n\tPantelis Antoniou <pantelis.antoniou@konsulko.com>,\n\tTero Kristo <t-kristo@ti.com>, u-boot@lists.denx.de,\n\tMaxime Ripard <maxime.ripard@free-electrons.com>,\n\tStefan Roese <sr@denx.de>, Alan Ott <alan@signal11.us>",
        "Subject": "[U-Boot] [PATCH v3 08/14] fit: fdt overlays doc",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.18",
        "Precedence": "list",
        "List-Id": "U-Boot discussion <u-boot.lists.denx.de>",
        "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>",
        "List-Archive": "<http://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\t<mailto:u-boot-request@lists.denx.de?subject=subscribe>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Errors-To": "u-boot-bounces@lists.denx.de",
        "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>"
    },
    "content": "Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>\n---\n doc/uImage.FIT/command_syntax_extensions.txt |  12 +-\n doc/uImage.FIT/overlay-fdt-boot.txt          | 221 +++++++++++++++++++++++++++\n doc/uImage.FIT/source_file_format.txt        |   6 +-\n 3 files changed, 236 insertions(+), 3 deletions(-)\n create mode 100644 doc/uImage.FIT/overlay-fdt-boot.txt",
    "diff": "diff --git a/doc/uImage.FIT/command_syntax_extensions.txt b/doc/uImage.FIT/command_syntax_extensions.txt\nindex 6c99b1c..676f992 100644\n--- a/doc/uImage.FIT/command_syntax_extensions.txt\n+++ b/doc/uImage.FIT/command_syntax_extensions.txt\n@@ -36,7 +36,7 @@ Old uImage:\n New uImage:\n 8.  bootm <addr1>\n 9.  bootm [<addr1>]:<subimg1>\n-10. bootm [<addr1>]#<conf>\n+10. bootm [<addr1>]#<conf>[#<extra-conf[#...]]\n 11. bootm [<addr1>]:<subimg1> [<addr2>]:<subimg2>\n 12. bootm [<addr1>]:<subimg1> [<addr2>]:<subimg2> [<addr3>]:<subimg3>\n 13. bootm [<addr1>]:<subimg1> [<addr2>]:<subimg2> <addr3>\n@@ -129,6 +129,12 @@ following syntax:\n - new uImage configuration specification\n <addr>#<configuration unit_name>\n \n+- new uImage configuration specification with extra configuration components\n+<addr>#<configuration unit_name>[#<extra configuration unit_name>[#..]]\n+\n+The extra configuration currently is supported only for additional device tree\n+overlays to apply on the base device tree supplied by the first configuration\n+unit.\n \n Examples:\n \n@@ -138,6 +144,10 @@ bootm 200000:kernel@1\n - boot configuration \"cfg@1\" from a new uImage located at 200000:\n bootm 200000#cfg@1\n \n+- boot configuration \"cfg@1\" with extra \"cfg@2\" from a new uImage located\n+  at 200000:\n+bootm 200000#cfg@1#cfg@2\n+\n - boot \"kernel@1\" from a new uImage at 200000 with initrd \"ramdisk@2\" found in\n   some other new uImage stored at address 800000:\n bootm 200000:kernel@1 800000:ramdisk@2\ndiff --git a/doc/uImage.FIT/overlay-fdt-boot.txt b/doc/uImage.FIT/overlay-fdt-boot.txt\nnew file mode 100644\nindex 0000000..dbdf2a1\n--- /dev/null\n+++ b/doc/uImage.FIT/overlay-fdt-boot.txt\n@@ -0,0 +1,221 @@\n+U-Boot FDT Overlay usage\n+========================\n+\n+Introduction\n+------------\n+In many cases it is desirable to have a single FIT image support a multitude\n+of similar boards and their expansion options. The same kernel on DT enabled\n+platforms can support this easily enough by providing a DT blob upon boot\n+that matches the desired configuration.\n+\n+Configuration without overlays\n+------------------------------\n+\n+Take a hypothetical board named 'foo' where there are different supported\n+revisions, reva and revb. Assume that both board revisions can use add a bar\n+add-on board, while only the revb board can use a baz add-on board.\n+\n+Without using overlays the configuration would be as follows for every case.\n+\n+\t/dts-v1/;\n+\t/ {\n+\t\timages {\n+\t\t\tkernel@1 {\n+\t\t\t\tdata = /incbin/(\"./zImage\");\n+\t\t\t\ttype = \"kernel\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tos = \"linux\";\n+\t\t\t\tload = <0x82000000>;\n+\t\t\t\tentry = <0x82000000>;\n+\t\t\t};\n+\t\t\tfdt@1 {\n+\t\t\t\tdata = /incbin/(\"./foo-reva.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t};\n+\t\t\tfdt@2 {\n+\t\t\t\tdata = /incbin/(\"./foo-revb.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t};\n+\t\t\tfdt@3 {\n+\t\t\t\tdata = /incbin/(\"./foo-reva-bar.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t};\n+\t\t\tfdt@4 {\n+\t\t\t\tdata = /incbin/(\"./foo-revb-bar.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t};\n+\t\t\tfdt@5 {\n+\t\t\t\tdata = /incbin/(\"./foo-revb-baz.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t};\n+\t\t\tfdt@6 {\n+\t\t\t\tdata = /incbin/(\"./foo-revb-bar-baz.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t};\n+\t\t};\n+\n+\t\tconfigurations {\n+\t\t\tdefault = \"foo-reva.dtb;\n+\t\t\tfoo-reva.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\";\n+\t\t\t};\n+\t\t\tfoo-revb.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@2\";\n+\t\t\t};\n+\t\t\tfoo-reva-bar.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@3\";\n+\t\t\t};\n+\t\t\tfoo-revb-bar.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@4\";\n+\t\t\t};\n+\t\t\tfoo-revb-baz.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@5\";\n+\t\t\t};\n+\t\t\tfoo-revb-bar-baz.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@6\";\n+\t\t\t};\n+\t\t};\n+\t};\n+\n+Note the blob needs to be compiled for each case and the combinatorial explosion of\n+configurations. A typical device tree blob is in the low hunderds of kbytes so a\n+multitude of configuration grows the image quite a bit.\n+\n+Booting this image is done by using\n+\n+\t# bootm <addr>#<config>\n+\n+Where config is one of:\n+\tfoo-reva.dtb, foo-revb.dtb, foo-reva-bar.dtb, foo-revb-bar.dtb,\n+\tfoo-revb-baz.dtb, foo-revb-bar-baz.dtb\n+\n+This selects the DTB to use when booting.\n+\n+Configuration using overlays\n+----------------------------\n+\n+Device tree overlays can be applied to a base DT and result in the same blob\n+being passed to the booting kernel. This saves on space and avoid the combinatorial\n+explosion problem.\n+\n+\t/dts-v1/;\n+\t/ {\n+\t\timages {\n+\t\t\tkernel@1 {\n+\t\t\t\tdata = /incbin/(\"./zImage\");\n+\t\t\t\ttype = \"kernel\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tos = \"linux\";\n+\t\t\t\tload = <0x82000000>;\n+\t\t\t\tentry = <0x82000000>;\n+\t\t\t};\n+\t\t\tfdt@1 {\n+\t\t\t\tdata = /incbin/(\"./foo.dtb\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tload = <0x87f00000>;\n+\t\t\t};\n+\t\t\tfdt@2 {\n+\t\t\t\tdata = /incbin/(\"./reva.dtbo\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tload = <0x87fc0000>;\n+\t\t\t};\n+\t\t\tfdt@3 {\n+\t\t\t\tdata = /incbin/(\"./revb.dtbo\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tload = <0x87fc0000>;\n+\t\t\t};\n+\t\t\tfdt@4 {\n+\t\t\t\tdata = /incbin/(\"./bar.dtbo\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tload = <0x87fc0000>;\n+\t\t\t};\n+\t\t\tfdt@5 {\n+\t\t\t\tdata = /incbin/(\"./baz.dtbo\");\n+\t\t\t\ttype = \"flat_dt\";\n+\t\t\t\tarch = \"arm\";\n+\t\t\t\tload = <0x87fc0000>;\n+\t\t\t};\n+\t\t};\n+\n+\t\tconfigurations {\n+\t\t\tdefault = \"foo-reva.dtb;\n+\t\t\tfoo-reva.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\", \"fdt@2\";\n+\t\t\t};\n+\t\t\tfoo-revb.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\", \"fdt@3\";\n+\t\t\t};\n+\t\t\tfoo-reva-bar.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\", \"fdt@2\", \"fdt@4\";\n+\t\t\t};\n+\t\t\tfoo-revb-bar.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\", \"fdt@3\", \"fdt@4\";\n+\t\t\t};\n+\t\t\tfoo-revb-baz.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\", \"fdt@3\", \"fdt@5\";\n+\t\t\t};\n+\t\t\tfoo-revb-bar-baz.dtb {\n+\t\t\t\tkernel = \"kernel@1\";\n+\t\t\t\tfdt = \"fdt@1\", \"fdt@3\", \"fdt@4\", \"fdt@5\";\n+\t\t\t};\n+\t\t\tbar {\n+\t\t\t\tfdt = \"fdt@4\";\n+\t\t\t};\n+\t\t\tbaz {\n+\t\t\t\tfdt = \"fdt@5\";\n+\t\t\t};\n+\t\t};\n+\t};\n+\n+Booting this image is exactly the same as the non-overlay example.\n+u-boot will retrieve the base blob and apply the overlays in sequence as\n+they are declared in the configuration.\n+\n+Note the minimum amount of different DT blobs, as well as the requirement for\n+the DT blobs to have a load address; the overlay application requires the blobs\n+to be writeable.\n+\n+Configuration using overlays and feature selection\n+--------------------------------------------------\n+\n+Although the configuration in the previous section works is a bit inflexible\n+since it requires all possible configuration options to be laid out before\n+hand in the FIT image. For the add-on boards the extra config selection method\n+might make sense.\n+\n+Note the two bar & baz configuration nodes. To boot a reva board with\n+the bar add-on board enabled simply use:\n+\n+\t# bootm <addr>#foo-reva.dtb#bar\n+\n+While booting a revb with bar and baz is as follows:\n+\n+\t# bootm <addr>#foo-revb.dtb#bar#baz\n+\n+The limitation for a feature selection configuration node is that a single\n+fdt option is currently supported.\n+\n+Pantelis Antoniou\n+pantelis.antoniou@konsulko.com\n+12/6/2017\ndiff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt\nindex 136d3d7..ba8013a 100644\n--- a/doc/uImage.FIT/source_file_format.txt\n+++ b/doc/uImage.FIT/source_file_format.txt\n@@ -235,7 +235,7 @@ o config@1\n   |- description = \"configuration description\"\n   |- kernel = \"kernel sub-node unit name\"\n   |- ramdisk = \"ramdisk sub-node unit name\"\n-  |- fdt = \"fdt sub-node unit-name\"\n+  |- fdt = \"fdt sub-node unit-name\" [, \"fdt overlay sub-node unit-name\", ...]\n   |- fpga = \"fpga sub-node unit-name\"\n   |- loadables = \"loadables sub-node unit-name\"\n \n@@ -249,7 +249,9 @@ o config@1\n   - ramdisk : Unit name of the corresponding ramdisk image (component image\n     node of a \"ramdisk\" type).\n   - fdt : Unit name of the corresponding fdt blob (component image node of a\n-    \"fdt type\").\n+    \"fdt type\"). Additional fdt overlay nodes can be supplied which signify\n+    that the resulting device tree blob is generated by the first base fdt\n+    blob with all subsequent overlays applied.\n   - setup : Unit name of the corresponding setup binary (used for booting\n     an x86 kernel). This contains the setup.bin file built by the kernel.\n   - fpga : Unit name of the corresponding fpga bitstream blob\n",
    "prefixes": [
        "U-Boot",
        "v3",
        "08/14"
    ]
}