get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 806622,
    "url": "http://patchwork.ozlabs.org/api/patches/806622/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20170828145725.2539-8-antoine.tenart@free-electrons.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170828145725.2539-8-antoine.tenart@free-electrons.com>",
    "list_archive_url": null,
    "date": "2017-08-28T14:57:19",
    "name": "[net-next,v3,07/13] net: mvpp2: do not set GMAC autoneg when using XLG MAC",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "2246e80603eec2b8c97c943c098a3e1269f7abd0",
    "submitter": {
        "id": 61603,
        "url": "http://patchwork.ozlabs.org/api/people/61603/?format=api",
        "name": "Antoine Tenart",
        "email": "antoine.tenart@free-electrons.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20170828145725.2539-8-antoine.tenart@free-electrons.com/mbox/",
    "series": [
        {
            "id": 187,
            "url": "http://patchwork.ozlabs.org/api/series/187/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=187",
            "date": "2017-08-28T14:57:14",
            "name": "net: mvpp2: comphy configuration",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/187/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/806622/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/806622/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Authentication-Results": "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xgw4H6Tn1z9s9Y\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 29 Aug 2017 01:02:55 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751564AbdH1O5t (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 28 Aug 2017 10:57:49 -0400",
            "from mail.free-electrons.com ([62.4.15.54]:55642 \"EHLO\n\tmail.free-electrons.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751554AbdH1O5p (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 28 Aug 2017 10:57:45 -0400",
            "by mail.free-electrons.com (Postfix, from userid 110)\n\tid 68FEB20A16; Mon, 28 Aug 2017 16:57:43 +0200 (CEST)",
            "from localhost (nat.foo.tf [163.172.35.26])\n\tby mail.free-electrons.com (Postfix) with ESMTPSA id 32C4920A19;\n\tMon, 28 Aug 2017 16:57:33 +0200 (CEST)"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.0 (2014-02-07) on\n\tmail.free-electrons.com",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT,\n\tURIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0",
        "From": "Antoine Tenart <antoine.tenart@free-electrons.com>",
        "To": "davem@davemloft.net, kishon@ti.com, andrew@lunn.ch,\n\tjason@lakedaemon.net, sebastian.hesselbarth@gmail.com,\n\tgregory.clement@free-electrons.com",
        "Cc": "Antoine Tenart <antoine.tenart@free-electrons.com>,\n\tthomas.petazzoni@free-electrons.com, nadavh@marvell.com,\n\tlinux@armlinux.org.uk, linux-kernel@vger.kernel.org,\n\tmw@semihalf.com, stefanc@marvell.com,\n\tmiquel.raynal@free-electrons.com, netdev@vger.kernel.org",
        "Subject": "[PATCH net-next v3 07/13] net: mvpp2: do not set GMAC autoneg when\n\tusing XLG MAC",
        "Date": "Mon, 28 Aug 2017 16:57:19 +0200",
        "Message-Id": "<20170828145725.2539-8-antoine.tenart@free-electrons.com>",
        "X-Mailer": "git-send-email 2.13.5",
        "In-Reply-To": "<20170828145725.2539-1-antoine.tenart@free-electrons.com>",
        "References": "<20170828145725.2539-1-antoine.tenart@free-electrons.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "When using the XLG MAC, it does not make sense to force the GMAC autoneg\nparameters. This patch adds checks to only set the GMAC autoneg\nparameters when needed (i.e. when not using the XLG MAC).\n\nSigned-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>\n---\n drivers/net/ethernet/marvell/mvpp2.c | 64 +++++++++++++++++++++++-------------\n 1 file changed, 42 insertions(+), 22 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c\nindex 09cad32734f3..2f05a0b0773c 100644\n--- a/drivers/net/ethernet/marvell/mvpp2.c\n+++ b/drivers/net/ethernet/marvell/mvpp2.c\n@@ -5735,6 +5735,37 @@ static irqreturn_t mvpp2_isr(int irq, void *dev_id)\n \treturn IRQ_HANDLED;\n }\n \n+static void mvpp2_gmac_set_autoneg(struct mvpp2_port *port,\n+\t\t\t\t   struct phy_device *phydev)\n+{\n+\tu32 val;\n+\n+\tif (port->phy_interface != PHY_INTERFACE_MODE_RGMII &&\n+\t    port->phy_interface != PHY_INTERFACE_MODE_RGMII_ID &&\n+\t    port->phy_interface != PHY_INTERFACE_MODE_RGMII_RXID &&\n+\t    port->phy_interface != PHY_INTERFACE_MODE_RGMII_TXID &&\n+\t    port->phy_interface != PHY_INTERFACE_MODE_SGMII)\n+\t\treturn;\n+\n+\tval = readl(port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n+\tval &= ~(MVPP2_GMAC_CONFIG_MII_SPEED |\n+\t\t MVPP2_GMAC_CONFIG_GMII_SPEED |\n+\t\t MVPP2_GMAC_CONFIG_FULL_DUPLEX |\n+\t\t MVPP2_GMAC_AN_SPEED_EN |\n+\t\t MVPP2_GMAC_AN_DUPLEX_EN);\n+\n+\tif (phydev->duplex)\n+\t\tval |= MVPP2_GMAC_CONFIG_FULL_DUPLEX;\n+\n+\tif (phydev->speed == SPEED_1000)\n+\t\tval |= MVPP2_GMAC_CONFIG_GMII_SPEED;\n+\telse if (phydev->speed == SPEED_100)\n+\t\tval |= MVPP2_GMAC_CONFIG_MII_SPEED;\n+\n+\twritel(val, port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n+\n+}\n+\n /* Adjust link */\n static void mvpp2_link_event(struct net_device *dev)\n {\n@@ -5745,24 +5776,7 @@ static void mvpp2_link_event(struct net_device *dev)\n \tif (phydev->link) {\n \t\tif ((port->speed != phydev->speed) ||\n \t\t    (port->duplex != phydev->duplex)) {\n-\t\t\tu32 val;\n-\n-\t\t\tval = readl(port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n-\t\t\tval &= ~(MVPP2_GMAC_CONFIG_MII_SPEED |\n-\t\t\t\t MVPP2_GMAC_CONFIG_GMII_SPEED |\n-\t\t\t\t MVPP2_GMAC_CONFIG_FULL_DUPLEX |\n-\t\t\t\t MVPP2_GMAC_AN_SPEED_EN |\n-\t\t\t\t MVPP2_GMAC_AN_DUPLEX_EN);\n-\n-\t\t\tif (phydev->duplex)\n-\t\t\t\tval |= MVPP2_GMAC_CONFIG_FULL_DUPLEX;\n-\n-\t\t\tif (phydev->speed == SPEED_1000)\n-\t\t\t\tval |= MVPP2_GMAC_CONFIG_GMII_SPEED;\n-\t\t\telse if (phydev->speed == SPEED_100)\n-\t\t\t\tval |= MVPP2_GMAC_CONFIG_MII_SPEED;\n-\n-\t\t\twritel(val, port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n+\t\t\tmvpp2_gmac_set_autoneg(port, phydev);\n \n \t\t\tport->duplex = phydev->duplex;\n \t\t\tport->speed  = phydev->speed;\n@@ -5773,10 +5787,16 @@ static void mvpp2_link_event(struct net_device *dev)\n \t\tport->link = phydev->link;\n \n \t\tif (phydev->link) {\n-\t\t\tval = readl(port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n-\t\t\tval |= (MVPP2_GMAC_FORCE_LINK_PASS |\n-\t\t\t\tMVPP2_GMAC_FORCE_LINK_DOWN);\n-\t\t\twritel(val, port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n+\t\t\tif (port->phy_interface == PHY_INTERFACE_MODE_RGMII ||\n+\t\t\t    port->phy_interface == PHY_INTERFACE_MODE_RGMII_ID ||\n+\t\t\t    port->phy_interface == PHY_INTERFACE_MODE_RGMII_RXID ||\n+\t\t\t    port->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID ||\n+\t\t\t    port->phy_interface == PHY_INTERFACE_MODE_SGMII) {\n+\t\t\t\tval = readl(port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n+\t\t\t\tval |= (MVPP2_GMAC_FORCE_LINK_PASS |\n+\t\t\t\t\tMVPP2_GMAC_FORCE_LINK_DOWN);\n+\t\t\t\twritel(val, port->base + MVPP2_GMAC_AUTONEG_CONFIG);\n+\t\t\t}\n \n \t\t\tmvpp2_interrupts_enable(port);\n \t\t\tmvpp2_port_enable(port);\n",
    "prefixes": [
        "net-next",
        "v3",
        "07/13"
    ]
}