get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2170663,
    "url": "http://patchwork.ozlabs.org/api/patches/2170663/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20251202081352.302025-3-Max.Merchel@ew.tq-group.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": "<20251202081352.302025-3-Max.Merchel@ew.tq-group.com>",
    "list_archive_url": null,
    "date": "2025-12-02T08:13:43",
    "name": "[v2,2/2] net: phy: micrel_ksz90x1: support forced GIGE master for KSZ9031",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "e34820824c23aed764bb1dd7d82efe5eca72f184",
    "submitter": {
        "id": 89096,
        "url": "http://patchwork.ozlabs.org/api/people/89096/?format=api",
        "name": "Max Merchel",
        "email": "Max.Merchel@ew.tq-group.com"
    },
    "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/20251202081352.302025-3-Max.Merchel@ew.tq-group.com/mbox/",
    "series": [
        {
            "id": 484104,
            "url": "http://patchwork.ozlabs.org/api/series/484104/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=484104",
            "date": "2025-12-02T08:13:41",
            "name": "net: phy: micrel_ksz90x1: workarounds for ksz9031 ERRATA",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/484104/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2170663/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2170663/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=ew.tq-group.com header.i=@ew.tq-group.com\n header.a=rsa-sha256 header.s=hse1 header.b=Q3Zzlyot;\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=ew.tq-group.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=ew.tq-group.com header.i=@ew.tq-group.com\n header.b=\"Q3Zzlyot\";\n\tdkim-atps=neutral",
            "phobos.denx.de; dmarc=pass (p=reject dis=none)\n header.from=ew.tq-group.com",
            "phobos.denx.de; spf=pass\n smtp.mailfrom=prvs=042460c183=max.merchel@ew.tq-group.com"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dLDBH55Kdz1y00\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  2 Dec 2025 19:16:23 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 0991E83E23;\n\tTue,  2 Dec 2025 09:16:16 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 8A3A083E43; Tue,  2 Dec 2025 09:16:14 +0100 (CET)",
            "from mx-relay51-hz1.antispameurope.com\n (mx-relay51-hz1.antispameurope.com [94.100.132.226])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 9125E83E21\n for <u-boot@lists.denx.de>; Tue,  2 Dec 2025 09:16:12 +0100 (CET)",
            "from he-nlb01-hz1.hornetsecurity.com ([94.100.132.6]) by\n mx-relay51-hz1.antispameurope.com; Tue, 02 Dec 2025 09:16:11 +0100",
            "from merchelm-W2.tq-net.de\n (host-82-135-125-110.customer.m-online.net [82.135.125.110])\n (Authenticated sender: max.merchel@ew.tq-group.com)\n by hmail-p-smtp01-out03-hz1.hornetsecurity.com (Postfix) with ESMTPSA id\n A3723CC0E97; Tue,  2 Dec 2025 09:15:56 +0100 (CET)"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_BLOCKED,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2",
        "ARC-Authentication-Results": "i=1; mx-gate51-hz1.hornetsecurity.com 1; spf=pass\n reason=mailfrom (ip=94.100.132.6,\n headerfrom=ew.tq-group.com)\n smtp.mailfrom=ew.tq-group.com\n smtp.helo=hmail-p-smtp01-out03-hz1.hornetsecurity.com; dmarc=pass\n header.from=ew.tq-group.com orig.disposition=pass",
        "ARC-Message-Signature": "a=rsa-sha256;\n bh=fFRQYUYl3HEGJS8x6r6PoOlBadKFTZoua5vYHk76zbA=; c=relaxed/relaxed;\n d=hornetsecurity.com; h=from:to:date:subject:mime-version:; i=1; s=hse1;\n t=1764663371;\n b=FT3TvT0g/j/AyyuirQPy5cAQuZUBgKlw0izvPkVu9x2pugsiH/nYMtbet/Jz2tbhDXGPuo6F\n g46kDOtwefH01s83GqwHn0Nh5sAPQxxHGEYLjmW+cRTEJEbY/nvDHDmXv40DaqDYIALOS/ChAU8\n JK1bym5IsVJVL9dgdmoCmshR6Zi2pGoFRXw8WGjD+RIsah1Jn4aeogdKzNsB7w6jKmer9rtudOr\n ml7y7QnQ2pzXMa0KdrTIcKo0qcMTo0bIXMQNC1cqTapNIO1FN7U2u63Lipinaj8ijd6Y3S2bI8R\n 3S13GoiHmBYPMvRMH1ZGbWIsWBfADFAXJdKE7ZlHqjCSA==",
        "ARC-Seal": "a=rsa-sha256; cv=none; d=hornetsecurity.com; i=1; s=hse1;\n t=1764663371;\n b=hsY287CAIqzxKM9WDsFbEqdIU0Y2FtchUSvILo8Uw8qNlvMsobwETLUI+enCUxSpzltuMi3D\n fOEvtL15VU7P7nLH+3Pg97ehAImCbt3UoyYDjTn1IvZDZK2yEPTq47lSACc41Y2/xRdFi0sUVjN\n 4FrGdRI+c1gbGLnqYBS9rXeFFGVoz10OrXyA5ifb8GaQnx/8LCBQci/Os8knZuz+vRmJW2Ro6M0\n z92Dh/sIgssSFB+gGV7Cfft/57XKspv93ROSOIuF4BYNp/Ic73fxFhnU0YqjLRWwKnIUmcVfeIa\n pbXdxdra/hEONUQEMdJantTD4q47pdt4lzzaIU4BnTHlg==",
        "From": "Max Merchel <Max.Merchel@ew.tq-group.com>",
        "To": "Joe Hershberger <joe.hershberger@ni.com>,\n Ramon Fried <rfried.dev@gmail.com>,\n Jerome Forissier <jerome.forissier@linaro.org>,\n Tom Rini <trini@konsulko.com>",
        "Cc": "Markus Niebel <Markus.Niebel@ew.tq-group.com>, u-boot@lists.denx.de,\n u-boot@ew.tq-group.com, Quentin Schulz <quentin.schulz@cherry.de>,\n Max Merchel <Max.Merchel@ew.tq-group.com>",
        "Subject": "[PATCH v2 2/2] net: phy: micrel_ksz90x1: support forced GIGE master\n for KSZ9031",
        "Date": "Tue,  2 Dec 2025 09:13:43 +0100",
        "Message-ID": "<20251202081352.302025-3-Max.Merchel@ew.tq-group.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20251202081352.302025-1-Max.Merchel@ew.tq-group.com>",
        "References": "<20251202081352.302025-1-Max.Merchel@ew.tq-group.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-cloud-security-sender": "max.merchel@ew.tq-group.com",
        "X-cloud-security-recipient": "u-boot@lists.denx.de",
        "X-cloud-security-crypt": "load encryption module",
        "X-cloud-security-Mailarchiv": "E-Mail archived for: max.merchel@ew.tq-group.com",
        "X-cloud-security-Mailarchivtype": "outbound",
        "X-cloud-security-Virusscan": "CLEAN",
        "X-cloud-security-disclaimer": "This E-Mail was scanned by E-Mailservice on\n mx-relay51-hz1.antispameurope.com with 4dLD9n1VHbz33RKB",
        "X-cloud-security-connect": "he-nlb01-hz1.hornetsecurity.com[94.100.132.6],\n TLS=1,\n IP=94.100.132.6",
        "X-cloud-security-Digest": "406172550570e27e8cb49b429b57fa1b",
        "X-cloud-security": "scantime:1.822",
        "DKIM-Signature": "a=rsa-sha256;\n bh=fFRQYUYl3HEGJS8x6r6PoOlBadKFTZoua5vYHk76zbA=; c=relaxed/relaxed;\n d=ew.tq-group.com;\n h=content-type:mime-version:subject:from:to:message-id:date; s=hse1;\n t=1764663371; v=1;\n b=Q3ZzlyotR+3RfzNLB1Nf95r9psHJ9D3TPNTks6RuT1X1PUvZWyPxfXRW3Cq78bPCXk6/eYL3\n iLSe1E/6ql5IgZMPRNlJHN6AdUKlMEy81S7ulpUeWqnezDVUYiYH20a5dT0vt808tmljk+vKBF8\n ur3F297Mykoi6IWrLieJm0YrO4eG+xvdBXBuSM67ivI6TqZbAz5mOtqvjo9ObnMVcwodRhsK8OF\n S9xm+UYxKDplrBBx+ZbLqwpfn9LX/BomZ9Of7saHiJu4ptuYbs1JhWT02YVU6UMXeu7eIsA6ZSN\n zocpOlrmXIXMUPw7DIOb/MDnjeWeZ1/oXO9SHlQ/sZpEQ==",
        "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: Markus Niebel <Markus.Niebel@ew.tq-group.com>\n\nThe micrel KSZ9031 phy has a optional clock pin (CLK125_NDO) which can be\nused as reference clock for the MAC unit. The clock signal must meet the\nRGMII requirements to ensure the correct data transmission between the\nMAC and the PHY. The KSZ9031 phy does not fulfill the duty cycle\nrequirement if the phy is configured as slave. For a complete\ndescribtion look at the errata sheets: DS80000691D or DS80000692D.\n\nThe errata sheet recommends to force the phy into master mode whenever\nthere is a 1000Base-T link-up as work around. Only set the\n\"micrel,force-master\" property if you use the phy reference clock provided\nby CLK125_NDO pin as MAC reference clock in your application.\n\nAttention: this workaround is only usable if the link partner can\nbe configured to slave mode for 1000Base-T.\n\nThis follows linux implementation in commit\ne1b505a60366 (\"net: phy: micrel: add 125MHz reference clock workaround\")\n\nSigned-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>\nSigned-off-by: Max Merchel <Max.Merchel@ew.tq-group.com>\n---\n drivers/net/phy/micrel_ksz90x1.c | 37 +++++++++++++++++++++++++++++++-\n 1 file changed, 36 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/phy/micrel_ksz90x1.c b/drivers/net/phy/micrel_ksz90x1.c\nindex a669a5789b9..f357e0f1c77 100644\n--- a/drivers/net/phy/micrel_ksz90x1.c\n+++ b/drivers/net/phy/micrel_ksz90x1.c\n@@ -189,7 +189,10 @@ static int ksz9031_of_config(struct phy_device *phydev)\n \t\t{ MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW, 2, ksz90x1_txd_grp, 4 },\n \t\t{ MII_KSZ9031_EXT_RGMII_CLOCK_SKEW, 2, ksz9031_clk_grp, 2 },\n \t};\n+\tconst unsigned int master = CTRL1000_CONFIG_MASTER | CTRL1000_MANUAL_CONFIG;\n+\tstruct udevice *dev = phydev->dev;\n \tint i, ret = 0;\n+\tofnode node;\n \n \tfor (i = 0; i < ARRAY_SIZE(ofcfg); i++) {\n \t\tret = ksz90x1_of_config_group(phydev, &ofcfg[i],\n@@ -198,7 +201,39 @@ static int ksz9031_of_config(struct phy_device *phydev)\n \t\t\treturn ret;\n \t}\n \n-\treturn 0;\n+\tnode = phydev->node;\n+\n+\t/* Look for a PHY node under the Ethernet node */\n+\tif (!ofnode_valid(node))\n+\t\tnode = dev_read_subnode(dev, \"ethernet-phy\");\n+\n+\t/* No node found, look in the Ethernet node */\n+\tif (!ofnode_valid(node))\n+\t\tnode = dev_ofnode(dev);\n+\n+\t/* Silicon Errata Sheet (DS80000691D or DS80000692D):\n+\t * When the device links in the 1000BASE-T slave mode only,\n+\t * the optional 125MHz reference output clock (CLK125_NDO)\n+\t * has wide duty cycle variation.\n+\t *\n+\t * The optional CLK125_NDO clock does not meet the RGMII\n+\t * 45/55 percent (min/max) duty cycle requirement and therefore\n+\t * cannot be used directly by the MAC side for clocking\n+\t * applications that have setup/hold time requirements on\n+\t * rising and falling clock edges.\n+\t *\n+\t * Workaround:\n+\t * Force the phy to be the master to receive a stable clock\n+\t * which meets the duty cycle requirement.\n+\t */\n+\tif (ofnode_read_bool(node, \"micrel,force-master\")) {\n+\t\tret = phy_modify(phydev, MDIO_DEVAD_NONE, MII_CTRL1000,\n+\t\t\t\t master | CTRL1000_PREFER_MASTER, master);\n+\t\tif (ret < 0)\n+\t\t\tpr_err(\"KSZ9031: error applying 'micrel,force-master'\\n\");\n+\t}\n+\n+\treturn ret;\n }\n \n static int ksz9031_center_flp_timing(struct phy_device *phydev)\n",
    "prefixes": [
        "v2",
        "2/2"
    ]
}