get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2217182,
    "url": "http://patchwork.ozlabs.org/api/patches/2217182/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260327184706.1600329-9-vladimir.oltean@nxp.com/",
    "project": {
        "id": 21,
        "url": "http://patchwork.ozlabs.org/api/projects/21/?format=api",
        "name": "Linux Tegra Development",
        "link_name": "linux-tegra",
        "list_id": "linux-tegra.vger.kernel.org",
        "list_email": "linux-tegra@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260327184706.1600329-9-vladimir.oltean@nxp.com>",
    "list_archive_url": null,
    "date": "2026-03-27T18:46:46",
    "name": "[v6,phy-next,08/28] PCI: Remove device links to PHY",
    "commit_ref": null,
    "pull_url": null,
    "state": "handled-elsewhere",
    "archived": false,
    "hash": "40518ee2f5409b9f292fd52b736629c3ea1dee2a",
    "submitter": {
        "id": 75582,
        "url": "http://patchwork.ozlabs.org/api/people/75582/?format=api",
        "name": "Vladimir Oltean",
        "email": "vladimir.oltean@nxp.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260327184706.1600329-9-vladimir.oltean@nxp.com/mbox/",
    "series": [
        {
            "id": 497819,
            "url": "http://patchwork.ozlabs.org/api/series/497819/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/list/?series=497819",
            "date": "2026-03-27T18:46:38",
            "name": "[v6,phy-next,01/28] ata: add <linux/pm_runtime.h> where missing",
            "version": 6,
            "mbox": "http://patchwork.ozlabs.org/series/497819/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2217182/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2217182/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-tegra+bounces-13353-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-tegra@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=YJmPDJXQ;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13353-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=\"YJmPDJXQ\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.83.36",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=nxp.com",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\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 4fj8pG2wyPz1y1x\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Mar 2026 05:49:58 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 45F003068A38\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 18:48:59 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 134BF38AC74;\n\tFri, 27 Mar 2026 18:48:59 +0000 (UTC)",
            "from GVXPR05CU001.outbound.protection.outlook.com\n (mail-swedencentralazon11013036.outbound.protection.outlook.com\n [52.101.83.36])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id E587B38838D;\n\tFri, 27 Mar 2026 18:48:56 +0000 (UTC)",
            "from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24)\n by MRWPR04MB11287.eurprd04.prod.outlook.com (2603:10a6:501:79::20) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.22; Fri, 27 Mar\n 2026 18:48:49 +0000",
            "from DU2PR04MB8584.eurprd04.prod.outlook.com\n ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com\n ([fe80::3f9d:4a01:f53c:952d%5]) with mapi id 15.20.9745.019; Fri, 27 Mar 2026\n 18:48:49 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774637338; cv=fail;\n b=rX6GW5Oead35V6ffiL2sVSRMQP79Dh1aXg0/Ewv7ltX5ztZ/zCiDQabQic3xs8V6zdsM049pas8kA67lMh0ia5VTPp+SLM6npyY07vCGO5smBdAYu9EfyX89aucn/Ad5zn0KbnksY+hocCd5pZLfEqVCunQtFyUd6ZRQT/IX3wY=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=a9uYpJuWjCw92EvolPZWCe6+fgu10ou02NRM7a2RV+IN9/hChKubShCIFX1VUHrs2z6IjrB55+P8mlsZSwPuQww6CJ7MHl2uMAmGGhXIDtbrOvTzs/7R0ZTdz9aOZnzXoRqbtK1o0KcnuBM7e7wZYGqX7ukRK2dF3YXARZFhExTJfBB+dkK1/OY36NWCtB8SWt/xlF03Bvtflv0bZ3g1e7oCn4AhllNwzRKoY1VxL3kOvTEvtleUANX5IJrA9QxLn3m66xlUcSupiNPCkkvcGvqou/FuL6bPRA8+sF2xne3RbX8DuKj6HtyyRdtVMXanjMgtjk+lmcSmju2RMCJHqA=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774637338; c=relaxed/simple;\n\tbh=3knv72qEMoSRBu8dyqgmv9FHC97Gvuc9xKXDWbJ8OTs=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=NX4nLk840ze3ssCtZaB4jQ4DmPZ8STI72Lt9jPI5M0IrEFg5CPbWq6HfPb1Hd4Gkc8OlrMQWT4xB+D9FJrZvrK28LMBRx4hgyRKjgMT5UtEy2uHXN15Ub1pRcQCxywoqjJ5DvTKjVD9KUKIH7KreGYlhLziN32QtKRIklP6Aysg=",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=HUkwIfCup7g/hS5s64hg3B1Z9fNJr7FfPm5pRcEZ9tY=;\n b=pMtEfQhFqP6ZJ2KO/q5EdPBQwanVa1M3xUgsET+PvxVyUbhQSOagJJZFB4FKbvdttwzV6WOGiw2WcIe3scfsqTNV/IUjscD5V9yKLjaA9JlfegZUBooUFo3eH4onFwPY99WURyK8igEYRek7VcxN6wFw0lZ1uyJwncJK5JzrLX7KFYy3eFojKtLpZZpkKlZ5lxtCCcxeers5UkM24rRhiQhVxl+zjK5xS9LejWfLfO2/RISwUOyfTEF/Dg/unV4Yr9xNs+DsBWYxvfQNjU9v9g1W89Ian1zQxQBSqGqOwriEGDcv7tkkhXNeZDqcZKXrk9u0k16nuH5pq3PxqSARYg=="
        ],
        "ARC-Authentication-Results": [
            "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com;\n spf=pass smtp.mailfrom=nxp.com;\n dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=YJmPDJXQ; arc=fail smtp.client-ip=52.101.83.36",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=HUkwIfCup7g/hS5s64hg3B1Z9fNJr7FfPm5pRcEZ9tY=;\n b=YJmPDJXQUog52O/NxWDAL/vDAB8V8gm/3UB/sDGe4YlTZ4TQghkfW/liKMysPNIZtCx/zxRNnJjKr9JJeJOdNp9UQPXm9ERyNBRmqzDl24Cx0fcbOuxqeHhungnltvYgYLCKW7WyPHNzjZZSl9e69lHH2kLywWsD43JccgobaJiUUCvQnmGWGZr3xWQgdYFF08b/yI2YQeJQZcS3P/Ypmg07MN9STyoTAkrTDKaZcVFHLwYLqzS1Qw/ZwvPu2fiUb0XbfCx+RA4BZXbhaqn48pJGK4XDlqnDqWQ4ibKzty4LriAUZSYAzz5sBq+ug1V6R/SXdZSzg6dDrIiZsNwkag==",
        "From": "Vladimir Oltean <vladimir.oltean@nxp.com>",
        "To": "linux-phy@lists.infradead.org",
        "Cc": "Vinod Koul <vkoul@kernel.org>, Neil Armstrong <neil.armstrong@linaro.org>,\n dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org,\n linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org,\n linux-can@vger.kernel.org, linux-gpio@vger.kernel.org,\n linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-media@vger.kernel.org, linux-pci@vger.kernel.org,\n linux-renesas-soc@vger.kernel.org, linux-riscv@lists.infradead.org,\n linux-rockchip@lists.infradead.org, linux-samsung-soc@vger.kernel.org,\n linux-scsi@vger.kernel.org, linux-sunxi@lists.linux.dev,\n linux-tegra@vger.kernel.org, linux-usb@vger.kernel.org,\n netdev@vger.kernel.org, spacemit@lists.linux.dev,\n UNGLinuxDriver@microchip.com, Bjorn Helgaas <bhelgaas@google.com>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>, =?utf-8?q?Krzysztof_Wilczy=C5=84?=\n\t=?utf-8?q?ski?= <kwilczynski@kernel.org>, Rob Herring <robh@kernel.org>,\n Vignesh Raghavendra <vigneshr@ti.com>,\n Siddharth Vadapalli <s-vadapalli@ti.com>",
        "Subject": "[PATCH v6 phy-next 08/28] PCI: Remove device links to PHY",
        "Date": "Fri, 27 Mar 2026 20:46:46 +0200",
        "Message-ID": "<20260327184706.1600329-9-vladimir.oltean@nxp.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260327184706.1600329-1-vladimir.oltean@nxp.com>",
        "References": "<20260327184706.1600329-1-vladimir.oltean@nxp.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "WA2P291CA0043.POLP291.PROD.OUTLOOK.COM\n (2603:10a6:1d0:1f::28) To DU2PR04MB8584.eurprd04.prod.outlook.com\n (2603:10a6:10:2db::24)",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-tegra@vger.kernel.org",
        "List-Id": "<linux-tegra.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-tegra+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-tegra+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "DU2PR04MB8584:EE_|MRWPR04MB11287:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "0246684a-5fac-400d-ef62-08de8c317be1",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|7416014|376014|1800799024|366016|10070799003|19092799006|18002099003|56012099003|22082099003;",
        "X-Microsoft-Antispam-Message-Info": "\n\tcsj9CFEyZkWXge4t00y+91LSTMJMQ2APnc46sQiSPFlYADcOlP13CTZ8R2n3HDT/8UEkBSZL1kIEnCXmtUqDT9hlCGNP/6l08QqX55at1iJdsJcVn3mD7JjECpk7/vZ/G4/7r6cZphiHinHyus1ga11jhDFkresxu9DU+Cszu3PtA2qdYOCUsfQita6uuKIBsF3NSUjy4QGPLsKTKugmP3/jBuG9xNyG+fE4ChiIrFDUD5ba0XrOwxyZ2z7nIA7Ic25vwAOvbt80z8tXpQgqzznGoNLrwxVHOXQdUFHhIuyruY5WU0tc6sC9V0P95KuGBhVGInI7ZuBqvZrhdHbiltZnMYoPfofqUnbZcrmBZCtS3SOcaJYIC4MkGW4eKw3Pwyda5NIsyTy2UdrZKMEu/6/gIkX/yQjADHre/xEG6tLaJk5+mCPUiZheyYPEPxYuvM23PyF0Nz11eK6kHVl98/oqTp/u68AO1l1urAnl+1fX0eOWTRiClSeGX5dx6/92V8LM2ff22k58jLLe0sDLuC605qu86LUa8t1Q9jBnmKtCCbUMtqxHYZCQ9W5kYYmktFtRE3XChypfxedS2S/P3pIH7xJLnvxQ4yOXyTiRCCjaXpV1q1Mcnzo+vpIcYrBCS0JSl7NvrJs4sC2uuFRp3nHduXZ5ezQi/r+slGalRdBhhzOMsYW9iNi+kW5Q5Y6CbFVXAF2okoEiyXAdasiEZu46uougE91Lc255YBJuKKo=",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(10070799003)(19092799006)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "2",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?0jR/STTwCHry4C8AmgydSFO5wM1s?=\n\t=?utf-8?q?9UDVudxED6OI7Pn3tujxt5qXuwmPm9rRPDaXqm7U9OS7DNICls5H/FyWTrZ10TQb+?=\n\t=?utf-8?q?gwAYJeTz3ssVUiLXjKLZZpD9a1Ss3iQVazpsRziECpwG1EekIpay4n8YUneVsN3bS?=\n\t=?utf-8?q?lHQ5Xj4BaH5WpHsUPuNh/JoYqqBik+/B5CgPQI3ReLkA2VpnIHb6QtP22kW83GGFR?=\n\t=?utf-8?q?GpFIKEUI+WnGKXQ98HERLmVoTZVGrSGx4xmKniP61+F5sgA0bJaG0lUb6gIsa1c/L?=\n\t=?utf-8?q?WbHHXFyjSy75BBU6sPPUFaVxGra7kYNJtQMyLqy7m5c5U9HJHyt5BXGjGpbx+ze8P?=\n\t=?utf-8?q?eMjz/NsTG2emGjsTmbmBh5YzFvUjS/GuBrI0ReG+MVsI0585d7EOx9sXvbd0s0SY4?=\n\t=?utf-8?q?5J3lhQPezQ0qBUU8GZmlG+dufUSXNeAOH/g4kuZGK430+7yILzM7jWuH+3oFntKsU?=\n\t=?utf-8?q?wsI/h1UwSe5jL62v7GT0dvhdJca8MwoBEs3+Y74yynPpUD+VGUT0wddqp5Gd1O9Fh?=\n\t=?utf-8?q?deEWwYMvZ58hKL6f3XQgdDoE15i/vDHeFTq46TmLkbYDsEy0CHE4XUfZhKS9phBNr?=\n\t=?utf-8?q?LevnL6wak0DEJEKJ3bCcqoxR3eQcGFVuLp8wQNJ50H1gE2KE+bn3qmHCatEzlHyAj?=\n\t=?utf-8?q?2QTrT7kZporisfe3gaAwYxZgR/lzUFFxoiZdJdAwGApS+44p9xlGhkg72N8n97W6w?=\n\t=?utf-8?q?nIZkzcmgPXnQG+w6qLNvE8l1BCCzyXpNsFGiGc4QRVlRxHkdr1WTx0sUMn4ygZKHw?=\n\t=?utf-8?q?VEcJEpL7XjqlGfnEjFgiofT5NtRqnZhXSG2BTHVm9PxopXXXLRD+QzA72OWkeomuG?=\n\t=?utf-8?q?yUcmmF0EoyibXJ30eKCdvD/vaaxnQhmjs0mJl7+/Gr4upxS2zugXCVcvjBpIx+9aY?=\n\t=?utf-8?q?YV9zA4UNyZy4HOW43pqZCFDLK9pZXbQmqJJ97JJW81bCssv7vPX3hKp6Gp0Io0QB9?=\n\t=?utf-8?q?cd//pYkWIKa4fe5rezmUiKfQCZUoRbvrXsl5CE7wXKcVo8J00bOi0mls9RMgs9rBt?=\n\t=?utf-8?q?VPGe0GccgpjOPknaq8yc4x5Cm2mkjarRuehJ8FnZFmJPyHcd2MfGCeBZTST5zOGH+?=\n\t=?utf-8?q?NchyIaejlt+yFSsVuNDNVgLmr+WgmFFRMVQtGlpC2v1ET0LnK9s8fQJIWUKyWq0Bi?=\n\t=?utf-8?q?gFQKaxR8kLbPS+ihPERDqr8RuYQ+lpiptzvJipgJ2pV4mAfdBJuKQSDkChUqeu6Lc?=\n\t=?utf-8?q?5hMqa8Q8TYA7S6qMQPX6Kd+DzIintcMkFFocMoelDim8I4jpmTZH+Y4oO8UhiuMzB?=\n\t=?utf-8?q?n9q2Jux6TYxiz00b636u55yhn/NZif8FWwDolxstAU30zKOsF9ySHH3w68pQWf0eD?=\n\t=?utf-8?q?eC2wajkJ8qJdtX3LX9BGmumtxEdj3eAqVHQVO+I/he0CRhHJFcO5EjE3wnr5g7Tgd?=\n\t=?utf-8?q?WIQAfsCj4Ckr63PGMnDakh4V/7nfbrFyXoVRWYSugiRCiqn0Z0J6C4Fxab7c/uF4d?=\n\t=?utf-8?q?F2kN4HcEA0jvoYItcwlwwCsneHJKKmfPDPQphyBZ4QLYBFuDoIm85VJtU88DmzbKe?=\n\t=?utf-8?q?3JER+ueTzAackySz4UTVQ+2VqTEzovOC6jISRykiqXcyWiARkcz7hOQ8LcrJ9gLMF?=\n\t=?utf-8?q?QKdP/ZbF6cx5HihfPsx6AiQKN1Ta2NJc0gfH8+r0jx97iIoahAVO720/IbwyZ8KvL?=\n\t=?utf-8?q?HpAJK0UapSsNDw3irjho2LcP3a9ylCSO5lJmO4VOkNPjloZPQJoFjGYxDLiyf+EGl?=\n\t=?utf-8?q?9s63OENlaIbfN3cjQ?=",
        "X-MS-Exchange-AntiSpam-MessageData-1": "rOcb49fJIbFr/+wUrOH09rroj97vGxPifUs=",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 0246684a-5fac-400d-ef62-08de8c317be1",
        "X-MS-Exchange-CrossTenant-AuthSource": "DU2PR04MB8584.eurprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "27 Mar 2026 18:48:49.4066\n (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n jn+6paqi3Dc0A3oDylSnVvNOeW0UQbR82ReTiymt3ncNfhUp8F/+asZkfwInpb07fD6CeAyKBzuMhUyQie4q7w==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "MRWPR04MB11287"
    },
    "content": "This is practically a full revert of commit\n7a4db656a635 (\"PCI: dra7xx: Create functional dependency between PCIe and PHY\")\nand a partial revert of the device link pieces from commits\ndfb80534692d (\"PCI: cadence: Add generic PHY support to host and EP drivers\")\n49229238ab47 (\"PCI: keystone: Cleanup PHY handling\")\n\nThe trouble with these commits is that they dereference fields inside\nstruct phy from a consumer driver, which will become no longer possible.\n\nSince commit 987351e1ea77 (\"phy: core: Add consumer device link\nsupport\") from 2019, the PHY core also adds a device link to order PHY\nprovider and consumer suspend/resume operations. All reverted commits\nare from 2017-2018, and what they do should actually be redundant now.\n\nSigned-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>\nAcked-by: Bjorn Helgaas <bhelgaas@google.com>\nReviewed-by: Manivannan Sadhasivam <mani@kernel.org>\n---\nCc: Lorenzo Pieralisi <lpieralisi@kernel.org>\nCc: \"Krzysztof Wilczyński\" <kwilczynski@kernel.org>\nCc: Manivannan Sadhasivam <mani@kernel.org>\nCc: Rob Herring <robh@kernel.org>\nCc: Bjorn Helgaas <bhelgaas@google.com>\nCc: Vignesh Raghavendra <vigneshr@ti.com>\nCc: Siddharth Vadapalli <s-vadapalli@ti.com>\n\nv5->v6: collect tag from Manivannan Sadhasivam\nv3->v5: none\nv2->v3:\n- remove dangling set but unused phy_count local variable in\n  cdns_plat_pcie_probe()\nv1->v2:\n- fully remove struct device link **link from struct cdns_pcie and from\n  cdns_plat_pcie_probe() error path\n- collect tag from Bjorn Helgaas\n- adjust commit title\n---\n .../controller/cadence/pcie-cadence-plat.c    |  4 ---\n drivers/pci/controller/cadence/pcie-cadence.c | 16 +---------\n drivers/pci/controller/cadence/pcie-cadence.h |  2 --\n drivers/pci/controller/dwc/pci-dra7xx.c       | 16 ----------\n drivers/pci/controller/dwc/pci-keystone.c     | 31 +++----------------\n 5 files changed, 5 insertions(+), 64 deletions(-)",
    "diff": "diff --git a/drivers/pci/controller/cadence/pcie-cadence-plat.c b/drivers/pci/controller/cadence/pcie-cadence-plat.c\nindex b067a3296dd3..fc39c01b7964 100644\n--- a/drivers/pci/controller/cadence/pcie-cadence-plat.c\n+++ b/drivers/pci/controller/cadence/pcie-cadence-plat.c\n@@ -41,7 +41,6 @@ static int cdns_plat_pcie_probe(struct platform_device *pdev)\n \tstruct pci_host_bridge *bridge;\n \tstruct cdns_pcie_ep *ep;\n \tstruct cdns_pcie_rc *rc;\n-\tint phy_count;\n \tbool is_rc;\n \tint ret;\n \n@@ -122,9 +121,6 @@ static int cdns_plat_pcie_probe(struct platform_device *pdev)\n \tpm_runtime_put_sync(dev);\n \tpm_runtime_disable(dev);\n \tcdns_pcie_disable_phy(cdns_plat_pcie->pcie);\n-\tphy_count = cdns_plat_pcie->pcie->phy_count;\n-\twhile (phy_count--)\n-\t\tdevice_link_del(cdns_plat_pcie->pcie->link[phy_count]);\n \n \treturn 0;\n }\ndiff --git a/drivers/pci/controller/cadence/pcie-cadence.c b/drivers/pci/controller/cadence/pcie-cadence.c\nindex a1eada56edba..0ac980249941 100644\n--- a/drivers/pci/controller/cadence/pcie-cadence.c\n+++ b/drivers/pci/controller/cadence/pcie-cadence.c\n@@ -222,7 +222,6 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)\n \tstruct device_node *np = dev->of_node;\n \tint phy_count;\n \tstruct phy **phy;\n-\tstruct device_link **link;\n \tint i;\n \tint ret;\n \tconst char *name;\n@@ -238,10 +237,6 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)\n \tif (!phy)\n \t\treturn -ENOMEM;\n \n-\tlink = devm_kcalloc(dev, phy_count, sizeof(*link), GFP_KERNEL);\n-\tif (!link)\n-\t\treturn -ENOMEM;\n-\n \tfor (i = 0; i < phy_count; i++) {\n \t\tof_property_read_string_index(np, \"phy-names\", i, &name);\n \t\tphy[i] = devm_phy_get(dev, name);\n@@ -249,17 +244,10 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)\n \t\t\tret = PTR_ERR(phy[i]);\n \t\t\tgoto err_phy;\n \t\t}\n-\t\tlink[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS);\n-\t\tif (!link[i]) {\n-\t\t\tdevm_phy_put(dev, phy[i]);\n-\t\t\tret = -EINVAL;\n-\t\t\tgoto err_phy;\n-\t\t}\n \t}\n \n \tpcie->phy_count = phy_count;\n \tpcie->phy = phy;\n-\tpcie->link = link;\n \n \tret =  cdns_pcie_enable_phy(pcie);\n \tif (ret)\n@@ -268,10 +256,8 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)\n \treturn 0;\n \n err_phy:\n-\twhile (--i >= 0) {\n-\t\tdevice_link_del(link[i]);\n+\twhile (--i >= 0)\n \t\tdevm_phy_put(dev, phy[i]);\n-\t}\n \n \treturn ret;\n }\ndiff --git a/drivers/pci/controller/cadence/pcie-cadence.h b/drivers/pci/controller/cadence/pcie-cadence.h\nindex 443033c607d7..35b0b33bc6fb 100644\n--- a/drivers/pci/controller/cadence/pcie-cadence.h\n+++ b/drivers/pci/controller/cadence/pcie-cadence.h\n@@ -82,7 +82,6 @@ struct cdns_plat_pcie_of_data {\n  * @is_rc: tell whether the PCIe controller mode is Root Complex or Endpoint.\n  * @phy_count: number of supported PHY devices\n  * @phy: list of pointers to specific PHY control blocks\n- * @link: list of pointers to corresponding device link representations\n  * @ops: Platform-specific ops to control various inputs from Cadence PCIe\n  *       wrapper\n  * @cdns_pcie_reg_offsets: Register bank offsets for different SoC\n@@ -95,7 +94,6 @@ struct cdns_pcie {\n \tbool\t\t\t             is_rc;\n \tint\t\t\t             phy_count;\n \tstruct phy\t\t             **phy;\n-\tstruct device_link\t             **link;\n \tconst  struct cdns_pcie_ops          *ops;\n \tconst  struct cdns_plat_pcie_of_data *cdns_pcie_reg_offsets;\n };\ndiff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c\nindex d5d26229063f..b91ab37845c9 100644\n--- a/drivers/pci/controller/dwc/pci-dra7xx.c\n+++ b/drivers/pci/controller/dwc/pci-dra7xx.c\n@@ -9,7 +9,6 @@\n \n #include <linux/clk.h>\n #include <linux/delay.h>\n-#include <linux/device.h>\n #include <linux/err.h>\n #include <linux/interrupt.h>\n #include <linux/irq.h>\n@@ -683,7 +682,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev)\n \tint i;\n \tint phy_count;\n \tstruct phy **phy;\n-\tstruct device_link **link;\n \tvoid __iomem *base;\n \tstruct dw_pcie *pci;\n \tstruct dra7xx_pcie *dra7xx;\n@@ -731,10 +729,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev)\n \tif (!phy)\n \t\treturn -ENOMEM;\n \n-\tlink = devm_kcalloc(dev, phy_count, sizeof(*link), GFP_KERNEL);\n-\tif (!link)\n-\t\treturn -ENOMEM;\n-\n \tdra7xx->clk = devm_clk_get_optional(dev, NULL);\n \tif (IS_ERR(dra7xx->clk))\n \t\treturn dev_err_probe(dev, PTR_ERR(dra7xx->clk),\n@@ -749,12 +743,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev)\n \t\tphy[i] = devm_phy_get(dev, name);\n \t\tif (IS_ERR(phy[i]))\n \t\t\treturn PTR_ERR(phy[i]);\n-\n-\t\tlink[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS);\n-\t\tif (!link[i]) {\n-\t\t\tret = -EINVAL;\n-\t\t\tgoto err_link;\n-\t\t}\n \t}\n \n \tdra7xx->base = base;\n@@ -856,10 +844,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev)\n \tpm_runtime_disable(dev);\n \tdra7xx_pcie_disable_phy(dra7xx);\n \n-err_link:\n-\twhile (--i >= 0)\n-\t\tdevice_link_del(link[i]);\n-\n \treturn ret;\n }\n \ndiff --git a/drivers/pci/controller/dwc/pci-keystone.c b/drivers/pci/controller/dwc/pci-keystone.c\nindex 642e4c45eefc..07698c645e02 100644\n--- a/drivers/pci/controller/dwc/pci-keystone.c\n+++ b/drivers/pci/controller/dwc/pci-keystone.c\n@@ -130,7 +130,6 @@ struct keystone_pcie {\n \tint\t\t\tnum_lanes;\n \tu32\t\t\tnum_viewport;\n \tstruct phy\t\t**phy;\n-\tstruct device_link\t**link;\n \tstruct\t\t\tdevice_node *msi_intc_np;\n \tstruct irq_domain\t*intx_irq_domain;\n \tstruct device_node\t*np;\n@@ -1118,7 +1117,6 @@ static int ks_pcie_probe(struct platform_device *pdev)\n \tenum dw_pcie_device_mode mode;\n \tstruct dw_pcie *pci;\n \tstruct keystone_pcie *ks_pcie;\n-\tstruct device_link **link;\n \tstruct gpio_desc *gpiod;\n \tstruct resource *res;\n \tvoid __iomem *base;\n@@ -1189,31 +1187,17 @@ static int ks_pcie_probe(struct platform_device *pdev)\n \tif (!phy)\n \t\treturn -ENOMEM;\n \n-\tlink = devm_kcalloc(dev, num_lanes, sizeof(*link), GFP_KERNEL);\n-\tif (!link)\n-\t\treturn -ENOMEM;\n-\n \tfor (i = 0; i < num_lanes; i++) {\n \t\tsnprintf(name, sizeof(name), \"pcie-phy%d\", i);\n \t\tphy[i] = devm_phy_optional_get(dev, name);\n \t\tif (IS_ERR(phy[i])) {\n \t\t\tret = PTR_ERR(phy[i]);\n-\t\t\tgoto err_link;\n-\t\t}\n-\n-\t\tif (!phy[i])\n-\t\t\tcontinue;\n-\n-\t\tlink[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS);\n-\t\tif (!link[i]) {\n-\t\t\tret = -EINVAL;\n-\t\t\tgoto err_link;\n+\t\t\tgoto err;\n \t\t}\n \t}\n \n \tks_pcie->np = np;\n \tks_pcie->pci = pci;\n-\tks_pcie->link = link;\n \tks_pcie->num_lanes = num_lanes;\n \tks_pcie->phy = phy;\n \n@@ -1223,7 +1207,7 @@ static int ks_pcie_probe(struct platform_device *pdev)\n \t\tret = PTR_ERR(gpiod);\n \t\tif (ret != -EPROBE_DEFER)\n \t\t\tdev_err(dev, \"Failed to get reset GPIO\\n\");\n-\t\tgoto err_link;\n+\t\tgoto err;\n \t}\n \n \t/* Obtain references to the PHYs */\n@@ -1238,7 +1222,7 @@ static int ks_pcie_probe(struct platform_device *pdev)\n \n \tif (ret) {\n \t\tdev_err(dev, \"failed to enable phy\\n\");\n-\t\tgoto err_link;\n+\t\tgoto err;\n \t}\n \n \tplatform_set_drvdata(pdev, ks_pcie);\n@@ -1325,25 +1309,18 @@ static int ks_pcie_probe(struct platform_device *pdev)\n \tpm_runtime_disable(dev);\n \tks_pcie_disable_phy(ks_pcie);\n \n-err_link:\n-\twhile (--i >= 0 && link[i])\n-\t\tdevice_link_del(link[i]);\n-\n+err:\n \treturn ret;\n }\n \n static void ks_pcie_remove(struct platform_device *pdev)\n {\n \tstruct keystone_pcie *ks_pcie = platform_get_drvdata(pdev);\n-\tstruct device_link **link = ks_pcie->link;\n-\tint num_lanes = ks_pcie->num_lanes;\n \tstruct device *dev = &pdev->dev;\n \n \tpm_runtime_put(dev);\n \tpm_runtime_disable(dev);\n \tks_pcie_disable_phy(ks_pcie);\n-\twhile (num_lanes--)\n-\t\tdevice_link_del(link[num_lanes]);\n }\n \n static struct platform_driver ks_pcie_driver = {\n",
    "prefixes": [
        "v6",
        "phy-next",
        "08/28"
    ]
}