get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2217200,
    "url": "http://patchwork.ozlabs.org/api/patches/2217200/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260327184706.1600329-26-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-26-vladimir.oltean@nxp.com>",
    "list_archive_url": null,
    "date": "2026-03-27T18:47:03",
    "name": "[v6,phy-next,25/28] phy: include PHY provider header (1/2)",
    "commit_ref": null,
    "pull_url": null,
    "state": "handled-elsewhere",
    "archived": false,
    "hash": "f823057f5cc8aa6a483781d6e5bd3b93c8eb0e5e",
    "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-26-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/2217200/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2217200/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-tegra+bounces-13370-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=Un0p9XfT;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13370-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=\"Un0p9XfT\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.84.61",
            "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 sin.lore.kernel.org (sin.lore.kernel.org [104.64.211.4])\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 4fj8sV4cWBz1y1P\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Mar 2026 05:52:46 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id C2F41303189C\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 18:49:36 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 662E4423A63;\n\tFri, 27 Mar 2026 18:49:36 +0000 (UTC)",
            "from DB3PR0202CU003.outbound.protection.outlook.com\n (mail-northeuropeazon11010061.outbound.protection.outlook.com [52.101.84.61])\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 9350B423146;\n\tFri, 27 Mar 2026 18:49:32 +0000 (UTC)",
            "from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24)\n by GV1PR04MB9515.eurprd04.prod.outlook.com (2603:10a6:150:24::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Fri, 27 Mar\n 2026 18:49:28 +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:49:28 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774637376; cv=fail;\n b=OYtxube4WnZ579b8tvJzdAEpz0FFiVqdkZcksjsKp9CGn+0Svnqa2j6gnQ+Ym0XxoLOdFEl3WEGjvvzyen0qXoMrE7QHr8rPa6XfsRAK3yh6KyCPNDa8hyyFmF1HJ9UmhUERkl+mjjUdNUmzGo1nr8jHzf1G1iuuHGySWqMuEa0=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=QeYO8i5DhJONolb0o0qj2WXXsyPuc+grEVWrNOjpXQCZiJGmH/4zbkwrw0HwGr/YqQP0TDIEUCoz0AKtGBqrFO5rk4fPC8YJJ1qHPi6wIcfZp1+/6B/HLXJ+J0rU5o9wemkV1MhJwCiB8DauAhIc72abT5j37b+vxI2h6qUNui14tlzvzFFl6y10KsPM3h5W33vFGsuhmId/fgfFPaViXDWZ8pS/tVcrVA/mGKHNlY6oQ4SVh4dHetHy4dGjRCoKSq+3lwjrGRtGcWXuTUiWJ/TAis+Ya1H1n9kzyVO3HNri6zk4F0F+n3rfpOyZl6l+jSOpavGaEB9bDqizyRa4bA=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774637376; c=relaxed/simple;\n\tbh=6+BjiWjcmCFIkU15ESN8X7CMUbs3IIHsZrstIgkLMoM=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=nDQlbfBxl73BdjF3G8gP9UxnQKC4YBZwORRmlG6Aw/bLHZffF6ZQtIRxLN9pyB3rq6u7ur4KUGqm0entDZ5GOjxAi3d+O7kpsk+yVddlXR+S/1Tcon9yD2NJbU//B9s2FUxfTP4A/TJ+eDfnMO1+z+C4H0imCFGmTwWL0WJF56c=",
            "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=aOYx17oki4xIaJHcQeNbeKMK/ysfk8h7yq7xphJwtxE=;\n b=gh+3WrvHukg3g0mlrucwYNhs+6kcXKEAiJvG/jyC4NP+BZIT2nZWe4mhsyuMBhhSZcTTqS7OUwVXl60vBV0SyLhGulTCTmMEE3AUHbVpPeYrhuRt4KgxjYsP9/6QLZikiM9oZaw/oLk4cXmgwUcr9lEJRoRNlCG0o4gSJHhXn0YzEU4vBP+AZPAIh1HAIwKkVVa/oEq5gn7KXRGttbPJ0A5GyYagWI/TvcYVg8pVyQ1uBDpMg5BeNqNVWMBHDT8kl72ReThFXnatgjtWuXmf68zfOEdhEc0gWEXY1DIpo3ZEx0/6/KudAiI6wxTN6VeXcgL+ugknrTEXIUUkmYumvg=="
        ],
        "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=Un0p9XfT; arc=fail smtp.client-ip=52.101.84.61",
            "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=aOYx17oki4xIaJHcQeNbeKMK/ysfk8h7yq7xphJwtxE=;\n b=Un0p9XfTkTqxmswsjx10fb53g/DtzaDf6/0AzS2erSHlLoLBq41Ohogu54RdnRjM70yo7k9gFXZWmsLSXbvPshdJneuDKHQBPxnJy36WcZIDmYNjLD+Fa2bQLt9v5blNNmdyQCDk90P2LtB+8kpCllbXnZmRy6QYbZ4FMJBcsLPRR2mbAzMMhx1Hx4qNAloZjnGtb7p0WJULR7roMJfhQt/7zozOxOCMdMInmqO+K6T0YFUh7oigUCPrlWO131bPFldZCQyc5+kgL3ly5zZ6JZJb/o/orPre5gaUja67JqJ4V9rgAcAt2cGzlvSBg/7qFMU8RbEAX2T5uhk0QOqCKQ==",
        "From": "Vladimir Oltean <vladimir.oltean@nxp.com>",
        "To": "linux-phy@lists.infradead.org",
        "Cc": "Vinod Koul <vkoul@kernel.org>,\n\tNeil Armstrong <neil.armstrong@linaro.org>,\n\tdri-devel@lists.freedesktop.org,\n\tfreedreno@lists.freedesktop.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-arm-msm@vger.kernel.org,\n\tlinux-can@vger.kernel.org,\n\tlinux-gpio@vger.kernel.org,\n\tlinux-ide@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-media@vger.kernel.org,\n\tlinux-pci@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org,\n\tlinux-riscv@lists.infradead.org,\n\tlinux-rockchip@lists.infradead.org,\n\tlinux-samsung-soc@vger.kernel.org,\n\tlinux-scsi@vger.kernel.org,\n\tlinux-sunxi@lists.linux.dev,\n\tlinux-tegra@vger.kernel.org,\n\tlinux-usb@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tspacemit@lists.linux.dev,\n\tUNGLinuxDriver@microchip.com,\n\tChen-Yu Tsai <wens@kernel.org>",
        "Subject": "[PATCH v6 phy-next 25/28] phy: include PHY provider header (1/2)",
        "Date": "Fri, 27 Mar 2026 20:47:03 +0200",
        "Message-ID": "<20260327184706.1600329-26-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-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "WA2P291CA0045.POLP291.PROD.OUTLOOK.COM\n (2603:10a6:1d0:1f::19) 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_|GV1PR04MB9515:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "e6ea5e36-cdb0-4f6e-7f33-08de8c319320",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|19092799006|56012099003|18002099003|22082099003;",
        "X-Microsoft-Antispam-Message-Info": "\n\tZGNHt138Lkl5a6cmwoAMNY2xxrwG0SlLKhxzoV2TAPV8mjqu06kvXliPkG0ieVAiu5ni1ehVZTzTTW3prVnG23QhFCi68YhG5MFdKNZB9s8AHuZTMbkGprr3JvempI9oQbEsMeUHnjLylNM++QV2335nlx0fO0Vo2MUTPLneWpvBq+zD3HeUiLJF2e1EXpeFLb91woViSpuXee7MSHe4YWGYOqMqWoBgP8KQdPFcNkbZgx77k7ebioL8sMoaE/lEr85AxB5OPgU1l7Dj73dcguJ+CmxDztuIjbCDkuh/XbZ85xxeHjRzaYOFEmUU3XJB8NDWge2ikyyJwi6Kq1xL1Zo6pi97QLbQLQLDJwZgwBn4Rn7S6qF2ocZUmuftzZRkkfYfwoe+oZvE7NR7MnxAN3kNMyQyCCeREGWtONS8pIqt1YFMVoQ9ct4Ikv1iWCJj8tJj8s6gjQLzQiyYuL2ziqbqYjz/0oTBFPup9HaaK4coliTSrDqv9guC7ptjgK86xiVEHtTIIPU9s3L01FX4PdrjJBhYSYofm2pKO8kCrv9Yk3lqFWhYUl6O1KDCn103ORXAoBetf0RrZO7nY8pPTXxNZnkKUNKazBJfgStQbWbRLQogoyqRGyDtqUI4pRrBQE3Ovh7ZNsy1OJMrbuA/c1R8YtQpuQxJJ+/BoYikhS/XS1BkEQF+Zw1562aUX9Np0Osvn8P5k8v0UCWj/5YSwAzHVf8c5fzi8MZzZEGkNpk=",
        "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)(10070799003)(7416014)(376014)(366016)(1800799024)(19092799006)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "2",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n G9pypCFe5Bh/MkqOJ8JN1bgzkkY/J+1zsjTpvYi6ZSXgw9pgH7gTNtmjO9vGSpf4gLHrWwSjOrhT/Y7K32s03PwGPYOJleYFDCnjIXsniuqZAe2D+HukDodjDvoFWR52bKP+EIpq8nJoz6urymGT0eqfV0YEkHjqUQOiQLnRLw3Dmf40/cY/Adfq4xjhBgL4Ok3XJiovz7YqD5qymOa/RBew1T+PM7/ilH4cF/I7C+yL9iXIfEjL3u/5D1sPln/YUsfcNFIArJxtKz1RKzLoQltEce6315ZNCahOLEE+4YsnDLje2HcQRQO/3FRu/NoJJ+tWr51OziOIFgj4ehR2Gq8YUZiSE2EDl7MR453dJMA9L1NNyej4h2QYH4QLLHEVe4u3Jz8fZekzxygggdE29i6KoMn+6wVRdcSfKqY5nMd06JLJJ6rrjU1Lp2SPnUQhGou8d4YLi8XlpZosxTKPVnaFaTI97mZCHh/rC//dTcwTv2mB1ulZ+CHr250VbFetWRGoqanIFiM5K9al7m/7SNbQnybfF7HUW+3FKjKKlhi/oGHB8z7Af7acYbWW3U0QCi6k7jQ7hhx/6/YHN26XahbusIyp97S3GJj1HyxgQbvXfVYu4aR7knwgYZ20DvbsOvyaclA5TcRRhM7HNbXMPV0oxaWd0AkaU9ZLhRNNegkw4HEROeQYJXBYqtSAsZzQwB//nnsplreJ8OPZ1DUmrEbxTagKOHl2S7b0bLxBHqss0B+XZ5DfJ3O9zC36unTnxwtbK8ZD1EX9vAG6GVDJwqyYtEcWMyvB36u7V1k4pzonKrY+hvM+b75M0bUmKYmWSJucbeome99MGq0pZ15lWvp2E/jLWZQEORbcjy8yNgP7IFRW+ziI0/vjEDqjItRI34olJwKeoMHgeCFgUIQuhVmYdfxn1bQPbgtShoAdvSlu1mmPn7uD0fz6IJWO5MmZrnXq0pLlcYxfHxwVcxLi6aNDQH/AVKrXmehadELtE/BI01VFzIvLLxiy2kxUDiaTaqozrbZQ8EDvnN9rU12KYP7O0iwFFhKhRkWqZ9/bvXPUztM3qtIDFFr/ODwcFcl/Yi60k8f6XlwWIHx407Ui8pJwXvIJ23iZzpxq5A/To/e9JTBYifcA/wo9MV8cMLH27YXIbst8geMwUTkZ6srRXBeN8fHr+fF2ogx7V3kma57X/pDTT5u33hc3po8Bi91RsFCry1VcUReAOeIyQuvrdeyu51+adCFzOOm7N4uzW+vmI40Q/y0CShsYKMia6fwBNTS1l/FXIbnDGWYizsj4rpPD1Yv+Xs9gWVs+x4xdLkHRQnCdjD1w7Nyv1/9GJfNXHIHf7X38JBvugb/bHICxAn3Uc0JPzbFKCHd6bX8T8i6C8PTIbc1gZBjX7DTkHW8pRoVBySuz6Ig/dQEhvhYx+RvV+HtGKUj4EaC4hU4Q8omR7qADwR7oedH7GSECISmnYnAh7jLJn8LdWh9BDobjvM08udclKph3c3S2YCZBRPs928j2cSoL/lnD//jBPRDlitmbTyY3/9FVfH4X8aMxZudJ4EATpSnfszLKx3j+VMYCW+eDDkiY+Nn+4fFzFeFO5dBanw/Dm8SEyoWNM0hyumcmbqeMPwvwSvPl5LQrzthZbjPF9e29DMJ27wBiBUEIGB8q3Cj7ZI2Kv0XkkgL23QdIc5gdi0Cq/7notqe3HGH/C+E8kb1VCq9+oc6JT0KF/TqlDz1Br0fsC+og3tM0vxetdRBier9zC59MZoL72z6g9HPh4mCRTnx7XrWpp/RcaCZjnELu",
        "X-MS-Exchange-AntiSpam-MessageData-1": "UXG8FG/QI+R8mo+SdptuvTppGFQN3EQoyyg=",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n e6ea5e36-cdb0-4f6e-7f33-08de8c319320",
        "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:49:28.5485\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 YlUenaTDs621ZBOQia4Im5Car0di0Ra6DtDQIuhWRrdsbBJ4RgGpuQOEhR8tdZdf8ScnYssZK2+IPNJNoiL7xw==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "GV1PR04MB9515"
    },
    "content": "The majority of PHY drivers are PHY providers (obviously).\n\nSome are providers *and* consumers (phy-meson-axg-mipi-dphy,\nphy-meson-axg-pcie). These are the Amlogic AXG SoCs, which split the\nphysical layer into two chained PHYs: the digital layer and the analog\nlayer. The DSI or PCIe controller interacts only with the digital PHY,\npresumably for simplicity.\n\nThe rest of PHY drivers which include <linux/phy/phy.h> do so because\nthey call phy_set_bus_width(), a consumer function.\n\nSigned-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>\nAcked-by: Chen-Yu Tsai <wens@kernel.org> # allwinner\n---\nConflicts in drivers/phy/canaan/phy-k230-usb.c with commit 8787fa1da603\n(\"phy: usb: Add driver for Canaan K230 USB 2.0 PHY\").\nConflicts in drivers/phy/eswin/phy-eic7700-sata.c with commit\n67ee9ccaa34a (\"phy: eswin: Create eswin directory and add EIC7700 SATA\nPHY driver\")\n\nBoth drivers are newly added in linux-phy/next and not present in\nv7.0-rc1. The recommendation is to drop the changes in this patch and\nreadd them when merging into linux-phy/next.\n\nv3->v6: none\nv2->v3: add conflict resolution details\nv1->v2: split in two parts to pass through linux-phy mailing list\nmoderation\n---\n drivers/phy/allwinner/phy-sun4i-usb.c                 | 3 ++-\n drivers/phy/allwinner/phy-sun50i-usb3.c               | 3 ++-\n drivers/phy/allwinner/phy-sun6i-mipi-dphy.c           | 4 ++--\n drivers/phy/allwinner/phy-sun9i-usb.c                 | 3 ++-\n drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c         | 2 ++\n drivers/phy/amlogic/phy-meson-axg-mipi-pcie-analog.c  | 3 ++-\n drivers/phy/amlogic/phy-meson-axg-pcie.c              | 2 ++\n drivers/phy/amlogic/phy-meson-g12a-mipi-dphy-analog.c | 3 ++-\n drivers/phy/amlogic/phy-meson-g12a-usb2.c             | 2 ++\n drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c        | 3 ++-\n drivers/phy/amlogic/phy-meson-gxl-usb2.c              | 3 ++-\n drivers/phy/amlogic/phy-meson8-hdmi-tx.c              | 3 ++-\n drivers/phy/amlogic/phy-meson8b-usb2.c                | 3 ++-\n drivers/phy/apple/atc.c                               | 3 ++-\n drivers/phy/broadcom/phy-bcm-cygnus-pcie.c            | 3 ++-\n drivers/phy/broadcom/phy-bcm-kona-usb2.c              | 4 +++-\n drivers/phy/broadcom/phy-bcm-ns-usb2.c                | 3 ++-\n drivers/phy/broadcom/phy-bcm-ns-usb3.c                | 3 ++-\n drivers/phy/broadcom/phy-bcm-ns2-pcie.c               | 3 ++-\n drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c             | 3 ++-\n drivers/phy/broadcom/phy-bcm-sr-pcie.c                | 3 ++-\n drivers/phy/broadcom/phy-bcm-sr-usb.c                 | 3 ++-\n drivers/phy/broadcom/phy-bcm63xx-usbh.c               | 3 ++-\n drivers/phy/broadcom/phy-brcm-sata.c                  | 3 ++-\n drivers/phy/broadcom/phy-brcm-usb.c                   | 2 +-\n drivers/phy/cadence/cdns-dphy-rx.c                    | 3 ++-\n drivers/phy/cadence/cdns-dphy.c                       | 4 ++--\n drivers/phy/cadence/phy-cadence-salvo.c               | 3 ++-\n drivers/phy/cadence/phy-cadence-sierra.c              | 3 ++-\n drivers/phy/cadence/phy-cadence-torrent.c             | 3 ++-\n drivers/phy/canaan/phy-k230-usb.c                     | 3 ++-\n drivers/phy/eswin/phy-eic7700-sata.c                  | 3 ++-\n drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c        | 3 ++-\n drivers/phy/freescale/phy-fsl-imx8m-pcie.c            | 4 ++--\n drivers/phy/freescale/phy-fsl-imx8mq-usb.c            | 3 ++-\n drivers/phy/freescale/phy-fsl-imx8qm-hsio.c           | 6 +++---\n drivers/phy/freescale/phy-fsl-imx8qm-lvds-phy.c       | 3 ++-\n drivers/phy/freescale/phy-fsl-lynx-28g.c              | 3 ++-\n drivers/phy/hisilicon/phy-hi3660-usb3.c               | 3 ++-\n drivers/phy/hisilicon/phy-hi3670-pcie.c               | 3 ++-\n drivers/phy/hisilicon/phy-hi3670-usb3.c               | 3 ++-\n drivers/phy/hisilicon/phy-hi6220-usb.c                | 3 ++-\n drivers/phy/hisilicon/phy-hisi-inno-usb2.c            | 4 +++-\n drivers/phy/hisilicon/phy-histb-combphy.c             | 3 ++-\n drivers/phy/hisilicon/phy-hix5hd2-sata.c              | 3 ++-\n drivers/phy/ingenic/phy-ingenic-usb.c                 | 3 ++-\n drivers/phy/intel/phy-intel-keembay-emmc.c            | 3 ++-\n drivers/phy/intel/phy-intel-keembay-usb.c             | 3 ++-\n drivers/phy/intel/phy-intel-lgm-combo.c               | 4 ++--\n drivers/phy/intel/phy-intel-lgm-emmc.c                | 3 ++-\n drivers/phy/lantiq/phy-lantiq-rcu-usb2.c              | 3 ++-\n drivers/phy/lantiq/phy-lantiq-vrx200-pcie.c           | 4 ++--\n drivers/phy/marvell/phy-armada375-usb2.c              | 3 ++-\n drivers/phy/marvell/phy-armada38x-comphy.c            | 3 ++-\n drivers/phy/marvell/phy-berlin-sata.c                 | 3 ++-\n drivers/phy/marvell/phy-berlin-usb.c                  | 3 ++-\n drivers/phy/marvell/phy-mmp3-hsic.c                   | 3 ++-\n drivers/phy/marvell/phy-mmp3-usb.c                    | 3 ++-\n drivers/phy/marvell/phy-mvebu-a3700-comphy.c          | 3 ++-\n drivers/phy/marvell/phy-mvebu-a3700-utmi.c            | 3 ++-\n drivers/phy/marvell/phy-mvebu-cp110-comphy.c          | 3 ++-\n drivers/phy/marvell/phy-mvebu-cp110-utmi.c            | 3 ++-\n drivers/phy/marvell/phy-mvebu-sata.c                  | 3 ++-\n drivers/phy/marvell/phy-pxa-28nm-hsic.c               | 3 ++-\n drivers/phy/marvell/phy-pxa-28nm-usb2.c               | 3 ++-\n drivers/phy/marvell/phy-pxa-usb.c                     | 3 ++-\n drivers/phy/mediatek/phy-mtk-dp.c                     | 3 ++-\n drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c            | 1 -\n drivers/phy/mediatek/phy-mtk-hdmi.h                   | 3 ++-\n drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c           | 2 +-\n drivers/phy/mediatek/phy-mtk-mipi-dsi.h               | 3 ++-\n drivers/phy/mediatek/phy-mtk-pcie.c                   | 2 +-\n drivers/phy/mediatek/phy-mtk-tphy.c                   | 2 +-\n drivers/phy/mediatek/phy-mtk-ufs.c                    | 2 +-\n drivers/phy/mediatek/phy-mtk-xfi-tphy.c               | 2 +-\n drivers/phy/mediatek/phy-mtk-xsphy.c                  | 2 +-\n drivers/phy/microchip/lan966x_serdes.c                | 4 ++--\n drivers/phy/microchip/sparx5_serdes.c                 | 2 +-\n drivers/phy/motorola/phy-cpcap-usb.c                  | 3 ++-\n drivers/phy/motorola/phy-mapphone-mdm6600.c           | 4 +++-\n drivers/phy/mscc/phy-ocelot-serdes.c                  | 3 ++-\n drivers/phy/nuvoton/phy-ma35d1-usb2.c                 | 3 ++-\n drivers/phy/phy-airoha-pcie.c                         | 2 +-\n drivers/phy/phy-can-transceiver.c                     | 3 ++-\n drivers/phy/phy-core-mipi-dphy.c                      | 4 ++--\n drivers/phy/phy-core.c                                | 2 ++\n drivers/phy/phy-google-usb.c                          | 3 ++-\n drivers/phy/phy-lpc18xx-usb-otg.c                     | 3 ++-\n drivers/phy/phy-nxp-ptn3222.c                         | 3 ++-\n drivers/phy/phy-pistachio-usb.c                       | 4 ++--\n drivers/phy/phy-snps-eusb2.c                          | 2 ++\n drivers/phy/phy-xgene.c                               | 3 ++-\n 92 files changed, 177 insertions(+), 97 deletions(-)",
    "diff": "diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c\nindex e2fbf8ccf99e..9a03b5944b98 100644\n--- a/drivers/phy/allwinner/phy-sun4i-usb.c\n+++ b/drivers/phy/allwinner/phy-sun4i-usb.c\n@@ -23,7 +23,6 @@\n #include <linux/module.h>\n #include <linux/mutex.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/phy/phy-sun4i-usb.h>\n #include <linux/platform_device.h>\n #include <linux/power_supply.h>\n@@ -33,6 +32,8 @@\n #include <linux/usb/of.h>\n #include <linux/workqueue.h>\n \n+#include \"../phy-provider.h\"\n+\n #define REG_ISCR\t\t\t0x00\n #define REG_PHYCTL_A10\t\t\t0x04\n #define REG_PHYBIST\t\t\t0x08\ndiff --git a/drivers/phy/allwinner/phy-sun50i-usb3.c b/drivers/phy/allwinner/phy-sun50i-usb3.c\nindex 363f9a0df503..d38b26e4bf95 100644\n--- a/drivers/phy/allwinner/phy-sun50i-usb3.c\n+++ b/drivers/phy/allwinner/phy-sun50i-usb3.c\n@@ -18,10 +18,11 @@\n #include <linux/io.h>\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n /* Interface Status and Control Registers */\n #define SUNXI_ISCR\t\t\t0x00\n #define SUNXI_PIPE_CLOCK_CONTROL\t0x14\ndiff --git a/drivers/phy/allwinner/phy-sun6i-mipi-dphy.c b/drivers/phy/allwinner/phy-sun6i-mipi-dphy.c\nindex 36eab95271b2..e96162d078eb 100644\n--- a/drivers/phy/allwinner/phy-sun6i-mipi-dphy.c\n+++ b/drivers/phy/allwinner/phy-sun6i-mipi-dphy.c\n@@ -10,12 +10,12 @@\n #include <linux/clk.h>\n #include <linux/module.h>\n #include <linux/of_address.h>\n+#include <linux/phy/phy-mipi-dphy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n \n-#include <linux/phy/phy.h>\n-#include <linux/phy/phy-mipi-dphy.h>\n+#include \"../phy-provider.h\"\n \n #define SUN6I_DPHY_GCTL_REG\t\t0x00\n #define SUN6I_DPHY_GCTL_LANE_NUM(n)\t\t((((n) - 1) & 3) << 4)\ndiff --git a/drivers/phy/allwinner/phy-sun9i-usb.c b/drivers/phy/allwinner/phy-sun9i-usb.c\nindex 2f9e60c188b8..f667f3f4b307 100644\n--- a/drivers/phy/allwinner/phy-sun9i-usb.c\n+++ b/drivers/phy/allwinner/phy-sun9i-usb.c\n@@ -15,11 +15,12 @@\n #include <linux/err.h>\n #include <linux/io.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/usb/of.h>\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n #define SUNXI_AHB_INCR16_BURST_EN\tBIT(11)\n #define SUNXI_AHB_INCR8_BURST_EN\tBIT(10)\n #define SUNXI_AHB_INCR4_BURST_EN\tBIT(9)\ndiff --git a/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c b/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c\nindex c4a56b9d3289..60d17973a38f 100644\n--- a/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c\n+++ b/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c\n@@ -20,6 +20,8 @@\n #include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n /* [31] soft reset for the phy.\n  *\t\t1: reset. 0: dessert the reset.\n  * [30] clock lane soft reset.\ndiff --git a/drivers/phy/amlogic/phy-meson-axg-mipi-pcie-analog.c b/drivers/phy/amlogic/phy-meson-axg-mipi-pcie-analog.c\nindex c0ba2852dbb8..21e8e2a5563a 100644\n--- a/drivers/phy/amlogic/phy-meson-axg-mipi-pcie-analog.c\n+++ b/drivers/phy/amlogic/phy-meson-axg-mipi-pcie-analog.c\n@@ -7,7 +7,6 @@\n #include <linux/bitfield.h>\n #include <linux/bitops.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/regmap.h>\n #include <linux/delay.h>\n #include <linux/mfd/syscon.h>\n@@ -15,6 +14,8 @@\n #include <linux/platform_device.h>\n #include <dt-bindings/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n+\n #define HHI_MIPI_CNTL0 0x00\n #define\t\tHHI_MIPI_CNTL0_COMMON_BLOCK\tGENMASK(31, 28)\n #define\t\tHHI_MIPI_CNTL0_ENABLE\t\tBIT(29)\ndiff --git a/drivers/phy/amlogic/phy-meson-axg-pcie.c b/drivers/phy/amlogic/phy-meson-axg-pcie.c\nindex 14dee73f9cb5..c4d9faf3a805 100644\n--- a/drivers/phy/amlogic/phy-meson-axg-pcie.c\n+++ b/drivers/phy/amlogic/phy-meson-axg-pcie.c\n@@ -13,6 +13,8 @@\n #include <linux/bitfield.h>\n #include <dt-bindings/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n+\n #define MESON_PCIE_REG0 0x00\n #define\t\tMESON_PCIE_COMMON_CLK\tBIT(4)\n #define\t\tMESON_PCIE_PORT_SEL\tGENMASK(3, 2)\ndiff --git a/drivers/phy/amlogic/phy-meson-g12a-mipi-dphy-analog.c b/drivers/phy/amlogic/phy-meson-g12a-mipi-dphy-analog.c\nindex 46e5f7e7eb6c..11626f4528dd 100644\n--- a/drivers/phy/amlogic/phy-meson-g12a-mipi-dphy-analog.c\n+++ b/drivers/phy/amlogic/phy-meson-g12a-mipi-dphy-analog.c\n@@ -9,7 +9,6 @@\n #include <linux/bitfield.h>\n #include <linux/bitops.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/regmap.h>\n #include <linux/delay.h>\n #include <linux/mfd/syscon.h>\n@@ -17,6 +16,8 @@\n #include <linux/platform_device.h>\n #include <dt-bindings/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n+\n #define HHI_MIPI_CNTL0 0x00\n #define\t\tHHI_MIPI_CNTL0_DIF_REF_CTL1\tGENMASK(31, 16)\n #define\t\tHHI_MIPI_CNTL0_DIF_REF_CTL0\tGENMASK(15, 0)\ndiff --git a/drivers/phy/amlogic/phy-meson-g12a-usb2.c b/drivers/phy/amlogic/phy-meson-g12a-usb2.c\nindex 66bf0b7ef8ed..6e599b933153 100644\n--- a/drivers/phy/amlogic/phy-meson-g12a-usb2.c\n+++ b/drivers/phy/amlogic/phy-meson-g12a-usb2.c\n@@ -20,6 +20,8 @@\n #include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PHY_CTRL_R0\t\t\t\t\t\t0x0\n #define PHY_CTRL_R1\t\t\t\t\t\t0x4\n #define PHY_CTRL_R2\t\t\t\t\t\t0x8\ndiff --git a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c\nindex 5468831d6ab9..60e9c3c1c449 100644\n--- a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c\n+++ b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c\n@@ -12,12 +12,13 @@\n #include <linux/clk.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n #include <linux/platform_device.h>\n #include <dt-bindings/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PHY_R0\t\t\t\t\t\t\t0x00\n \t#define PHY_R0_PCIE_POWER_STATE\t\t\t\tGENMASK(4, 0)\n \t#define PHY_R0_PCIE_USB3_SWITCH\t\t\t\tGENMASK(6, 5)\ndiff --git a/drivers/phy/amlogic/phy-meson-gxl-usb2.c b/drivers/phy/amlogic/phy-meson-gxl-usb2.c\nindex 6b390304f723..b8d5b12cffc8 100644\n--- a/drivers/phy/amlogic/phy-meson-gxl-usb2.c\n+++ b/drivers/phy/amlogic/phy-meson-gxl-usb2.c\n@@ -12,9 +12,10 @@\n #include <linux/module.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n /* bits [31:27] are read-only */\n #define U2P_R0\t\t\t\t\t\t\t0x0\n \t#define U2P_R0_BYPASS_SEL\t\t\t\tBIT(0)\ndiff --git a/drivers/phy/amlogic/phy-meson8-hdmi-tx.c b/drivers/phy/amlogic/phy-meson8-hdmi-tx.c\nindex 2617f7f6c2ec..2a8c93dcda7e 100644\n--- a/drivers/phy/amlogic/phy-meson8-hdmi-tx.c\n+++ b/drivers/phy/amlogic/phy-meson8-hdmi-tx.c\n@@ -11,11 +11,12 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/property.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /*\n  * Unfortunately there is no detailed documentation available for the\n  * HHI_HDMI_PHY_CNTL0 register. CTL0 and CTL1 is all we know about.\ndiff --git a/drivers/phy/amlogic/phy-meson8b-usb2.c b/drivers/phy/amlogic/phy-meson8b-usb2.c\nindex a553231a9f7c..b288868b2d9e 100644\n--- a/drivers/phy/amlogic/phy-meson8b-usb2.c\n+++ b/drivers/phy/amlogic/phy-meson8b-usb2.c\n@@ -14,10 +14,11 @@\n #include <linux/property.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/usb/of.h>\n \n+#include \"../phy-provider.h\"\n+\n #define REG_CONFIG\t\t\t\t\t0x00\n \t#define REG_CONFIG_CLK_EN\t\t\tBIT(0)\n \t#define REG_CONFIG_CLK_SEL_MASK\t\t\tGENMASK(3, 1)\ndiff --git a/drivers/phy/apple/atc.c b/drivers/phy/apple/atc.c\nindex e9d106f135c5..de9453d13c0e 100644\n--- a/drivers/phy/apple/atc.c\n+++ b/drivers/phy/apple/atc.c\n@@ -32,7 +32,6 @@\n #include <linux/mutex.h>\n #include <linux/of.h>\n #include <linux/of_device.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/reset-controller.h>\n #include <linux/soc/apple/tunable.h>\n@@ -44,6 +43,8 @@\n #include <linux/usb/typec_mux.h>\n #include <linux/usb/typec_tbt.h>\n \n+#include \"../phy-provider.h\"\n+\n #define AUSPLL_FSM_CTRL 0x1014\n \n #define AUSPLL_APB_CMD_OVERRIDE 0x2000\ndiff --git a/drivers/phy/broadcom/phy-bcm-cygnus-pcie.c b/drivers/phy/broadcom/phy-bcm-cygnus-pcie.c\nindex 462c61a24ec5..e10274f53c10 100644\n--- a/drivers/phy/broadcom/phy-bcm-cygnus-pcie.c\n+++ b/drivers/phy/broadcom/phy-bcm-cygnus-pcie.c\n@@ -5,9 +5,10 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PCIE_CFG_OFFSET         0x00\n #define PCIE1_PHY_IDDQ_SHIFT    10\n #define PCIE0_PHY_IDDQ_SHIFT    2\ndiff --git a/drivers/phy/broadcom/phy-bcm-kona-usb2.c b/drivers/phy/broadcom/phy-bcm-kona-usb2.c\nindex e9cc5f2cb89a..356f42a08941 100644\n--- a/drivers/phy/broadcom/phy-bcm-kona-usb2.c\n+++ b/drivers/phy/broadcom/phy-bcm-kona-usb2.c\n@@ -12,9 +12,11 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n+#include <linux/phy/phy.h> /* for phy_set_bus_width() */\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define OTGCTL\t\t\t(0)\n #define OTGCTL_OTGSTAT2\t\tBIT(31)\n #define OTGCTL_OTGSTAT1\t\tBIT(30)\ndiff --git a/drivers/phy/broadcom/phy-bcm-ns-usb2.c b/drivers/phy/broadcom/phy-bcm-ns-usb2.c\nindex c5d35031b398..95331d08b367 100644\n--- a/drivers/phy/broadcom/phy-bcm-ns-usb2.c\n+++ b/drivers/phy/broadcom/phy-bcm-ns-usb2.c\n@@ -13,11 +13,12 @@\n #include <linux/module.h>\n #include <linux/of_address.h>\n #include <linux/of_platform.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/slab.h>\n \n+#include \"../phy-provider.h\"\n+\n struct bcm_ns_usb2 {\n \tstruct device *dev;\n \tstruct clk *ref_clk;\ndiff --git a/drivers/phy/broadcom/phy-bcm-ns-usb3.c b/drivers/phy/broadcom/phy-bcm-ns-usb3.c\nindex 6e56498d0644..f2aa4014f197 100644\n--- a/drivers/phy/broadcom/phy-bcm-ns-usb3.c\n+++ b/drivers/phy/broadcom/phy-bcm-ns-usb3.c\n@@ -19,10 +19,11 @@\n #include <linux/of.h>\n #include <linux/of_address.h>\n #include <linux/platform_device.h>\n-#include <linux/phy/phy.h>\n #include <linux/property.h>\n #include <linux/slab.h>\n \n+#include \"../phy-provider.h\"\n+\n #define BCM_NS_USB3_PHY_BASE_ADDR_REG\t0x1f\n #define BCM_NS_USB3_PHY_PLL30_BLOCK\t0x8000\n #define BCM_NS_USB3_PHY_TX_PMD_BLOCK\t0x8040\ndiff --git a/drivers/phy/broadcom/phy-bcm-ns2-pcie.c b/drivers/phy/broadcom/phy-bcm-ns2-pcie.c\nindex 67a6ae5ecba0..9c2c603426ca 100644\n--- a/drivers/phy/broadcom/phy-bcm-ns2-pcie.c\n+++ b/drivers/phy/broadcom/phy-bcm-ns2-pcie.c\n@@ -6,7 +6,8 @@\n #include <linux/of_mdio.h>\n #include <linux/mdio.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n+\n+#include \"../phy-provider.h\"\n \n #define BLK_ADDR_REG_OFFSET\t0x1f\n #define PLL_AFE1_100MHZ_BLK\t0x2100\ndiff --git a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c\nindex 8473fa574529..7543211fb998 100644\n--- a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c\n+++ b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c\n@@ -14,12 +14,13 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/slab.h>\n #include <linux/workqueue.h>\n \n+#include \"../phy-provider.h\"\n+\n #define ICFG_DRD_AFE\t\t0x0\n #define ICFG_MISC_STAT\t\t0x18\n #define ICFG_DRD_P0CTL\t\t0x1C\ndiff --git a/drivers/phy/broadcom/phy-bcm-sr-pcie.c b/drivers/phy/broadcom/phy-bcm-sr-pcie.c\nindex 706e1d83b4ce..8f4e44d1dea6 100644\n--- a/drivers/phy/broadcom/phy-bcm-sr-pcie.c\n+++ b/drivers/phy/broadcom/phy-bcm-sr-pcie.c\n@@ -9,10 +9,11 @@\n #include <linux/module.h>\n #include <linux/mfd/syscon.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* we have up to 8 PAXB based RC. The 9th one is always PAXC */\n #define SR_NR_PCIE_PHYS               9\n #define SR_PAXC_PHY_IDX               (SR_NR_PCIE_PHYS - 1)\ndiff --git a/drivers/phy/broadcom/phy-bcm-sr-usb.c b/drivers/phy/broadcom/phy-bcm-sr-usb.c\nindex 6bcfe83609c8..4c863738bdca 100644\n--- a/drivers/phy/broadcom/phy-bcm-sr-usb.c\n+++ b/drivers/phy/broadcom/phy-bcm-sr-usb.c\n@@ -8,9 +8,10 @@\n #include <linux/iopoll.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n enum bcm_usb_phy_version {\n \tBCM_SR_USB_COMBO_PHY,\n \tBCM_SR_USB_HS_PHY,\ndiff --git a/drivers/phy/broadcom/phy-bcm63xx-usbh.c b/drivers/phy/broadcom/phy-bcm63xx-usbh.c\nindex 29fd6791bae6..63099da486c6 100644\n--- a/drivers/phy/broadcom/phy-bcm63xx-usbh.c\n+++ b/drivers/phy/broadcom/phy-bcm63xx-usbh.c\n@@ -18,10 +18,11 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n /* USBH control register offsets */\n enum usbh_regs {\n \tUSBH_BRT_CONTROL1 = 0,\ndiff --git a/drivers/phy/broadcom/phy-brcm-sata.c b/drivers/phy/broadcom/phy-brcm-sata.c\nindex fb69e21a0292..ab826f9c8678 100644\n--- a/drivers/phy/broadcom/phy-brcm-sata.c\n+++ b/drivers/phy/broadcom/phy-brcm-sata.c\n@@ -13,9 +13,10 @@\n #include <linux/kernel.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define SATA_PCB_BANK_OFFSET\t\t\t\t0x23c\n #define SATA_PCB_REG_OFFSET(ofs)\t\t\t((ofs) * 4)\n \ndiff --git a/drivers/phy/broadcom/phy-brcm-usb.c b/drivers/phy/broadcom/phy-brcm-usb.c\nindex 59d756a10d6c..d660a0ed03ee 100644\n--- a/drivers/phy/broadcom/phy-brcm-usb.c\n+++ b/drivers/phy/broadcom/phy-brcm-usb.c\n@@ -11,7 +11,6 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/interrupt.h>\n #include <linux/soc/brcmstb/brcmstb.h>\n@@ -19,6 +18,7 @@\n #include <linux/mfd/syscon.h>\n #include <linux/suspend.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-brcm-usb-init.h\"\n \n static DEFINE_MUTEX(sysfs_lock);\ndiff --git a/drivers/phy/cadence/cdns-dphy-rx.c b/drivers/phy/cadence/cdns-dphy-rx.c\nindex 3ac80141189c..7097ac17443f 100644\n--- a/drivers/phy/cadence/cdns-dphy-rx.c\n+++ b/drivers/phy/cadence/cdns-dphy-rx.c\n@@ -9,12 +9,13 @@\n #include <linux/iopoll.h>\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/phy/phy-mipi-dphy.h>\n #include <linux/platform_device.h>\n #include <linux/pm_runtime.h>\n #include <linux/sys_soc.h>\n \n+#include \"../phy-provider.h\"\n+\n #define DPHY_PMA_CMN(reg)\t\t(reg)\n #define DPHY_PCS(reg)\t\t\t(0xb00 + (reg))\n #define DPHY_ISO(reg)\t\t\t(0xc00 + (reg))\ndiff --git a/drivers/phy/cadence/cdns-dphy.c b/drivers/phy/cadence/cdns-dphy.c\nindex d5b0e516b93c..40bc18405082 100644\n--- a/drivers/phy/cadence/cdns-dphy.c\n+++ b/drivers/phy/cadence/cdns-dphy.c\n@@ -10,11 +10,11 @@\n #include <linux/iopoll.h>\n #include <linux/module.h>\n #include <linux/of.h>\n+#include <linux/phy/phy-mipi-dphy.h>\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n \n-#include <linux/phy/phy.h>\n-#include <linux/phy/phy-mipi-dphy.h>\n+#include \"../phy-provider.h\"\n \n #define REG_WAKEUP_TIME_NS\t\t800\n #define DPHY_PLL_RATE_HZ\t\t108000000\ndiff --git a/drivers/phy/cadence/phy-cadence-salvo.c b/drivers/phy/cadence/phy-cadence-salvo.c\nindex f461585c84c6..8ed74db50dfa 100644\n--- a/drivers/phy/cadence/phy-cadence-salvo.c\n+++ b/drivers/phy/cadence/phy-cadence-salvo.c\n@@ -10,12 +10,13 @@\n #include <linux/clk.h>\n #include <linux/io.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/delay.h>\n #include <linux/of.h>\n #include <linux/of_platform.h>\n \n+#include \"../phy-provider.h\"\n+\n #define USB3_PHY_OFFSET\t\t\t0x0\n #define USB2_PHY_OFFSET\t\t\t0x38000\n /* USB3 PHY register definition */\ndiff --git a/drivers/phy/cadence/phy-cadence-sierra.c b/drivers/phy/cadence/phy-cadence-sierra.c\nindex 92ab1a31646a..fb44b8fc5e3f 100644\n--- a/drivers/phy/cadence/phy-cadence-sierra.c\n+++ b/drivers/phy/cadence/phy-cadence-sierra.c\n@@ -12,7 +12,6 @@\n #include <linux/err.h>\n #include <linux/io.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/pm_runtime.h>\n #include <linux/regmap.h>\n@@ -23,6 +22,8 @@\n #include <dt-bindings/phy/phy.h>\n #include <dt-bindings/phy/phy-cadence.h>\n \n+#include \"../phy-provider.h\"\n+\n #define NUM_SSC_MODE\t\t3\n #define NUM_PHY_TYPE\t\t5\n \ndiff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadence/phy-cadence-torrent.c\nindex d446a0f97688..974e12e34ae1 100644\n--- a/drivers/phy/cadence/phy-cadence-torrent.c\n+++ b/drivers/phy/cadence/phy-cadence-torrent.c\n@@ -17,11 +17,12 @@\n #include <linux/kernel.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n #define REF_CLK_19_2MHZ\t\t19200000\n #define REF_CLK_25MHZ\t\t25000000\n #define REF_CLK_100MHZ\t\t100000000\ndiff --git a/drivers/phy/canaan/phy-k230-usb.c b/drivers/phy/canaan/phy-k230-usb.c\nindex 52dad35fc6cf..4305763a5456 100644\n--- a/drivers/phy/canaan/phy-k230-usb.c\n+++ b/drivers/phy/canaan/phy-k230-usb.c\n@@ -8,9 +8,10 @@\n #include <linux/bitfield.h>\n #include <linux/io.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define MAX_PHYS\t\t2\n \n /* Register offsets within the HiSysConfig system controller */\ndiff --git a/drivers/phy/eswin/phy-eic7700-sata.c b/drivers/phy/eswin/phy-eic7700-sata.c\nindex c33653d48daa..387d5c8c11d9 100644\n--- a/drivers/phy/eswin/phy-eic7700-sata.c\n+++ b/drivers/phy/eswin/phy-eic7700-sata.c\n@@ -14,11 +14,12 @@\n #include <linux/io.h>\n #include <linux/kernel.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n #define SATA_AXI_LP_CTRL\t\t\t0x08\n #define SATA_MPLL_CTRL\t\t\t\t0x20\n #define SATA_P0_PHY_STAT\t\t\t0x24\ndiff --git a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c\nindex 0928a526e2ab..314aa227f753 100644\n--- a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c\n+++ b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c\n@@ -16,11 +16,12 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_platform.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <dt-bindings/firmware/imx/rsrc.h>\n \n+#include \"../phy-provider.h\"\n+\n /* Control and Status Registers(CSR) */\n #define PHY_CTRL\t\t\t0x00\n #define  CCM_MASK\t\t\tGENMASK(7, 5)\ndiff --git a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c\nindex 7f5600103a00..6197cfc9b9a4 100644\n--- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c\n+++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c\n@@ -3,6 +3,7 @@\n  * Copyright 2021 NXP\n  */\n \n+#include <dt-bindings/phy/phy-imx8-pcie.h>\n #include <linux/bitfield.h>\n #include <linux/clk.h>\n #include <linux/delay.h>\n@@ -12,12 +13,11 @@\n #include <linux/mfd/syscon/imx7-iomuxc-gpr.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n \n-#include <dt-bindings/phy/phy-imx8-pcie.h>\n+#include \"../phy-provider.h\"\n \n #define IMX8MM_PCIE_PHY_CMN_REG061\t0x184\n #define  ANA_PLL_CLK_OUT_TO_EXT_IO_EN\tBIT(0)\ndiff --git a/drivers/phy/freescale/phy-fsl-imx8mq-usb.c b/drivers/phy/freescale/phy-fsl-imx8mq-usb.c\nindex b05d80e849a1..9b938b446996 100644\n--- a/drivers/phy/freescale/phy-fsl-imx8mq-usb.c\n+++ b/drivers/phy/freescale/phy-fsl-imx8mq-usb.c\n@@ -7,11 +7,12 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regulator/consumer.h>\n #include <linux/usb/typec_mux.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PHY_CTRL0\t\t\t0x0\n #define PHY_CTRL0_REF_SSP_EN\t\tBIT(2)\n #define PHY_CTRL0_FSEL_MASK\t\tGENMASK(10, 5)\ndiff --git a/drivers/phy/freescale/phy-fsl-imx8qm-hsio.c b/drivers/phy/freescale/phy-fsl-imx8qm-hsio.c\nindex 279b8ac7822d..b274fd24b59a 100644\n--- a/drivers/phy/freescale/phy-fsl-imx8qm-hsio.c\n+++ b/drivers/phy/freescale/phy-fsl-imx8qm-hsio.c\n@@ -3,6 +3,8 @@\n  * Copyright 2024 NXP\n  */\n \n+#include <dt-bindings/phy/phy.h>\n+#include <dt-bindings/phy/phy-imx8-pcie.h>\n #include <linux/bitfield.h>\n #include <linux/clk.h>\n #include <linux/delay.h>\n@@ -11,13 +13,11 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/pci_regs.h>\n-#include <linux/phy/phy.h>\n #include <linux/phy/pcie.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n-#include <dt-bindings/phy/phy.h>\n-#include <dt-bindings/phy/phy-imx8-pcie.h>\n+#include \"../phy-provider.h\"\n \n #define MAX_NUM_LANE\t3\n #define LANE_NUM_CLKS\t5\ndiff --git a/drivers/phy/freescale/phy-fsl-imx8qm-lvds-phy.c b/drivers/phy/freescale/phy-fsl-imx8qm-lvds-phy.c\nindex ece357443521..55c23bef5121 100644\n--- a/drivers/phy/freescale/phy-fsl-imx8qm-lvds-phy.c\n+++ b/drivers/phy/freescale/phy-fsl-imx8qm-lvds-phy.c\n@@ -9,12 +9,13 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/pm_runtime.h>\n #include <linux/regmap.h>\n #include <linux/units.h>\n \n+#include \"../phy-provider.h\"\n+\n #define REG_SET\t\t0x4\n #define REG_CLR\t\t0x8\n \ndiff --git a/drivers/phy/freescale/phy-fsl-lynx-28g.c b/drivers/phy/freescale/phy-fsl-lynx-28g.c\nindex 2b0fd95ba62f..c4df5966ddfb 100644\n--- a/drivers/phy/freescale/phy-fsl-lynx-28g.c\n+++ b/drivers/phy/freescale/phy-fsl-lynx-28g.c\n@@ -5,10 +5,11 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/workqueue.h>\n \n+#include \"../phy-provider.h\"\n+\n #define LYNX_28G_NUM_LANE\t\t\t8\n #define LYNX_28G_NUM_PLL\t\t\t2\n \ndiff --git a/drivers/phy/hisilicon/phy-hi3660-usb3.c b/drivers/phy/hisilicon/phy-hi3660-usb3.c\nindex e2a09d67faed..b66ff3be1aed 100644\n--- a/drivers/phy/hisilicon/phy-hi3660-usb3.c\n+++ b/drivers/phy/hisilicon/phy-hi3660-usb3.c\n@@ -12,10 +12,11 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PERI_CRG_CLK_EN4\t\t\t0x40\n #define PERI_CRG_CLK_DIS4\t\t\t0x44\n #define GT_CLK_USB3OTG_REF\t\t\tBIT(0)\ndiff --git a/drivers/phy/hisilicon/phy-hi3670-pcie.c b/drivers/phy/hisilicon/phy-hi3670-pcie.c\nindex dbc7dcce682b..b7cf44078e0d 100644\n--- a/drivers/phy/hisilicon/phy-hi3670-pcie.c\n+++ b/drivers/phy/hisilicon/phy-hi3670-pcie.c\n@@ -26,11 +26,12 @@\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/types.h>\n \n+#include \"../phy-provider.h\"\n+\n #define AXI_CLK_FREQ\t\t\t\t207500000\n #define REF_CLK_FREQ\t\t\t\t100000000\n \ndiff --git a/drivers/phy/hisilicon/phy-hi3670-usb3.c b/drivers/phy/hisilicon/phy-hi3670-usb3.c\nindex 40d3cf128b44..004c51500597 100644\n--- a/drivers/phy/hisilicon/phy-hi3670-usb3.c\n+++ b/drivers/phy/hisilicon/phy-hi3670-usb3.c\n@@ -14,10 +14,11 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n #define SCTRL_SCDEEPSLEEPED\t\t(0x0)\n #define USB_CLK_SELECTED\t\tBIT(20)\n \ndiff --git a/drivers/phy/hisilicon/phy-hi6220-usb.c b/drivers/phy/hisilicon/phy-hi6220-usb.c\nindex 22d8d8a8dabe..1b5a2d3e3e44 100644\n--- a/drivers/phy/hisilicon/phy-hi6220-usb.c\n+++ b/drivers/phy/hisilicon/phy-hi6220-usb.c\n@@ -8,9 +8,10 @@\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n #include <linux/platform_device.h>\n-#include <linux/phy/phy.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n #define SC_PERIPH_CTRL4\t\t\t0x00c\n \n #define CTRL4_PICO_SIDDQ\t\tBIT(6)\ndiff --git a/drivers/phy/hisilicon/phy-hisi-inno-usb2.c b/drivers/phy/hisilicon/phy-hisi-inno-usb2.c\nindex c843923252aa..4a4701d0fc9c 100644\n--- a/drivers/phy/hisilicon/phy-hisi-inno-usb2.c\n+++ b/drivers/phy/hisilicon/phy-hisi-inno-usb2.c\n@@ -10,10 +10,12 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n+#include <linux/phy/phy.h> /* for phy_set_bus_width() */\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n #define INNO_PHY_PORT_NUM\t2\n #define REF_CLK_STABLE_TIME\t100\t/* unit:us */\n #define UTMI_CLK_STABLE_TIME\t200\t/* unit:us */\ndiff --git a/drivers/phy/hisilicon/phy-histb-combphy.c b/drivers/phy/hisilicon/phy-histb-combphy.c\nindex 9dd0bd00b4e4..9b6ed1644d74 100644\n--- a/drivers/phy/hisilicon/phy-histb-combphy.c\n+++ b/drivers/phy/hisilicon/phy-histb-combphy.c\n@@ -14,12 +14,13 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n #include <dt-bindings/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n+\n #define COMBPHY_MODE_PCIE\t\t0\n #define COMBPHY_MODE_USB3\t\t1\n #define COMBPHY_MODE_SATA\t\t2\ndiff --git a/drivers/phy/hisilicon/phy-hix5hd2-sata.c b/drivers/phy/hisilicon/phy-hix5hd2-sata.c\nindex 1b26ddb4c8a7..57994f69417d 100644\n--- a/drivers/phy/hisilicon/phy-hix5hd2-sata.c\n+++ b/drivers/phy/hisilicon/phy-hix5hd2-sata.c\n@@ -9,10 +9,11 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n #define SATA_PHY0_CTLL\t\t0xa0\n #define MPLL_MULTIPLIER_SHIFT\t1\n #define MPLL_MULTIPLIER_MASK\t0xfe\ndiff --git a/drivers/phy/ingenic/phy-ingenic-usb.c b/drivers/phy/ingenic/phy-ingenic-usb.c\nindex 7e62d46850fd..d656f97729c4 100644\n--- a/drivers/phy/ingenic/phy-ingenic-usb.c\n+++ b/drivers/phy/ingenic/phy-ingenic-usb.c\n@@ -12,10 +12,11 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regulator/consumer.h>\n \n+#include \"../phy-provider.h\"\n+\n /* OTGPHY register offsets */\n #define REG_USBPCR_OFFSET\t\t\t0x00\n #define REG_USBRDT_OFFSET\t\t\t0x04\ndiff --git a/drivers/phy/intel/phy-intel-keembay-emmc.c b/drivers/phy/intel/phy-intel-keembay-emmc.c\nindex 0eb11ac7c2e2..fdba1d050439 100644\n--- a/drivers/phy/intel/phy-intel-keembay-emmc.c\n+++ b/drivers/phy/intel/phy-intel-keembay-emmc.c\n@@ -11,10 +11,11 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* eMMC/SD/SDIO core/phy configuration registers */\n #define PHY_CFG_0\t\t0x24\n #define  SEL_DLY_TXCLK_MASK\tBIT(29)\ndiff --git a/drivers/phy/intel/phy-intel-keembay-usb.c b/drivers/phy/intel/phy-intel-keembay-usb.c\nindex c8b05f7b2445..4e690f3eb560 100644\n--- a/drivers/phy/intel/phy-intel-keembay-usb.c\n+++ b/drivers/phy/intel/phy-intel-keembay-usb.c\n@@ -10,10 +10,11 @@\n #include <linux/delay.h>\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* USS (USB Subsystem) clock control registers */\n #define USS_CPR_CLK_EN\t\t0x00\n #define USS_CPR_CLK_SET\t\t0x04\ndiff --git a/drivers/phy/intel/phy-intel-lgm-combo.c b/drivers/phy/intel/phy-intel-lgm-combo.c\nindex 9ee3cf61cdd0..2a8b0caa0e59 100644\n--- a/drivers/phy/intel/phy-intel-lgm-combo.c\n+++ b/drivers/phy/intel/phy-intel-lgm-combo.c\n@@ -5,6 +5,7 @@\n  * Copyright (C) 2019-2020 Intel Corporation.\n  */\n \n+#include <dt-bindings/phy/phy.h>\n #include <linux/bitfield.h>\n #include <linux/clk.h>\n #include <linux/iopoll.h>\n@@ -12,12 +13,11 @@\n #include <linux/module.h>\n #include <linux/mutex.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n \n-#include <dt-bindings/phy/phy.h>\n+#include \"../phy-provider.h\"\n \n #define PCIE_PHY_GEN_CTRL\t0x00\n #define PCIE_PHY_CLK_PAD\tBIT(17)\ndiff --git a/drivers/phy/intel/phy-intel-lgm-emmc.c b/drivers/phy/intel/phy-intel-lgm-emmc.c\nindex 703aeb122541..479a530dd630 100644\n--- a/drivers/phy/intel/phy-intel-lgm-emmc.c\n+++ b/drivers/phy/intel/phy-intel-lgm-emmc.c\n@@ -11,10 +11,11 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* eMMC phy register definitions */\n #define EMMC_PHYCTRL0_REG\t0xa8\n #define DR_TY_MASK\t\tGENMASK(30, 28)\ndiff --git a/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c b/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c\nindex 82f1ffc0b0ad..eb6c201f7c87 100644\n--- a/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c\n+++ b/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c\n@@ -12,12 +12,13 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/property.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n /* Transmitter HS Pre-Emphasis Enable */\n #define RCU_CFG1_TX_PEE\t\tBIT(0)\n /* Disconnect Threshold */\ndiff --git a/drivers/phy/lantiq/phy-lantiq-vrx200-pcie.c b/drivers/phy/lantiq/phy-lantiq-vrx200-pcie.c\nindex 406a87c8b759..70da76399e30 100644\n--- a/drivers/phy/lantiq/phy-lantiq-vrx200-pcie.c\n+++ b/drivers/phy/lantiq/phy-lantiq-vrx200-pcie.c\n@@ -11,6 +11,7 @@\n  * TODO: PHY modes other than 36MHz (without \"SSC\")\n  */\n \n+#include <dt-bindings/phy/phy-lantiq-vrx200-pcie.h>\n #include <linux/bitfield.h>\n #include <linux/bits.h>\n #include <linux/clk.h>\n@@ -18,13 +19,12 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/property.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n \n-#include <dt-bindings/phy/phy-lantiq-vrx200-pcie.h>\n+#include \"../phy-provider.h\"\n \n #define PCIE_PHY_PLL_CTRL1\t\t\t\t0x44\n \ndiff --git a/drivers/phy/marvell/phy-armada375-usb2.c b/drivers/phy/marvell/phy-armada375-usb2.c\nindex 3731f9b25655..d5c100096c3d 100644\n--- a/drivers/phy/marvell/phy-armada375-usb2.c\n+++ b/drivers/phy/marvell/phy-armada375-usb2.c\n@@ -16,9 +16,10 @@\n #include <linux/io.h>\n #include <linux/kernel.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define USB2_PHY_CONFIG_DISABLE BIT(0)\n \n struct armada375_cluster_phy {\ndiff --git a/drivers/phy/marvell/phy-armada38x-comphy.c b/drivers/phy/marvell/phy-armada38x-comphy.c\nindex 5063361b0120..9653863f90bb 100644\n--- a/drivers/phy/marvell/phy-armada38x-comphy.c\n+++ b/drivers/phy/marvell/phy-armada38x-comphy.c\n@@ -9,10 +9,11 @@\n #include <linux/iopoll.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define MAX_A38X_COMPHY\t6\n #define MAX_A38X_PORTS\t3\n \ndiff --git a/drivers/phy/marvell/phy-berlin-sata.c b/drivers/phy/marvell/phy-berlin-sata.c\nindex c90e2867900c..4d4013d115ca 100644\n--- a/drivers/phy/marvell/phy-berlin-sata.c\n+++ b/drivers/phy/marvell/phy-berlin-sata.c\n@@ -10,10 +10,11 @@\n #include <linux/clk.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/io.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define HOST_VSA_ADDR\t\t0x0\n #define HOST_VSA_DATA\t\t0x4\n #define PORT_SCR_CTL\t\t0x2c\ndiff --git a/drivers/phy/marvell/phy-berlin-usb.c b/drivers/phy/marvell/phy-berlin-usb.c\nindex f26bf630da2c..a3e58deaaa74 100644\n--- a/drivers/phy/marvell/phy-berlin-usb.c\n+++ b/drivers/phy/marvell/phy-berlin-usb.c\n@@ -9,11 +9,12 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/property.h>\n #include <linux/reset.h>\n \n+#include \"../phy-provider.h\"\n+\n #define USB_PHY_PLL\t\t0x04\n #define USB_PHY_PLL_CONTROL\t0x08\n #define USB_PHY_TX_CTRL0\t0x10\ndiff --git a/drivers/phy/marvell/phy-mmp3-hsic.c b/drivers/phy/marvell/phy-mmp3-hsic.c\nindex 72ab6da0ebc3..90498211431b 100644\n--- a/drivers/phy/marvell/phy-mmp3-hsic.c\n+++ b/drivers/phy/marvell/phy-mmp3-hsic.c\n@@ -7,9 +7,10 @@\n #include <linux/io.h>\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n #define HSIC_CTRL\t0x08\n #define HSIC_ENABLE\tBIT(7)\n #define PLL_BYPASS\tBIT(4)\ndiff --git a/drivers/phy/marvell/phy-mmp3-usb.c b/drivers/phy/marvell/phy-mmp3-usb.c\nindex 5b71deb08851..ba67bcc2c3f9 100644\n--- a/drivers/phy/marvell/phy-mmp3-usb.c\n+++ b/drivers/phy/marvell/phy-mmp3-usb.c\n@@ -8,10 +8,11 @@\n #include <linux/io.h>\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/soc/mmp/cputype.h>\n \n+#include \"../phy-provider.h\"\n+\n #define USB2_PLL_REG0\t\t0x4\n #define USB2_PLL_REG1\t\t0x8\n #define USB2_TX_REG0\t\t0x10\ndiff --git a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c\nindex 1d1db1737422..3acfd74c3eca 100644\n--- a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c\n+++ b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c\n@@ -21,10 +21,11 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/spinlock.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PLL_SET_DELAY_US\t\t600\n #define COMPHY_PLL_SLEEP\t\t1000\n #define COMPHY_PLL_TIMEOUT\t\t150000\ndiff --git a/drivers/phy/marvell/phy-mvebu-a3700-utmi.c b/drivers/phy/marvell/phy-mvebu-a3700-utmi.c\nindex 04f4fb4bed70..c17ce28ceb0b 100644\n--- a/drivers/phy/marvell/phy-mvebu-a3700-utmi.c\n+++ b/drivers/phy/marvell/phy-mvebu-a3700-utmi.c\n@@ -14,10 +14,11 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* Armada 3700 UTMI PHY registers */\n #define USB2_PHY_PLL_CTRL_REG0\t\t\t0x0\n #define   PLL_REF_DIV_OFF\t\t\t0\ndiff --git a/drivers/phy/marvell/phy-mvebu-cp110-comphy.c b/drivers/phy/marvell/phy-mvebu-cp110-comphy.c\nindex 71f9c14fb50d..18ad172135ea 100644\n--- a/drivers/phy/marvell/phy-mvebu-cp110-comphy.c\n+++ b/drivers/phy/marvell/phy-mvebu-cp110-comphy.c\n@@ -13,10 +13,11 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* Relative to priv->base */\n #define MVEBU_COMPHY_SERDES_CFG0(n)\t\t(0x0 + (n) * 0x1000)\n #define     MVEBU_COMPHY_SERDES_CFG0_PU_PLL\tBIT(1)\ndiff --git a/drivers/phy/marvell/phy-mvebu-cp110-utmi.c b/drivers/phy/marvell/phy-mvebu-cp110-utmi.c\nindex dd3e515a8e86..f3e2ef54c37b 100644\n--- a/drivers/phy/marvell/phy-mvebu-cp110-utmi.c\n+++ b/drivers/phy/marvell/phy-mvebu-cp110-utmi.c\n@@ -13,12 +13,13 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <linux/usb/of.h>\n #include <linux/usb/otg.h>\n \n+#include \"../phy-provider.h\"\n+\n #define UTMI_PHY_PORTS\t\t\t\t2\n \n /* CP110 UTMI register macro definetions */\ndiff --git a/drivers/phy/marvell/phy-mvebu-sata.c b/drivers/phy/marvell/phy-mvebu-sata.c\nindex 89a5a2b69d80..b9a9eca74789 100644\n--- a/drivers/phy/marvell/phy-mvebu-sata.c\n+++ b/drivers/phy/marvell/phy-mvebu-sata.c\n@@ -8,11 +8,12 @@\n #include <linux/kernel.h>\n #include <linux/init.h>\n #include <linux/clk.h>\n-#include <linux/phy/phy.h>\n #include <linux/io.h>\n #include <linux/mod_devicetable.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n struct priv {\n \tstruct clk\t*clk;\n \tvoid __iomem\t*base;\ndiff --git a/drivers/phy/marvell/phy-pxa-28nm-hsic.c b/drivers/phy/marvell/phy-pxa-28nm-hsic.c\nindex eff6dd6b2dd0..6feee8d1ca70 100644\n--- a/drivers/phy/marvell/phy-pxa-28nm-hsic.c\n+++ b/drivers/phy/marvell/phy-pxa-28nm-hsic.c\n@@ -17,7 +17,8 @@\n #include <linux/clk.h>\n #include <linux/module.h>\n #include <linux/platform_device.h>\n-#include <linux/phy/phy.h>\n+\n+#include \"../phy-provider.h\"\n \n #define PHY_28NM_HSIC_CTRL\t\t\t0x08\n #define PHY_28NM_HSIC_IMPCAL_CAL\t\t0x18\ndiff --git a/drivers/phy/marvell/phy-pxa-28nm-usb2.c b/drivers/phy/marvell/phy-pxa-28nm-usb2.c\nindex 64afb82cf70e..39b8344803cb 100644\n--- a/drivers/phy/marvell/phy-pxa-28nm-usb2.c\n+++ b/drivers/phy/marvell/phy-pxa-28nm-usb2.c\n@@ -17,7 +17,8 @@\n #include <linux/clk.h>\n #include <linux/module.h>\n #include <linux/platform_device.h>\n-#include <linux/phy/phy.h>\n+\n+#include \"../phy-provider.h\"\n \n /* USB PXA1928 PHY mapping */\n #define PHY_28NM_PLL_REG0\t\t\t0x0\ndiff --git a/drivers/phy/marvell/phy-pxa-usb.c b/drivers/phy/marvell/phy-pxa-usb.c\nindex c0bb71f80c04..9a8ab813d001 100644\n--- a/drivers/phy/marvell/phy-pxa-usb.c\n+++ b/drivers/phy/marvell/phy-pxa-usb.c\n@@ -10,9 +10,10 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n+\n /* phy regs */\n #define UTMI_REVISION\t\t0x0\n #define UTMI_CTRL\t\t0x4\ndiff --git a/drivers/phy/mediatek/phy-mtk-dp.c b/drivers/phy/mediatek/phy-mtk-dp.c\nindex d7024a144335..ab3778447570 100644\n--- a/drivers/phy/mediatek/phy-mtk-dp.c\n+++ b/drivers/phy/mediatek/phy-mtk-dp.c\n@@ -10,10 +10,11 @@\n #include <linux/io.h>\n #include <linux/mfd/syscon.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PHY_OFFSET\t\t\t0x1000\n \n #define MTK_DP_PHY_DIG_PLL_CTL_1\t(PHY_OFFSET + 0x14)\ndiff --git a/drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c b/drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c\nindex 1426a2db984d..30015bac3f73 100644\n--- a/drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c\n+++ b/drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c\n@@ -7,7 +7,6 @@\n #include <linux/io.h>\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regulator/driver.h>\n #include <linux/regulator/of_regulator.h>\ndiff --git a/drivers/phy/mediatek/phy-mtk-hdmi.h b/drivers/phy/mediatek/phy-mtk-hdmi.h\nindex 99d917e0036a..bfddd8dbe9dd 100644\n--- a/drivers/phy/mediatek/phy-mtk-hdmi.h\n+++ b/drivers/phy/mediatek/phy-mtk-hdmi.h\n@@ -11,12 +11,13 @@\n #include <linux/delay.h>\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regulator/driver.h>\n #include <linux/regulator/machine.h>\n #include <linux/types.h>\n \n+#include \"../phy-provider.h\"\n+\n struct mtk_hdmi_phy;\n \n struct mtk_hdmi_phy_conf {\ndiff --git a/drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c b/drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c\nindex 058e1d926630..5e008204ecca 100644\n--- a/drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c\n+++ b/drivers/phy/mediatek/phy-mtk-mipi-csi-0-5.c\n@@ -12,10 +12,10 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/mutex.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/slab.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-mtk-io.h\"\n #include \"phy-mtk-mipi-csi-0-5-rx-reg.h\"\n \ndiff --git a/drivers/phy/mediatek/phy-mtk-mipi-dsi.h b/drivers/phy/mediatek/phy-mtk-mipi-dsi.h\nindex 5d4876f1dc95..676c8f78d9d6 100644\n--- a/drivers/phy/mediatek/phy-mtk-mipi-dsi.h\n+++ b/drivers/phy/mediatek/phy-mtk-mipi-dsi.h\n@@ -13,9 +13,10 @@\n #include <linux/module.h>\n #include <linux/nvmem-consumer.h>\n #include <linux/platform_device.h>\n-#include <linux/phy/phy.h>\n #include <linux/slab.h>\n \n+#include \"../phy-provider.h\"\n+\n struct mtk_mipitx_data {\n \tconst u32 mppll_preserve;\n \tconst struct clk_ops *mipi_tx_clk_ops;\ndiff --git a/drivers/phy/mediatek/phy-mtk-pcie.c b/drivers/phy/mediatek/phy-mtk-pcie.c\nindex a2f69d6c72f0..1ab7c1dc2753 100644\n--- a/drivers/phy/mediatek/phy-mtk-pcie.c\n+++ b/drivers/phy/mediatek/phy-mtk-pcie.c\n@@ -8,10 +8,10 @@\n #include <linux/module.h>\n #include <linux/nvmem-consumer.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/slab.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-mtk-io.h\"\n \n #define PEXTP_ANA_GLB_00_REG\t\t0x9000\ndiff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c\nindex acf506529507..6f98de067327 100644\n--- a/drivers/phy/mediatek/phy-mtk-tphy.c\n+++ b/drivers/phy/mediatek/phy-mtk-tphy.c\n@@ -15,10 +15,10 @@\n #include <linux/nvmem-consumer.h>\n #include <linux/of.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-mtk-io.h\"\n \n /* version V1 sub-banks offset base address */\ndiff --git a/drivers/phy/mediatek/phy-mtk-ufs.c b/drivers/phy/mediatek/phy-mtk-ufs.c\nindex 0cb5a25b1b7a..de517fcc4f3e 100644\n--- a/drivers/phy/mediatek/phy-mtk-ufs.c\n+++ b/drivers/phy/mediatek/phy-mtk-ufs.c\n@@ -9,9 +9,9 @@\n #include <linux/io.h>\n #include <linux/mod_devicetable.h>\n #include <linux/module.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-mtk-io.h\"\n \n /* mphy register and offsets */\ndiff --git a/drivers/phy/mediatek/phy-mtk-xfi-tphy.c b/drivers/phy/mediatek/phy-mtk-xfi-tphy.c\nindex 100a50d0e861..036a4bb58dcf 100644\n--- a/drivers/phy/mediatek/phy-mtk-xfi-tphy.c\n+++ b/drivers/phy/mediatek/phy-mtk-xfi-tphy.c\n@@ -17,8 +17,8 @@\n #include <linux/clk.h>\n #include <linux/reset.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-mtk-io.h\"\n \n #define MTK_XFI_TPHY_NUM_CLOCKS\t\t2\ndiff --git a/drivers/phy/mediatek/phy-mtk-xsphy.c b/drivers/phy/mediatek/phy-mtk-xsphy.c\nindex c0ddb9273cc3..5e61abddaf54 100644\n--- a/drivers/phy/mediatek/phy-mtk-xsphy.c\n+++ b/drivers/phy/mediatek/phy-mtk-xsphy.c\n@@ -14,10 +14,10 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of_address.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n #include \"phy-mtk-io.h\"\n \n /* u2 phy banks */\ndiff --git a/drivers/phy/microchip/lan966x_serdes.c b/drivers/phy/microchip/lan966x_serdes.c\nindex 835e369cdfc5..8769518f9708 100644\n--- a/drivers/phy/microchip/lan966x_serdes.c\n+++ b/drivers/phy/microchip/lan966x_serdes.c\n@@ -1,15 +1,15 @@\n // SPDX-License-Identifier: GPL-2.0-or-later\n \n+#include <dt-bindings/phy/phy-lan966x-serdes.h>\n #include <linux/err.h>\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_platform.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n \n-#include <dt-bindings/phy/phy-lan966x-serdes.h>\n #include \"lan966x_serdes_regs.h\"\n+#include \"../phy-provider.h\"\n \n #define PLL_CONF_MASK\t\tGENMASK(4, 3)\n #define PLL_CONF_25MHZ\t\t0\ndiff --git a/drivers/phy/microchip/sparx5_serdes.c b/drivers/phy/microchip/sparx5_serdes.c\nindex 320cf5b50a8c..09c22a6a2639 100644\n--- a/drivers/phy/microchip/sparx5_serdes.c\n+++ b/drivers/phy/microchip/sparx5_serdes.c\n@@ -17,8 +17,8 @@\n #include <linux/io.h>\n #include <linux/clk.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n \n+#include \"../phy-provider.h\"\n #include \"sparx5_serdes.h\"\n \n #define SPX5_SERDES_10G_START 13\ndiff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/phy-cpcap-usb.c\nindex 7cb020dd3423..66a834c208fc 100644\n--- a/drivers/phy/motorola/phy-cpcap-usb.c\n+++ b/drivers/phy/motorola/phy-cpcap-usb.c\n@@ -24,10 +24,11 @@\n #include <linux/gpio/consumer.h>\n #include <linux/mfd/motorola-cpcap.h>\n #include <linux/phy/omap_usb.h>\n-#include <linux/phy/phy.h>\n #include <linux/regulator/consumer.h>\n #include <linux/usb/musb.h>\n \n+#include \"../phy-provider.h\"\n+\n /* CPCAP_REG_USBC1 register bits */\n #define CPCAP_BIT_IDPULSE\t\tBIT(15)\n #define CPCAP_BIT_ID100KPU\t\tBIT(14)\ndiff --git a/drivers/phy/motorola/phy-mapphone-mdm6600.c b/drivers/phy/motorola/phy-mapphone-mdm6600.c\nindex ce1dad8c438d..92f63e52bd1d 100644\n--- a/drivers/phy/motorola/phy-mapphone-mdm6600.c\n+++ b/drivers/phy/motorola/phy-mapphone-mdm6600.c\n@@ -15,10 +15,12 @@\n \n #include <linux/gpio/consumer.h>\n #include <linux/of_platform.h>\n-#include <linux/phy/phy.h>\n+#include <linux/phy/phy.h> /* for phy_pm_runtime_*() */\n #include <linux/pinctrl/consumer.h>\n #include <linux/pm_runtime.h>\n \n+#include \"../phy-provider.h\"\n+\n #define PHY_MDM6600_PHY_DELAY_MS\t4000\t/* PHY enable 2.2s to 3.5s */\n #define PHY_MDM6600_ENABLED_DELAY_MS\t8000\t/* 8s more total for MDM6600 */\n #define PHY_MDM6600_WAKE_KICK_MS\t600\t/* time on after GPIO toggle */\ndiff --git a/drivers/phy/mscc/phy-ocelot-serdes.c b/drivers/phy/mscc/phy-ocelot-serdes.c\nindex 1cd1b5db2ad7..13f83876d954 100644\n--- a/drivers/phy/mscc/phy-ocelot-serdes.c\n+++ b/drivers/phy/mscc/phy-ocelot-serdes.c\n@@ -12,12 +12,13 @@\n #include <linux/of.h>\n #include <linux/of_platform.h>\n #include <linux/phy.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n #include <soc/mscc/ocelot_hsio.h>\n #include <dt-bindings/phy/phy-ocelot-serdes.h>\n \n+#include \"../phy-provider.h\"\n+\n struct serdes_ctrl {\n \tstruct regmap\t\t*regs;\n \tstruct device\t\t*dev;\ndiff --git a/drivers/phy/nuvoton/phy-ma35d1-usb2.c b/drivers/phy/nuvoton/phy-ma35d1-usb2.c\nindex 9a459b700ed4..520c86188fe2 100644\n--- a/drivers/phy/nuvoton/phy-ma35d1-usb2.c\n+++ b/drivers/phy/nuvoton/phy-ma35d1-usb2.c\n@@ -10,10 +10,11 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"../phy-provider.h\"\n+\n /* USB PHY Miscellaneous Control Register */\n #define MA35_SYS_REG_USBPMISCR\t0x60\n #define PHY0POR\t\t\tBIT(0)  /* PHY Power-On Reset Control Bit */\ndiff --git a/drivers/phy/phy-airoha-pcie.c b/drivers/phy/phy-airoha-pcie.c\nindex 56e9ade8a9fd..d9817eed2631 100644\n--- a/drivers/phy/phy-airoha-pcie.c\n+++ b/drivers/phy/phy-airoha-pcie.c\n@@ -9,11 +9,11 @@\n #include <linux/io.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/slab.h>\n \n #include \"phy-airoha-pcie-regs.h\"\n+#include \"phy-provider.h\"\n \n #define LEQ_LEN_CTRL_MAX_VAL\t7\n #define FREQ_LOCK_MAX_ATTEMPT\t10\ndiff --git a/drivers/phy/phy-can-transceiver.c b/drivers/phy/phy-can-transceiver.c\nindex 330356706ad7..d1e90fe6b68b 100644\n--- a/drivers/phy/phy-can-transceiver.c\n+++ b/drivers/phy/phy-can-transceiver.c\n@@ -6,13 +6,14 @@\n  *\n  */\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/module.h>\n #include <linux/gpio.h>\n #include <linux/gpio/consumer.h>\n #include <linux/mux/consumer.h>\n \n+#include \"phy-provider.h\"\n+\n struct can_transceiver_data {\n \tu32 flags;\n #define CAN_TRANSCEIVER_STB_PRESENT\tBIT(0)\ndiff --git a/drivers/phy/phy-core-mipi-dphy.c b/drivers/phy/phy-core-mipi-dphy.c\nindex f4956a417a47..770cfe2a2279 100644\n--- a/drivers/phy/phy-core-mipi-dphy.c\n+++ b/drivers/phy/phy-core-mipi-dphy.c\n@@ -4,13 +4,13 @@\n  * Copyright (C) 2018 Cadence Design Systems Inc.\n  */\n \n+#include <linux/phy/phy-mipi-dphy.h>\n #include <linux/errno.h>\n #include <linux/export.h>\n #include <linux/kernel.h>\n #include <linux/time64.h>\n \n-#include <linux/phy/phy.h>\n-#include <linux/phy/phy-mipi-dphy.h>\n+#include \"phy-provider.h\"\n \n /*\n  * Minimum D-PHY timings based on MIPI D-PHY specification. Derived\ndiff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c\nindex 737a760d97d1..02af89ee64a3 100644\n--- a/drivers/phy/phy-core.c\n+++ b/drivers/phy/phy-core.c\n@@ -20,6 +20,8 @@\n #include <linux/pm_runtime.h>\n #include <linux/regulator/consumer.h>\n \n+#include \"phy-provider.h\"\n+\n #define\tto_phy(a)\t(container_of((a), struct phy, dev))\n \n /**\ndiff --git a/drivers/phy/phy-google-usb.c b/drivers/phy/phy-google-usb.c\nindex 48cfa2e28347..539732f4869e 100644\n--- a/drivers/phy/phy-google-usb.c\n+++ b/drivers/phy/phy-google-usb.c\n@@ -14,13 +14,14 @@\n #include <linux/module.h>\n #include <linux/mutex.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/pm_runtime.h>\n #include <linux/regmap.h>\n #include <linux/reset.h>\n #include <linux/usb/typec_mux.h>\n \n+#include \"phy-provider.h\"\n+\n #define USBCS_USB2PHY_CFG19_OFFSET 0x0\n #define USBCS_USB2PHY_CFG19_PHY_CFG_PLL_FB_DIV GENMASK(19, 8)\n \ndiff --git a/drivers/phy/phy-lpc18xx-usb-otg.c b/drivers/phy/phy-lpc18xx-usb-otg.c\nindex f905d3c64584..554dfa55fe7e 100644\n--- a/drivers/phy/phy-lpc18xx-usb-otg.c\n+++ b/drivers/phy/phy-lpc18xx-usb-otg.c\n@@ -10,10 +10,11 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n+#include \"phy-provider.h\"\n+\n /* USB OTG PHY register offset and bit in CREG */\n #define LPC18XX_CREG_CREG0\t\t0x004\n #define LPC18XX_CREG_CREG0_USB0PHY\tBIT(5)\ndiff --git a/drivers/phy/phy-nxp-ptn3222.c b/drivers/phy/phy-nxp-ptn3222.c\nindex c6179d8701e6..ae75b760a30d 100644\n--- a/drivers/phy/phy-nxp-ptn3222.c\n+++ b/drivers/phy/phy-nxp-ptn3222.c\n@@ -7,10 +7,11 @@\n #include <linux/i2c.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/regmap.h>\n #include <linux/regulator/consumer.h>\n \n+#include \"phy-provider.h\"\n+\n #define NUM_SUPPLIES 2\n \n struct ptn3222 {\ndiff --git a/drivers/phy/phy-pistachio-usb.c b/drivers/phy/phy-pistachio-usb.c\nindex 231792f48ced..8eed6f505a31 100644\n--- a/drivers/phy/phy-pistachio-usb.c\n+++ b/drivers/phy/phy-pistachio-usb.c\n@@ -5,6 +5,7 @@\n  * Copyright (C) 2015 Google, Inc.\n  */\n \n+#include <dt-bindings/phy/phy-pistachio-usb.h>\n #include <linux/clk.h>\n #include <linux/delay.h>\n #include <linux/io.h>\n@@ -12,11 +13,10 @@\n #include <linux/mfd/syscon.h>\n #include <linux/module.h>\n #include <linux/of.h>\n-#include <linux/phy/phy.h>\n #include <linux/platform_device.h>\n #include <linux/regmap.h>\n \n-#include <dt-bindings/phy/phy-pistachio-usb.h>\n+#include \"phy-provider.h\"\n \n #define USB_PHY_CONTROL1\t\t\t\t0x04\n #define USB_PHY_CONTROL1_FSEL_SHIFT\t\t\t2\ndiff --git a/drivers/phy/phy-snps-eusb2.c b/drivers/phy/phy-snps-eusb2.c\nindex f90bf7e95463..9062737bfad4 100644\n--- a/drivers/phy/phy-snps-eusb2.c\n+++ b/drivers/phy/phy-snps-eusb2.c\n@@ -13,6 +13,8 @@\n #include <linux/regulator/consumer.h>\n #include <linux/reset.h>\n \n+#include \"phy-provider.h\"\n+\n #define EXYNOS_USB_PHY_HS_PHY_CTRL_RST\t(0x0)\n #define USB_PHY_RST_MASK\t\tGENMASK(1, 0)\n #define UTMI_PORT_RST_MASK\t\tGENMASK(5, 4)\ndiff --git a/drivers/phy/phy-xgene.c b/drivers/phy/phy-xgene.c\nindex 5007dc7a357c..90a00498ec0a 100644\n--- a/drivers/phy/phy-xgene.c\n+++ b/drivers/phy/phy-xgene.c\n@@ -43,9 +43,10 @@\n #include <linux/platform_device.h>\n #include <linux/io.h>\n #include <linux/delay.h>\n-#include <linux/phy/phy.h>\n #include <linux/clk.h>\n \n+#include \"phy-provider.h\"\n+\n /* Max 2 lanes per a PHY unit */\n #define MAX_LANE\t\t\t2\n \n",
    "prefixes": [
        "v6",
        "phy-next",
        "25/28"
    ]
}