get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2000268,
    "url": "http://patchwork.ozlabs.org/api/patches/2000268/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/64b2dae0ae60feded514b774f0e91c303c81a52d.1729577070.git.jan.kiszka@siemens.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": "<64b2dae0ae60feded514b774f0e91c303c81a52d.1729577070.git.jan.kiszka@siemens.com>",
    "list_archive_url": null,
    "date": "2024-10-22T06:04:29",
    "name": "[v2,12/13] sysinfo: Add driver for IOT2050 boards",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "6872409c2c75ab88dafa050daca5924f44b03632",
    "submitter": {
        "id": 710,
        "url": "http://patchwork.ozlabs.org/api/people/710/?format=api",
        "name": "Jan Kiszka",
        "email": "jan.kiszka@siemens.com"
    },
    "delegate": {
        "id": 3651,
        "url": "http://patchwork.ozlabs.org/api/users/3651/?format=api",
        "username": "trini",
        "first_name": "Tom",
        "last_name": "Rini",
        "email": "trini@ti.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/64b2dae0ae60feded514b774f0e91c303c81a52d.1729577070.git.jan.kiszka@siemens.com/mbox/",
    "series": [
        {
            "id": 429111,
            "url": "http://patchwork.ozlabs.org/api/series/429111/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=429111",
            "date": "2024-10-22T06:04:17",
            "name": "boards: siemens: iot2050: SM variant, sysinfo support, fixes & cleanups",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/429111/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2000268/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2000268/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 secure) header.d=siemens.com header.i=jan.kiszka@siemens.com\n header.a=rsa-sha256 header.s=fm1 header.b=eOZ7ozU9;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=siemens.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 secure) header.d=siemens.com header.i=jan.kiszka@siemens.com\n header.b=\"eOZ7ozU9\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=siemens.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=jan.kiszka@siemens.com"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4XXhWq4sG4z1xtp\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 22 Oct 2024 17:06:31 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 93E12892CD;\n\tTue, 22 Oct 2024 08:04:44 +0200 (CEST)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 455DA88FD9; Tue, 22 Oct 2024 08:04:40 +0200 (CEST)",
            "from mta-64-228.siemens.flowmailer.net\n (mta-64-228.siemens.flowmailer.net [185.136.64.228])\n (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id E8C9688F8A\n for <u-boot@lists.denx.de>; Tue, 22 Oct 2024 08:04:34 +0200 (CEST)",
            "by mta-64-228.siemens.flowmailer.net with ESMTPSA id\n 202410220604345db6c1bbb7db800500 for <u-boot@lists.denx.de>;\n Tue, 22 Oct 2024 08:04:34 +0200"
        ],
        "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_MED,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,\n SPF_HELO_PASS,SPF_NONE autolearn=ham autolearn_force=no version=3.4.2",
        "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1;\n d=siemens.com; i=jan.kiszka@siemens.com;\n h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To;\n bh=NrOyHsHnUQd9bJrX18sWYtDhoGTDFlA1hXeabaqwqsU=;\n b=eOZ7ozU9Qdand0h0r3yBEETayxZqyJMorcgR6tbawPjrj1z+U9U/3xoD143BNOAV/bJI9K\n prYZORGof1RwfHLXUwUYcI1yzgKo+WRB0qFb7gUai2BtLtAyb5Ayho16EywV5qnD/XiC1Mb5\n tP43F33bVHeJK42xk+l3KuMTnxMX3qdSChPZOGnwMysrQIr9aOX/rvacLrbuo1wTzLbhibl6\n /ciS3lLbuFyfnjaY1HmtlJ4QJ6LlSzLwR4d8a6xgmNW7HD6qG0XPvbfwMEuFfFMU80cl+zx2\n oAhlEGxAb2ohdUMqmXbDTFxNFh0zJDOIJt6ZKL68qZ6eaynvfPYThMzg==;",
        "From": "Jan Kiszka <jan.kiszka@siemens.com>",
        "To": "U-Boot Mailing List <u-boot@lists.denx.de>",
        "Cc": "Bryan Brattlof <bb@ti.com>,\n\tNishanth Menon <nm@ti.com>",
        "Subject": "[PATCH v2 12/13] sysinfo: Add driver for IOT2050 boards",
        "Date": "Tue, 22 Oct 2024 08:04:29 +0200",
        "Message-ID": "\n <64b2dae0ae60feded514b774f0e91c303c81a52d.1729577070.git.jan.kiszka@siemens.com>",
        "In-Reply-To": "<cover.1729577070.git.jan.kiszka@siemens.com>",
        "References": "<cover.1729577070.git.jan.kiszka@siemens.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Flowmailer-Platform": "Siemens",
        "Feedback-ID": "519:519-294854:519-21489:flowmailer",
        "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: Li Hua Qian <huaqian.li@siemens.com>\n\nThis brings a sysinfo driver and DT entry for the IOT2050 board series.\nIt translates the board information passed from SE-Boot to SPL into\nvalues that can be retrieved via the sysinfo API. Will is already used\nto fill the SMBIOS table when booting via EFI.\n\nSigned-off-by: Li Hua Qian <huaqian.li@siemens.com>\n[Jan: split-off as separate patch, cleanup]\nSigned-off-by: Jan Kiszka <jan.kiszka@siemens.com>\n---\n .../dts/k3-am65-iot2050-common-u-boot.dtsi    |  18 +++\n configs/iot2050_defconfig                     |   1 +\n drivers/sysinfo/Kconfig                       |   7 +\n drivers/sysinfo/Makefile                      |   1 +\n drivers/sysinfo/iot2050.c                     | 143 ++++++++++++++++++\n drivers/sysinfo/iot2050.h                     |  26 ++++\n 6 files changed, 196 insertions(+)\n create mode 100644 drivers/sysinfo/iot2050.c\n create mode 100644 drivers/sysinfo/iot2050.h",
    "diff": "diff --git a/arch/arm/dts/k3-am65-iot2050-common-u-boot.dtsi b/arch/arm/dts/k3-am65-iot2050-common-u-boot.dtsi\nindex b6d2c816acc..55337179f9f 100644\n--- a/arch/arm/dts/k3-am65-iot2050-common-u-boot.dtsi\n+++ b/arch/arm/dts/k3-am65-iot2050-common-u-boot.dtsi\n@@ -14,6 +14,24 @@\n \t\tspi0 = &ospi0;\n \t};\n \n+\tsysinfo {\n+\t\tcompatible = \"siemens,sysinfo-iot2050\";\n+\t\t/* TI_SRAM_SCRATCH_BOARD_EEPROM_START */\n+\t\toffset = <0x40280000>;\n+\t\tbootph-all;\n+\n+\t\tsmbios {\n+\t\t\tsystem {\n+\t\t\t\tmanufacturer = \"SIEMENS AG\";\n+\t\t\t\tproduct = \"SIMATIC IOT2050\";\n+\t\t\t};\n+\n+\t\t\tbaseboard {\n+\t\t\t\tmanufacturer = \"SIEMENS AG\";\n+\t\t\t};\n+\t\t};\n+\t};\n+\n \tleds {\n \t\tbootph-all;\n \t\tstatus-led-red {\ndiff --git a/configs/iot2050_defconfig b/configs/iot2050_defconfig\nindex 2624f0cb573..574e232d119 100644\n--- a/configs/iot2050_defconfig\n+++ b/configs/iot2050_defconfig\n@@ -141,6 +141,7 @@ CONFIG_SOC_TI=y\n CONFIG_SPI=y\n CONFIG_DM_SPI=y\n CONFIG_CADENCE_QSPI=y\n+CONFIG_SYSINFO=y\n CONFIG_SYSRESET=y\n CONFIG_SPL_SYSRESET=y\n CONFIG_SYSRESET_TI_SCI=y\ndiff --git a/drivers/sysinfo/Kconfig b/drivers/sysinfo/Kconfig\nindex 2030e4babc9..df83df69ffb 100644\n--- a/drivers/sysinfo/Kconfig\n+++ b/drivers/sysinfo/Kconfig\n@@ -31,6 +31,13 @@ config SYSINFO_RCAR3\n \thelp\n \t  Support querying SoC version information for Renesas R-Car Gen3.\n \n+config SYSINFO_IOT2050\n+\tbool \"Enable sysinfo driver for the Siemens IOT2050\"\n+\tdepends on TARGET_IOT2050_A53\n+\tdefault y if TARGET_IOT2050_A53\n+\thelp\n+\t  Support querying device information for Siemens IOT2050.\n+\n config SYSINFO_SANDBOX\n \tbool \"Enable sysinfo driver for the Sandbox board\"\n \thelp\ndiff --git a/drivers/sysinfo/Makefile b/drivers/sysinfo/Makefile\nindex 680dde77fe8..26ca3150999 100644\n--- a/drivers/sysinfo/Makefile\n+++ b/drivers/sysinfo/Makefile\n@@ -5,6 +5,7 @@\n obj-y += sysinfo-uclass.o\n obj-$(CONFIG_SYSINFO_GAZERBEAM) += gazerbeam.o\n obj-$(CONFIG_SYSINFO_GPIO) += gpio.o\n+obj-$(CONFIG_SYSINFO_IOT2050) += iot2050.o\n obj-$(CONFIG_SYSINFO_RCAR3) += rcar3.o\n obj-$(CONFIG_SYSINFO_SANDBOX) += sandbox.o\n obj-$(CONFIG_SYSINFO_SMBIOS) += smbios.o\ndiff --git a/drivers/sysinfo/iot2050.c b/drivers/sysinfo/iot2050.c\nnew file mode 100644\nindex 00000000000..5359d6b8d62\n--- /dev/null\n+++ b/drivers/sysinfo/iot2050.c\n@@ -0,0 +1,143 @@\n+// SPDX-License-Identifier: GPL-2.0\n+/*\n+ * Copyright (c) Siemens AG, 2024\n+ */\n+\n+#include <dm.h>\n+#include <sysinfo.h>\n+#include <net.h>\n+#include <asm/arch/hardware.h>\n+\n+#include \"iot2050.h\"\n+\n+#define IOT2050_INFO_MAGIC\t\t0x20502050\n+\n+struct iot2050_info {\n+\tu32 magic;\n+\tu16 size;\n+\tchar name[20 + 1];\n+\tchar serial[16 + 1];\n+\tchar mlfb[18 + 1];\n+\tchar uuid[32 + 1];\n+\tchar a5e[18 + 1];\n+\tu8 mac_addr_cnt;\n+\tu8 mac_addr[8][ARP_HLEN];\n+\tchar seboot_version[40 + 1];\n+\tu8 padding[3];\n+\tu32 ddr_size_mb;\n+} __packed;\n+\n+/**\n+ * struct sysinfo_iot2050_priv - sysinfo private data\n+ * @info: iot2050 board info\n+ */\n+struct sysinfo_iot2050_priv {\n+\tstruct iot2050_info *info;\n+};\n+\n+static int sysinfo_iot2050_detect(struct udevice *dev)\n+{\n+\tstruct sysinfo_iot2050_priv *priv = dev_get_priv(dev);\n+\n+\tif (priv->info == NULL || priv->info->magic != IOT2050_INFO_MAGIC)\n+\t\treturn -EFAULT;\n+\n+\treturn 0;\n+}\n+\n+static int sysinfo_iot2050_get_str(struct udevice *dev, int id, size_t size,\n+\t\t\t\t   char *val)\n+{\n+\tstruct sysinfo_iot2050_priv *priv = dev_get_priv(dev);\n+\tchar byte_str[3] = {0};\n+\tunsigned int n;\n+\n+\tswitch (id) {\n+\tcase BOARD_NAME:\n+\t\tstrncpy(val, priv->info->name, size);\n+\t\tbreak;\n+\tcase BOARD_SERIAL:\n+\t\tstrncpy(val, priv->info->serial, size);\n+\t\tbreak;\n+\tcase BOARD_MLFB:\n+\t\tstrncpy(val, priv->info->mlfb, size);\n+\t\tbreak;\n+\tcase BOARD_UUID:\n+\t\tfor (n = 0; n < min(size, (size_t)16); n++) {\n+\t\t\tmemcpy(byte_str, priv->info->uuid + n * 2, 2);\n+\t\t\tval[n] = (char)hextoul(byte_str, NULL);\n+\t\t}\n+\t\tbreak;\n+\tcase BOARD_A5E:\n+\t\tstrncpy(val, priv->info->a5e, size);\n+\t\tbreak;\n+\tcase BOARD_SEBOOT_VER:\n+\t\tstrncpy(val, priv->info->seboot_version, size);\n+\t\tbreak;\n+\tcase BOARD_MAC_ADDR_1:\n+\tcase BOARD_MAC_ADDR_2:\n+\tcase BOARD_MAC_ADDR_3:\n+\tcase BOARD_MAC_ADDR_4:\n+\tcase BOARD_MAC_ADDR_5:\n+\tcase BOARD_MAC_ADDR_6:\n+\tcase BOARD_MAC_ADDR_7:\n+\tcase BOARD_MAC_ADDR_8:\n+\t\tmemcpy(val, priv->info->mac_addr[id - BOARD_MAC_ADDR_START],\n+\t\t       ARP_HLEN);\n+\t\treturn 0;\n+\tcase BOARD_DDR_SIZE:\n+\t\tmemcpy(val, &priv->info->ddr_size_mb,\n+\t\t       sizeof(priv->info->ddr_size_mb));\n+\t\treturn 0;\n+\tdefault:\n+\t\treturn -EINVAL;\n+\t};\n+\n+\tval[size - 1] = '\\0';\n+\treturn 0;\n+}\n+\n+static int sysinfo_iot2050_get_int(struct udevice *dev, int id, int *val)\n+{\n+\tstruct sysinfo_iot2050_priv *priv = dev_get_priv(dev);\n+\n+\tswitch (id) {\n+\tcase BOARD_MAC_ADDR_CNT:\n+\t\t*val = priv->info->mac_addr_cnt;\n+\t\treturn 0;\n+\tdefault:\n+\t\treturn -EINVAL;\n+\t};\n+}\n+\n+static const struct sysinfo_ops sysinfo_iot2050_ops = {\n+\t.detect = sysinfo_iot2050_detect,\n+\t.get_str = sysinfo_iot2050_get_str,\n+\t.get_int = sysinfo_iot2050_get_int,\n+};\n+\n+static int sysinfo_iot2050_probe(struct udevice *dev)\n+{\n+\tstruct sysinfo_iot2050_priv *priv = dev_get_priv(dev);\n+\tunsigned long offset;\n+\n+\toffset = dev_read_u32_default(dev, \"offset\",\n+\t\t\t\t      TI_SRAM_SCRATCH_BOARD_EEPROM_START);\n+\tpriv->info = (struct iot2050_info *)offset;\n+\n+\treturn 0;\n+}\n+\n+static const struct udevice_id sysinfo_iot2050_ids[] = {\n+\t{ .compatible = \"siemens,sysinfo-iot2050\" },\n+\t{ /* sentinel */ }\n+};\n+\n+U_BOOT_DRIVER(sysinfo_iot2050) = {\n+\t.name           = \"sysinfo_iot2050\",\n+\t.id             = UCLASS_SYSINFO,\n+\t.of_match       = sysinfo_iot2050_ids,\n+\t.ops\t\t= &sysinfo_iot2050_ops,\n+\t.priv_auto\t= sizeof(struct sysinfo_iot2050_priv),\n+\t.probe          = sysinfo_iot2050_probe,\n+};\ndiff --git a/drivers/sysinfo/iot2050.h b/drivers/sysinfo/iot2050.h\nnew file mode 100644\nindex 00000000000..f659a8282b5\n--- /dev/null\n+++ b/drivers/sysinfo/iot2050.h\n@@ -0,0 +1,26 @@\n+/* SPDX-License-Identifier: GPL-2.0 */\n+/*\n+ * Copyright (c) Siemens AG, 2024\n+ */\n+\n+#include <sysinfo.h>\n+\n+enum sysinfo_id_iot2050 {\n+\tBOARD_MLFB\t\t= SYSINFO_ID_SMBIOS_SYSTEM_VERSION,\n+\tBOARD_SERIAL\t\t= SYSINFO_ID_SMBIOS_SYSTEM_SERIAL,\n+\tBOARD_UUID\t\t= SYSINFO_ID_SMBIOS_SYSTEM_UUID,\n+\tBOARD_A5E\t\t= SYSINFO_ID_SMBIOS_BASEBOARD_PRODUCT,\n+\tBOARD_NAME\t\t= SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,\n+\tBOARD_SEBOOT_VER\t= SYSINFO_ID_USER + 0,\n+\tBOARD_MAC_ADDR_CNT\t= SYSINFO_ID_USER + 1,\n+\tBOARD_MAC_ADDR_1\t= SYSINFO_ID_USER + 2,\n+\tBOARD_MAC_ADDR_START\t= BOARD_MAC_ADDR_1,\n+\tBOARD_MAC_ADDR_2\t= SYSINFO_ID_USER + 3,\n+\tBOARD_MAC_ADDR_3\t= SYSINFO_ID_USER + 4,\n+\tBOARD_MAC_ADDR_4\t= SYSINFO_ID_USER + 5,\n+\tBOARD_MAC_ADDR_5\t= SYSINFO_ID_USER + 6,\n+\tBOARD_MAC_ADDR_6\t= SYSINFO_ID_USER + 7,\n+\tBOARD_MAC_ADDR_7\t= SYSINFO_ID_USER + 8,\n+\tBOARD_MAC_ADDR_8\t= SYSINFO_ID_USER + 9,\n+\tBOARD_DDR_SIZE\t\t= SYSINFO_ID_USER + 10,\n+};\n",
    "prefixes": [
        "v2",
        "12/13"
    ]
}