Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217241/?format=api
{ "id": 2217241, "url": "http://patchwork.ozlabs.org/api/patches/2217241/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260327184706.1600329-19-vladimir.oltean@nxp.com/", "project": { "id": 42, "url": "http://patchwork.ozlabs.org/api/projects/42/?format=api", "name": "Linux GPIO development", "link_name": "linux-gpio", "list_id": "linux-gpio.vger.kernel.org", "list_email": "linux-gpio@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260327184706.1600329-19-vladimir.oltean@nxp.com>", "list_archive_url": null, "date": "2026-03-27T18:46:56", "name": "[v6,phy-next,18/28] phy: introduce phy_get_max_link_rate() helper for consumers", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "82d32fb70cd6ffbcdbcca5b8f9d783b2c9292ed9", "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-gpio/patch/20260327184706.1600329-19-vladimir.oltean@nxp.com/mbox/", "series": [ { "id": 497821, "url": "http://patchwork.ozlabs.org/api/series/497821/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=497821", "date": "2026-03-27T18:46:39", "name": "Split Generic PHY consumer and provider", "version": 6, "mbox": "http://patchwork.ozlabs.org/series/497821/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217241/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217241/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-gpio+bounces-34313-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-gpio@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=VctTM9Ar;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.232.135.74; helo=sto.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34313-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=\"VctTM9Ar\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.84.49", "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 sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74])\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 4fj9295BdBz1y1P\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Mar 2026 06:00:17 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id 77C813061156\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 18:54:56 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id C8A653ACF19;\n\tFri, 27 Mar 2026 18:49:19 +0000 (UTC)", "from DB3PR0202CU003.outbound.protection.outlook.com\n (mail-northeuropeazon11010049.outbound.protection.outlook.com [52.101.84.49])\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 B3D7D3A6B93;\n\tFri, 27 Mar 2026 18:49:17 +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:12 +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:12 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774637359; cv=fail;\n b=mdLfMAYypsgW+Ay7YwtXhIPjXNeFx6jTc893+CNVFuiDaOtc5U1CnPG5WHeh7SfUdaNgQkHn9nus2+dx4Zi6z+3kCMmQgRVnUl3sRuA3hv/VKkGAd4Rl9O2omMv+REWOiaWwk+x2kZO9NoTL+VfAeHBezAXaSyvCz1Jd+Pu8+dY=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=cFnyvFx+lFrnqIRV6qk//0oEH4vsyvOATlhm92XaU3ANxRmrDXXATBkCM6/hfuJdpQAyiX4Tj1SFg7KcljxC9sda++MiI+gMwCQe1jxMvIVMK3XO/t7q34s2B98nWkyLdPdyGQM7qaHfZxhC6mLCgYjZ1hqTUE7y7OMoTXgtGFPvxfXS4uoSd0y1b1ZOVOQQs2Sfmu0RKbRpNAu/gIka4TbaMSNjwnpJF7d/dWVx20VSNv/OpWiw//gFhtbsMHiau/I+3l/+QtM0nF/JvD2ogEFcOf7TIQHpLZ3xZzaWggc6uNg3eZ1NOOGAjuNxGupGnY607uTtBRyfuRLhVaIgRg==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774637359; c=relaxed/simple;\n\tbh=hMDLRXdF1NigX4KqsQUQ4uKayzoPd9xA2A5p872A84I=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=aBvJR4xPulv5m0TibsQ+2QWKwD26mVR8QxRwwVbZmuIKWqzhR+QOWHsIIN+Ywm+NcBYOvSbh1HsKUoHkv4fGG+vbJrGWpowjoQnXdG6iI1hP2pvDqvUfhWd3i2NbdpGST1Mve/URu10yBM8zs3fBjSRlZ3H49xUKF6OpK8zarR8=", "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=puL+Fop37MU0VjAvQTbetvUe0xe0cRUTa/Skh3MyxsY=;\n b=ypgWtCuY7FM3Am01jKrqIT9ECWfz5BmQf6z2fsozmBJQkkuHIEOjRPKeWpxbl92c8n5VgKcKNYEmi6oj8EoZDpmhgalIcwu74kjW9oXkJ+RHrdmHLffWXVZ9GJd0o9zVRCQM36furPiZhEct6nlS0rnAv6phi3BAXehf4aDAeyoNZ6NBjuK5coVHkplsEWrr/95ZGel6KaXxZwOew6xo6FalveVOg1b3vsluyTyLu1OHgjcggmysrZWBGgvaEgOAhDEgXlsyswdjIQdU6Rrn+TX6y1EuHYCArXAIg+zbPFJsJ+dEXK5cX1oc16ZoC8lAcLWlCiNNV2QBE/wAnokpCQ==" ], "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=VctTM9Ar; arc=fail smtp.client-ip=52.101.84.49", "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=puL+Fop37MU0VjAvQTbetvUe0xe0cRUTa/Skh3MyxsY=;\n b=VctTM9Ar/aUsMO2Lv0GpqyC+lBhpQIE9xkyCFX83L/leNZROJ8fzzAk3/ISPl2yYITSAbZ3s/zZ27PeMZSCsmDIdLIxBIWxIHe3m4D+e6dVZnxWuHu6y5KPfjNkCUbNKfAeiY7WUR7PHom1TEkBO5oeuz8KP5kLliKI+bbmJfUjDsPE6dejik7njyG6OKGTGkn9fAeS8JJHtkTe3Scmgrj8nWXxeBIRqCot2ypVIFLVbal6xfJMGZIQQLLG/bLkRkdt2Gexfersa2gaHu8gTQTt4hliK5/pDWV9ITZ5TKEeNu/y8qmXb89vvKrxhK/D+zXd4FDUeZOi8acHkyoCXRw==", "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\tMarkus Schneider-Pargmann <msp@baylibre.com>,\n\tAndrzej Hajda <andrzej.hajda@intel.com>,\n\tRobert Foss <rfoss@kernel.org>,\n\tLaurent Pinchart <Laurent.pinchart@ideasonboard.com>,\n\tJonas Karlman <jonas@kwiboo.se>,\n\tJernej Skrabec <jernej.skrabec@gmail.com>,\n\tMaarten Lankhorst <maarten.lankhorst@linux.intel.com>,\n\tMaxime Ripard <mripard@kernel.org>,\n\tThomas Zimmermann <tzimmermann@suse.de>,\n\tDavid Airlie <airlied@gmail.com>,\n\tSimona Vetter <simona@ffwll.ch>,\n\tAndy Yan <andy.yan@rock-chips.com>,\n\tMarc Kleine-Budde <mkl@pengutronix.de>,\n\tVincent Mailhol <mailhol@kernel.org>,\n\tNicolas Ferre <nicolas.ferre@microchip.com>,\n\tAlexandre Belloni <alexandre.belloni@bootlin.com>,\n\tClaudiu Beznea <claudiu.beznea@tuxon.dev>,\n\tGeert Uytterhoeven <geert+renesas@glider.be>,\n\tMagnus Damm <magnus.damm@gmail.com>", "Subject": "[PATCH v6 phy-next 18/28] phy: introduce phy_get_max_link_rate()\n helper for consumers", "Date": "Fri, 27 Mar 2026 20:46:56 +0200", "Message-ID": "<20260327184706.1600329-19-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": "VI1PR07CA0286.eurprd07.prod.outlook.com\n (2603:10a6:800:130::14) To DU2PR04MB8584.eurprd04.prod.outlook.com\n (2603:10a6:10:2db::24)", "Precedence": "bulk", "X-Mailing-List": "linux-gpio@vger.kernel.org", "List-Id": "<linux-gpio.vger.kernel.org>", "List-Subscribe": "<mailto:linux-gpio+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-gpio+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": "0e6f0e54-0445-402a-7457-08de8c318966", "X-LD-Processed": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n BCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|19092799006|56012099003|18002099003|22082099003;", "X-Microsoft-Antispam-Message-Info": "\n RO+IMo6yWlwWMmICiq70CjKljgGqjGpQiqPfcY5cXZ1VvD1t6vpjIHtQpa2zNhimynz4zwoRm07mL7Y4UPL2kex3t/TRBnJlVcEksN/ADG48pha4tKaNXiTrDvT66MUHC8Xga2OQvR8xtkYCxYWAvcrLmbQHe9hnA2VNJFgdTG6E7mb2rlSYEuk+ffl7mZkDF5BcV2em3fWB+W0KiQS7w7z+gibrSru38VhAvfQNQeOO4f1tvJHLkVAZ5Wz57ig27GTWfGVwmew72wtyPII3irhO0zFI82CGgzF2mkesFyexzE6ApoTiKRcm/6sfEoCxiXp9QLlgpP59dm+Wb8FPjZ3vP0sqan6T/w7SdG5EXPnhGq+8PYIxo+yr91JgEOQiFeKjf01gIedqrB8FLSSPQWCYi5V5Fy/2Zpp+tRN6zUnSr0+vFl7oiuHeR8Uxl9osgORFkkRgnyXwzXVbW0/oCbRBvWbj5p+Vdss+WvzLKSK7EF8GkTByp45ugViMefBP3h3jWeyYPyHRm8JuiWCyyTDLwlobvGTG9R4ZkJu65gjoTaEE7DO3pEe3glKKj917ksOSO+ob8ZVDKOpW2WR5ZXd4e3UXathrzVZwQ4SfxG3vzHUg8EufEfP7bS7kr43AozUjVCmiOwnReKoPxg0JSM62jhsOBRAV3fnln+jsSaGMhF9sfAIkaEqvzFtwJt/KP11fJJw30GtFYXBjgxSntMmZPVglYTkTTCoZL1WjAQg=", "X-Forefront-Antispam-Report": "\n CIP: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 CW9lIrpc00Eh9U6Ay0KUaT53Q04MMclqI+z563JMf3yoi41CbS5G240j0VO/A21pchnKEL56odeLL3nnbY5G+AB7R+BHIz87BO0FrwNuNZb9FYUWmQWnGU3qmqwF4AJC9OKB8HSykzl84JjvQ8bl5qgijfecXzv2XCwpq5jK080C7fHnalERt1WEWyBpAXvh+mjzbcFpH5+IsmKEkChJkD1kM6VNVDZ7Qhts70MveIVgzRbMfztzQy6NxC6fqQpDznEBTGZ1P3seoTWwNgPdtjOmxl8miXIc3UtczktkMQuH1IcAIFrQT0Ep85z0+mgk3Gw1Y2gG67mMzQBh94fmGqiPDMq+rmvQphydjRHF7MAajeRtqdz/fIjtxztpUse+y5JHZbCIn6fes3nOawfD1ZkHDvwxmoqgN19KGtwK/sexjevRicLo51eb4DZs6mYygrLzhCtQIQ1YWGf/Jd5HFTvVvlT7nX0DN4538B0V7sJQZIH7ln+HNYdpycYYQwdlGJxvGC/6YNX9LstJh1RqMX+YF1ED4cxe5j+DsHATd2+VJ+U7XxbgR1QfZ37vcMegi2QRPMWDg93TWniqimK3Zjcns5hiACLaYe+OB/ohr3F9ApndW57+5VtQgSKnHZAPGMO8fFpFdtJ/htpyJbIVTK0PpPl5nAYAP9qmNjcbaeUxYH6dGGoN6yEFXL9JOxBFPQOY5mnOeYfC3qpKxnkDCbYP1ZUm9WAUU4d7bGVpq9Jb31tRjByaJJbCLJqjpP8YuHmYJhJnlgfw+FvTUowWFgtdROcvqjA7KbEb15KfuYgFq6a7NAtm5QisiUcp3ZTsZG2KARL5vOFC1J9Rj6KdPXdeyDeamvflo7RoiKrzo8m5LvmF4zf7tlp1+wU4er5OLirl+fuOyo1i/BOWEQELVhxJsqcpYyNddqGKbJHTXjLQBLlmtnS+Wec5uUfw5wK83ubhHBgVYcESBTdJE+PdrtaCBKldIZ6rPMFPxA/OJEihDGAoIwy7k3G1ZwyeUjHtoy4PqtydktDbVtLfF2o6jmLbLNIgyUhtO+t3FkQQfF1nNwhC2iciGa+IxGNmzpfEreK6sH1EF4Zgk4FDrAcXUBVF1NOpb///tN7FZPMOW3BxZCQuwxjoitXPdozpWhJpb5jEz2WVBNfGcErCw76ZPIDF9BEd95IUEOCMj1bJ1stcqRtLK/aYvvi8rYe7Cl5CLMUGPRm7UTt9ekb8/x0UcZHhZzXJWy3IRU74CaXHa1cCcSZJ9mG8tOr+wzeG8AutJQ+yWkn8jNHx/UXlj9FUSKi5OUEBnkRLT7rj9Xp06pxZFb3haSz/FTSfJFr2EEXQipyAuEK28FsqF5aEuY0/w2a7OkXhC51OxGxMaSMYqw6VFxpCoYy3/X6Lq2hS7931+MLVWg5A10aDXftN8ClNR89ihJk1lKh/qGpVd3SewEo4/6lWbAMUi/lDwvN3re3jwhUNPSfBSpB17MEflEEVzdqadAobDK27vQnK1sTthf6lt63aC5JvJRtaKYpOXtwqfdD5J9KqNQImrQGY5BoAhc0Ph6MsvQRYOpL2xB2DymDRKJW+zhziMh5gVzDrt6K24NMzUHW+AePbR06HAzz4A2vDs8FYXWvn921TyPQRv1J0b9lUidpr1VKMirTLJtGT64knjqmLv+zhoG5lQGJwEJOmgf11w/9AZY87/kdgDK6hsUoS3gD0vFI5BnfbB8G1vn7wA48kCX2CVnZ2qVJA8rLWpsGtZfGbOG/pQPHA6b4cyLeOt/Molh+GvP6FHUnHJeXg2i9G", "X-MS-Exchange-AntiSpam-MessageData-1": "k45uxCojwIYPittlq48uUaPcF6qFXnCmSz4=", "X-OriginatorOrg": "nxp.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 0e6f0e54-0445-402a-7457-08de8c318966", "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:12.2153\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 rQP9/NfU79yOuEeUXQKw241nAlB8H124DWdWl+cugMtZsiEhUxmIZq39DaSSVQZSATuwbNqOuNYZYUORqw3lUQ==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "GV1PR04MB9515" }, "content": "Consumer drivers shouldn't dereference struct phy, not even to get to\nits attributes.\n\nWe have phy_get_bus_width() as a precedent for getting the bus_width\nattribute, so let's add phy_get_max_link_rate() and use it in DRM and\nCAN drivers.\n\nIn CAN drivers, the transceiver is acquired through devm_phy_optional_get()\nand NULL is given by the API as a non-error case, so the PHY API should\nalso tolerate NULL coming back to it. This means we can further simplify\nthe call sites that test for the NULL quality of the transceiver.\n\nSigned-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>\nAcked-by: Markus Schneider-Pargmann <msp@baylibre.com> # m_can\n---\nCc: Andrzej Hajda <andrzej.hajda@intel.com>\nCc: Neil Armstrong <neil.armstrong@linaro.org>\nCc: Robert Foss <rfoss@kernel.org>\nCc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>\nCc: Jonas Karlman <jonas@kwiboo.se>\nCc: Jernej Skrabec <jernej.skrabec@gmail.com>\nCc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>\nCc: Maxime Ripard <mripard@kernel.org>\nCc: Thomas Zimmermann <tzimmermann@suse.de>\nCc: David Airlie <airlied@gmail.com>\nCc: Simona Vetter <simona@ffwll.ch>\nCc: Andy Yan <andy.yan@rock-chips.com>\nCc: Marc Kleine-Budde <mkl@pengutronix.de>\nCc: Vincent Mailhol <mailhol@kernel.org>\nCc: Nicolas Ferre <nicolas.ferre@microchip.com>\nCc: Alexandre Belloni <alexandre.belloni@bootlin.com>\nCc: Claudiu Beznea <claudiu.beznea@tuxon.dev>\nCc: Markus Schneider-Pargmann <msp@baylibre.com>\nCc: Geert Uytterhoeven <geert+renesas@glider.be>\nCc: Magnus Damm <magnus.damm@gmail.com>\n\nv3->v6: none\nv2->v3: collect tag\nv1->v2: make phy_get_bus_width() NULL-tolerant to simplify CAN callers\n---\n drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 4 ++--\n drivers/gpu/drm/bridge/synopsys/dw-dp.c | 2 +-\n drivers/net/can/at91_can.c | 3 +--\n drivers/net/can/flexcan/flexcan-core.c | 3 +--\n drivers/net/can/m_can/m_can_platform.c | 3 +--\n drivers/net/can/rcar/rcar_canfd.c | 3 +--\n drivers/phy/phy-core.c | 9 +++++++++\n include/linux/phy/phy.h | 6 ++++++\n 8 files changed, 22 insertions(+), 11 deletions(-)", "diff": "diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c\nindex a8b6ae58cb0a..ed7ed82ddb64 100644\n--- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c\n+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c\n@@ -1300,7 +1300,7 @@ static u32 cdns_mhdp_get_training_interval_us(struct cdns_mhdp_device *mhdp,\n \n static void cdns_mhdp_fill_host_caps(struct cdns_mhdp_device *mhdp)\n {\n-\tunsigned int link_rate;\n+\tu32 link_rate;\n \n \t/* Get source capabilities based on PHY attributes */\n \n@@ -1308,7 +1308,7 @@ static void cdns_mhdp_fill_host_caps(struct cdns_mhdp_device *mhdp)\n \tif (!mhdp->host.lanes_cnt)\n \t\tmhdp->host.lanes_cnt = 4;\n \n-\tlink_rate = mhdp->phy->attrs.max_link_rate;\n+\tlink_rate = phy_get_max_link_rate(mhdp->phy);\n \tif (!link_rate)\n \t\tlink_rate = drm_dp_bw_code_to_link_rate(DP_LINK_BW_8_1);\n \telse\ndiff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c b/drivers/gpu/drm/bridge/synopsys/dw-dp.c\nindex 4ab6922dd79c..79c72ee8e263 100644\n--- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c\n+++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c\n@@ -536,7 +536,7 @@ static int dw_dp_link_parse(struct dw_dp *dp, struct drm_connector *connector)\n \n \tlink->revision = link->dpcd[DP_DPCD_REV];\n \tlink->rate = min_t(u32, min(dp->plat_data.max_link_rate,\n-\t\t\t\t dp->phy->attrs.max_link_rate * 100),\n+\t\t\t\t phy_get_max_link_rate(dp->phy) * 100),\n \t\t\t drm_dp_max_link_rate(link->dpcd));\n \tlink->lanes = min_t(u8, phy_get_bus_width(dp->phy),\n \t\t\t drm_dp_max_lane_count(link->dpcd));\ndiff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c\nindex 58da323f14d7..7749da0a58f6 100644\n--- a/drivers/net/can/at91_can.c\n+++ b/drivers/net/can/at91_can.c\n@@ -1125,8 +1125,7 @@ static int at91_can_probe(struct platform_device *pdev)\n \n \tcan_rx_offload_add_timestamp(dev, &priv->offload);\n \n-\tif (transceiver)\n-\t\tpriv->can.bitrate_max = transceiver->attrs.max_link_rate;\n+\tpriv->can.bitrate_max = phy_get_max_link_rate(transceiver);\n \n \tif (at91_is_sam9263(priv))\n \t\tdev->sysfs_groups[0] = &at91_sysfs_attr_group;\ndiff --git a/drivers/net/can/flexcan/flexcan-core.c b/drivers/net/can/flexcan/flexcan-core.c\nindex f5d22c61503f..093e48b8da58 100644\n--- a/drivers/net/can/flexcan/flexcan-core.c\n+++ b/drivers/net/can/flexcan/flexcan-core.c\n@@ -2210,8 +2210,7 @@ static int flexcan_probe(struct platform_device *pdev)\n \tpriv->reg_xceiver = reg_xceiver;\n \tpriv->transceiver = transceiver;\n \n-\tif (transceiver)\n-\t\tpriv->can.bitrate_max = transceiver->attrs.max_link_rate;\n+\tpriv->can.bitrate_max = phy_get_max_link_rate(transceiver);\n \n \tif (priv->devtype_data.quirks & FLEXCAN_QUIRK_NR_IRQ_3) {\n \t\tpriv->irq_boff = platform_get_irq(pdev, 1);\ndiff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c\nindex 56da411878af..2a0f163a683a 100644\n--- a/drivers/net/can/m_can/m_can_platform.c\n+++ b/drivers/net/can/m_can/m_can_platform.c\n@@ -131,8 +131,7 @@ static int m_can_plat_probe(struct platform_device *pdev)\n \t\tgoto probe_fail;\n \t}\n \n-\tif (transceiver)\n-\t\tmcan_class->can.bitrate_max = transceiver->attrs.max_link_rate;\n+\tmcan_class->can.bitrate_max = phy_get_max_link_rate(transceiver);\n \n \tpriv->base = addr;\n \tpriv->mram_base = mram_addr;\ndiff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c\nindex eaf8cac78038..9062db48d477 100644\n--- a/drivers/net/can/rcar/rcar_canfd.c\n+++ b/drivers/net/can/rcar/rcar_canfd.c\n@@ -1884,8 +1884,7 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,\n \tpriv->transceiver = transceiver;\n \tpriv->channel = ch;\n \tpriv->gpriv = gpriv;\n-\tif (transceiver)\n-\t\tpriv->can.bitrate_max = transceiver->attrs.max_link_rate;\n+\tpriv->can.bitrate_max = phy_get_max_link_rate(transceiver);\n \tpriv->can.clock.freq = fcan_freq;\n \tdev_info(dev, \"can_clk rate is %u\\n\", priv->can.clock.freq);\n \ndiff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c\nindex 0d0be494cfd7..737a760d97d1 100644\n--- a/drivers/phy/phy-core.c\n+++ b/drivers/phy/phy-core.c\n@@ -647,6 +647,15 @@ void phy_set_bus_width(struct phy *phy, int bus_width)\n }\n EXPORT_SYMBOL_GPL(phy_set_bus_width);\n \n+u32 phy_get_max_link_rate(struct phy *phy)\n+{\n+\tif (!phy)\n+\t\treturn 0;\n+\n+\treturn phy->attrs.max_link_rate;\n+}\n+EXPORT_SYMBOL_GPL(phy_get_max_link_rate);\n+\n /**\n * _of_phy_get() - lookup and obtain a reference to a phy by phandle\n * @np: device_node for which to get the phy\ndiff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h\nindex a7e2432ca1ae..34b656084caf 100644\n--- a/include/linux/phy/phy.h\n+++ b/include/linux/phy/phy.h\n@@ -57,6 +57,7 @@ int phy_notify_disconnect(struct phy *phy, int port);\n int phy_notify_state(struct phy *phy, union phy_notify state);\n int phy_get_bus_width(struct phy *phy);\n void phy_set_bus_width(struct phy *phy, int bus_width);\n+u32 phy_get_max_link_rate(struct phy *phy);\n #else\n static inline struct phy *phy_get(struct device *dev, const char *string)\n {\n@@ -256,6 +257,11 @@ static inline int phy_get_bus_width(struct phy *phy)\n static inline void phy_set_bus_width(struct phy *phy, int bus_width)\n {\n }\n+\n+static inline u32 phy_get_max_link_rate(struct phy *phy)\n+{\n+\treturn 0;\n+}\n #endif /* IS_ENABLED(CONFIG_GENERIC_PHY) */\n \n #endif /* __PHY_CONSUMER_H */\n", "prefixes": [ "v6", "phy-next", "18/28" ] }