get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2178802,
    "url": "http://patchwork.ozlabs.org/api/patches/2178802/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20251230210633.501526-1-robert.marko@sartura.hr/",
    "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": "<20251230210633.501526-1-robert.marko@sartura.hr>",
    "list_archive_url": null,
    "date": "2025-12-30T21:06:03",
    "name": "net: add Microsemi/Microchip MDIO driver",
    "commit_ref": "dfc39f9caf3c1a5e56a6c2b65b3bee83736e29d8",
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "b1f93da9849b830d53f51f8423fbd3fd50d8f679",
    "submitter": {
        "id": 78207,
        "url": "http://patchwork.ozlabs.org/api/people/78207/?format=api",
        "name": "Robert Marko",
        "email": "robert.marko@sartura.hr"
    },
    "delegate": {
        "id": 157425,
        "url": "http://patchwork.ozlabs.org/api/users/157425/?format=api",
        "username": "jforissier",
        "first_name": "Jerome",
        "last_name": "Forissier",
        "email": "jerome.forissier@linaro.org"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20251230210633.501526-1-robert.marko@sartura.hr/mbox/",
    "series": [
        {
            "id": 486798,
            "url": "http://patchwork.ozlabs.org/api/series/486798/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=486798",
            "date": "2025-12-30T21:06:03",
            "name": "net: add Microsemi/Microchip MDIO driver",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/486798/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2178802/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2178802/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=sartura.hr header.i=@sartura.hr header.a=rsa-sha256\n header.s=sartura header.b=BSrHLQuE;\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=reject dis=none) header.from=sartura.hr",
            "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=sartura.hr header.i=@sartura.hr header.b=\"BSrHLQuE\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=sartura.hr",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=robert.marko@sartura.hr"
        ],
        "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 4dglyK0PjXz1xpS\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 31 Dec 2025 08:06:49 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 4239083FCF;\n\tTue, 30 Dec 2025 22:06:46 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id ABED783FD3; Tue, 30 Dec 2025 22:06:45 +0100 (CET)",
            "from mail-wm1-x329.google.com (mail-wm1-x329.google.com\n [IPv6:2a00:1450:4864:20::329])\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 ACAB583FA4\n for <u-boot@lists.denx.de>; Tue, 30 Dec 2025 22:06:43 +0100 (CET)",
            "by mail-wm1-x329.google.com with SMTP id\n 5b1f17b1804b1-47796a837c7so66502385e9.0\n for <u-boot@lists.denx.de>; Tue, 30 Dec 2025 13:06:43 -0800 (PST)",
            "from fedora (cpezg-94-253-146-116-cbl.xnet.hr. [94.253.146.116])\n by smtp.googlemail.com with ESMTPSA id\n ffacd0b85a97d-4324ea22674sm71662334f8f.10.2025.12.30.13.06.42\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 30 Dec 2025 13:06:42 -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,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_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;\n d=sartura.hr; s=sartura; t=1767128803; x=1767733603; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=OwCxAURmOSow22jlCAc4oci6f5wh2Er/yjuvqqi62A8=;\n b=BSrHLQuET60RRVGfRjUXXdfebHLMYsFXH+dfLa5f5q6L83FLvEMumVJEIQtJyLOhE+\n IZxnWNIAk59DyWjMLEuSLPT+rO3HvKlyZFcXckpZ6+OcQvUtOowVccFlCFAsOIQkdKuM\n HIdFU24xN4zkKXrBbRRxjo2ipSktj8W7rNRroIb1dXfLQUkgkhyiLy10YzHfV7vAYuXw\n 0/7CxAuX+0MGMsfg1WLoYc2FgGfFaGHyRTV8PprAh2Qf25flB+UWpomqrKG4HFVY8GES\n ljV/f3gWTGQSSKBlxrJPSYEoALPUgSMSRulUwqZ3mwEz2z9TwccM7lGJ2Lg2EmmS5g6i\n GGlA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1767128803; x=1767733603;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=OwCxAURmOSow22jlCAc4oci6f5wh2Er/yjuvqqi62A8=;\n b=hugUB5WXdQoJi+zH1NxnRz1+LdE0hEJpp19O6oyPobWcVQcxpYvUeXH3G4jKUGlGDC\n ZVPOYv//eQKAwzxWKfAMdNxZ6SWvZNbOcXppdsB/thpkdT5t6mtsqcL/rnhXlqD7m8ZP\n ijFVao9iYT+wZFMB3N+MBaQFnHY+hRbqxmyv30TOk4jWYsZjMbKJVyZ3NyVBxNjwbm0P\n DX8lLN+NVPz2YYX1RGjMbNhZOwV85LDonyufII1bNL6Ext7fW6vrnsfoJLhNjfxN8fuP\n LVerEZWWLEHiDJeVqd151E8fBfNp5rhSearfZ0t1vCDfuFOgW1GRKgl4Iz+ro9aLrjxY\n eoBA==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCVm7SFhXVuUdiMkOx5iT6B6sXqese9cMxfcgBXNytkuObGwHBMM1nNN2uBrSys99ddEEWOLohM=@lists.denx.de",
        "X-Gm-Message-State": "AOJu0YwBYsrC8lDgo6RE9xKAqVgIKnGdMrarW8G7947MT3sJd/DPnDGC\n D5+9CRwhnfgqFUMiVhAGQjN9bLNlE0VnFwi2s8ddrJI8UhQxQOwZyQAx33hDHRIbxFI=",
        "X-Gm-Gg": "AY/fxX4tyrk7fE1sEuRILTKL3VsraayvflsUKUPiDTc6dJSTUyTUEvaCs6MqwpSJ/V8\n CAV6ApaEj6/5qFl2PcnUIN53RwORCodT+8tA/R7qvi85beavsB1z5B2xg99sj1iCOGw239n7Dvh\n /F8RZg2wslPkK5qVP7Cr0kqE5EaRFKxqYp55mDIZynL4Fgqb8CW35iFx5bkLDLF83zOdgSN/OEt\n 7C2D9+T6OEr+E7uC0BgX4d/dzrxLA7UZAFKJZ3GFNXwV8+ebJTGApFyTaqvZG0lwZvDdIWT3zJY\n G0a5lCgY0HcRs2MIOrghbSlsENixK80uCbYYFeYmP3czOe0TDn+m1iw58ZpmwE0syzE9EfctFkF\n NgOKiuf84WDxcfXpK/UemJ20c11ebxNvngTO95xZ3Do1caNbQ+CPr0zCqIiJf3eG4fymU+dxfJC\n ADsYgrlDoUzUKCyMO1vr2EJ0m/KOC6TpQnZwl5TODckqr5scpwct7j5cvxg0wyE/Mh7AMymDfrX\n NO4/T7F8JR4sujEKvdzVev0HycA",
        "X-Google-Smtp-Source": "\n AGHT+IFYX4j7r4OQwSJRNOjnxP3rBZHVPq+D5zTw6bJmIEd98kFiM3CZukJJyxJ2APlRNDxUEs7uTw==",
        "X-Received": "by 2002:a5d:5d88:0:b0:432:8537:8592 with SMTP id\n ffacd0b85a97d-432853785b1mr16442489f8f.4.1767128803029;\n Tue, 30 Dec 2025 13:06:43 -0800 (PST)",
        "From": "Robert Marko <robert.marko@sartura.hr>",
        "To": "trini@konsulko.com, joe.hershberger@ni.com, rfried.dev@gmail.com,\n jerome.forissier@linaro.org, marek.vasut+renesas@mailbox.org,\n paul.barker.ct@bp.renesas.com, u-boot@lists.denx.de",
        "Cc": "luka.perkov@sartura.hr,\n\tRobert Marko <robert.marko@sartura.hr>",
        "Subject": "[PATCH] net: add Microsemi/Microchip MDIO driver",
        "Date": "Tue, 30 Dec 2025 22:06:03 +0100",
        "Message-ID": "<20251230210633.501526-1-robert.marko@sartura.hr>",
        "X-Mailer": "git-send-email 2.52.0",
        "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": "Add Microsemi/Microchip MDIO driver for interfaces found in their network\nswitches.\n\nDriver is based on the Linux version.\n\nSigned-off-by: Robert Marko <robert.marko@sartura.hr>\n---\n drivers/net/Kconfig          |   8 +++\n drivers/net/Makefile         |   1 +\n drivers/net/mdio-mscc-miim.c | 136 +++++++++++++++++++++++++++++++++++\n 3 files changed, 145 insertions(+)\n create mode 100644 drivers/net/mdio-mscc-miim.c",
    "diff": "diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig\nindex 544e302d600..ec1c6329e5c 100644\n--- a/drivers/net/Kconfig\n+++ b/drivers/net/Kconfig\n@@ -1065,6 +1065,14 @@ config ASPEED_MDIO\n \t  This driver supports the MDIO bus of Aspeed AST2600 SOC.  The driver\n \t  currently supports Clause 22.\n \n+config MDIO_MSCC_MIIM\n+\tbool \"Microsemi MIIM interface support\"\n+\tdepends on DM_MDIO\n+\tselect REGMAP\n+\thelp\n+\t\tThis driver supports MDIO interface found in Microsemi and Microchip\n+\t\tnetwork switches.\n+\n config MDIO_MUX_MMIOREG\n \tbool \"MDIO MUX accessed as a MMIO register access\"\n \tdepends on DM_MDIO_MUX\ndiff --git a/drivers/net/Makefile b/drivers/net/Makefile\nindex a3c3420898c..5bb40480d88 100644\n--- a/drivers/net/Makefile\n+++ b/drivers/net/Makefile\n@@ -62,6 +62,7 @@ obj-$(CONFIG_LITEETH) += liteeth.o\n obj-$(CONFIG_MACB) += macb.o\n obj-$(CONFIG_MCFFEC) += mcffec.o mcfmii.o\n obj-$(CONFIG_MDIO_IPQ4019) += mdio-ipq4019.o\n+obj-$(CONFIG_MDIO_MSCC_MIIM) += mdio-mscc-miim.o\n obj-$(CONFIG_MDIO_GPIO_BITBANG) += mdio_gpio.o\n obj-$(CONFIG_MDIO_MT7531_MMIO) += mdio-mt7531-mmio.o\n obj-$(CONFIG_MDIO_MUX_I2CREG) += mdio_mux_i2creg.o\ndiff --git a/drivers/net/mdio-mscc-miim.c b/drivers/net/mdio-mscc-miim.c\nnew file mode 100644\nindex 00000000000..5700b872586\n--- /dev/null\n+++ b/drivers/net/mdio-mscc-miim.c\n@@ -0,0 +1,136 @@\n+// SPDX-License-Identifier: GPL-2.0+\n+\n+#include <asm/io.h>\n+#include <dm.h>\n+#include <time.h>\n+#include <regmap.h>\n+#include <miiphy.h>\n+#include <linux/bitfield.h>\n+\n+#define MSCC_MIIM_REG_STATUS\t\t0x0\n+#define\t\tMSCC_MIIM_STATUS_STAT_PENDING\tBIT(2)\n+#define\t\tMSCC_MIIM_STATUS_STAT_BUSY\tBIT(3)\n+#define MSCC_MIIM_REG_CMD\t\t0x8\n+#define\t\tMSCC_MIIM_CMD_OPR_WRITE\t\tBIT(1)\n+#define\t\tMSCC_MIIM_CMD_OPR_READ\t\tBIT(2)\n+#define\t\tMSCC_MIIM_CMD_WRDATA_SHIFT\t4\n+#define\t\tMSCC_MIIM_CMD_REGAD_SHIFT\t20\n+#define\t\tMSCC_MIIM_CMD_PHYAD_SHIFT\t25\n+#define\t\tMSCC_MIIM_CMD_VLD\t\tBIT(31)\n+#define MSCC_MIIM_REG_DATA\t\t0xC\n+#define\t\tMSCC_MIIM_DATA_ERROR\t\t(BIT(16) | BIT(17))\n+#define\t\tMSCC_MIIM_DATA_MASK\t\tGENMASK(15, 0)\n+#define MSCC_MIIM_REG_CFG\t\t0x10\n+#define\t\tMSCC_MIIM_CFG_PRESCALE_MASK\tGENMASK(7, 0)\n+/* 01 = Clause 22, 00 = Clause 45 */\n+#define\t\tMSCC_MIIM_CFG_ST_CFG_MASK\tGENMASK(10, 9)\n+#define\t\tMSCC_MIIM_C22\t\t\t1\n+#define\t\tMSCC_MIIM_C45\t\t\t0\n+\n+#define MSCC_MDIO_TIMEOUT    10000\n+#define MSCC_MDIO_SLEEP      50\n+\n+struct mscc_mdio_priv {\n+\tstruct regmap *map;\n+};\n+\n+static int mscc_mdio_wait_busy(struct mscc_mdio_priv *priv)\n+{\n+\tu32 busy;\n+\n+\treturn regmap_read_poll_timeout(priv->map, MSCC_MIIM_REG_STATUS, busy,\n+\t\t\t\t       (busy & MSCC_MIIM_STATUS_STAT_BUSY) == 0,\n+\t\t\t\t       MSCC_MDIO_SLEEP,\n+\t\t\t\t       MSCC_MDIO_TIMEOUT);\n+}\n+\n+static int mscc_mdio_read(struct udevice *dev, int addr, int devad, int reg)\n+{\n+\tstruct mscc_mdio_priv *priv = dev_get_priv(dev);\n+\tu32 val;\n+\tint ret;\n+\n+\tif (mscc_mdio_wait_busy(priv))\n+\t\treturn -ETIMEDOUT;\n+\n+\tret = regmap_write(priv->map, MSCC_MIIM_REG_CMD,\n+\t\t\t   MSCC_MIIM_CMD_VLD |\n+\t\t\t   (addr << MSCC_MIIM_CMD_PHYAD_SHIFT) |\n+\t\t\t   (reg << MSCC_MIIM_CMD_REGAD_SHIFT) |\n+\t\t\t   MSCC_MIIM_CMD_OPR_READ);\n+\tif (ret)\n+\t\treturn ret;\n+\n+\tif (mscc_mdio_wait_busy(priv))\n+\t\treturn -ETIMEDOUT;\n+\n+\tregmap_read(priv->map, MSCC_MIIM_REG_DATA, &val);\n+\tif (val & MSCC_MIIM_DATA_ERROR)\n+\t\treturn -EIO;\n+\n+\treturn FIELD_GET(MSCC_MIIM_DATA_MASK, val);\n+}\n+\n+int mscc_mdio_write(struct udevice *dev, int addr, int devad, int reg, u16 val)\n+{\n+\tstruct mscc_mdio_priv *priv = dev_get_priv(dev);\n+\tint ret;\n+\n+\tif (mscc_mdio_wait_busy(priv))\n+\t\treturn -ETIMEDOUT;\n+\n+\tret = regmap_write(priv->map, MSCC_MIIM_REG_CMD,\n+\t\t\t   MSCC_MIIM_CMD_VLD |\n+\t\t\t   (addr << MSCC_MIIM_CMD_PHYAD_SHIFT) |\n+\t\t\t   (reg << MSCC_MIIM_CMD_REGAD_SHIFT) |\n+\t\t\t   (val << MSCC_MIIM_CMD_WRDATA_SHIFT) |\n+\t\t\t   MSCC_MIIM_CMD_OPR_WRITE);\n+\n+\treturn ret;\n+}\n+\n+static const struct mdio_ops mscc_mdio_ops = {\n+\t.read = mscc_mdio_read,\n+\t.write = mscc_mdio_write,\n+};\n+\n+static int mscc_mdio_bind(struct udevice *dev)\n+{\n+\tif (ofnode_valid(dev_ofnode(dev)))\n+\t\tdevice_set_name(dev, ofnode_get_name(dev_ofnode(dev)));\n+\n+\treturn 0;\n+}\n+\n+static int mscc_mdio_probe(struct udevice *dev)\n+{\n+\tstruct mscc_mdio_priv *priv = dev_get_priv(dev);\n+\tint ret;\n+\n+\tret = regmap_init_mem(dev_ofnode(dev), &priv->map);\n+\tif (ret)\n+\t\treturn -EINVAL;\n+\n+\t/* Enter Clause 22 mode */\n+\tret = regmap_update_bits(priv->map, MSCC_MIIM_REG_CFG,\n+\t\t\t\t MSCC_MIIM_CFG_ST_CFG_MASK,\n+\t\t\t\t FIELD_PREP(MSCC_MIIM_CFG_ST_CFG_MASK,\n+\t\t\t\t\t    MSCC_MIIM_C22));\n+\n+\treturn ret;\n+}\n+\n+static const struct udevice_id mscc_mdio_ids[] = {\n+\t{ .compatible = \"mscc,ocelot-miim\", },\n+\t{ }\n+};\n+\n+U_BOOT_DRIVER(mscc_mdio) = {\n+\t.name           = \"mscc_mdio\",\n+\t.id             = UCLASS_MDIO,\n+\t.of_match       = mscc_mdio_ids,\n+\t.bind           = mscc_mdio_bind,\n+\t.probe          = mscc_mdio_probe,\n+\t.ops            = &mscc_mdio_ops,\n+\t.priv_auto\t  = sizeof(struct mscc_mdio_priv),\n+};\n",
    "prefixes": []
}