From nobody Sat Jun 13 02:06:48 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013028.outbound.protection.outlook.com [52.101.72.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABE88288C96; Mon, 11 May 2026 15:00:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511646; cv=fail; b=InKB7dc2qD/Yanm819SG4dHWQOc+TOvD//l+CGgtu2xvnzEE7jzpvjeJ//80w+z47uEuDmhhLkn+k3XU4dMtDL6iAEenvMOBeRBe43IH9YKUeQorn+95JsZ8aExtyFda9yNXfTnCPFg3eP1etpitzDuVlWXl/ZsX8GWTGEZBojY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511646; c=relaxed/simple; bh=68kB0XG5WJ4FkpdJilPbLIQkPZQyGJqIb+S82atYpOg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=OHI3S2Qk/wdcd7BpBNun9f4hXxmzY/xGbXEEmkZuxQh/pJqfP/YpDsUbVh6Ti/PJh7Awlg7MlMJH9oMyGa5qN8TsM4tWJ5kKBqv3kFl7P4CD/vRE+SOwuzHer7u+thaUCOjgJUO01Ak70xZDktbTmpflYpxlJ2Ry4TiLEy0y9ZE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=FHaOLb4/; arc=fail smtp.client-ip=52.101.72.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="FHaOLb4/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R2q2/Jx5FGlXPTcd4a+eXlf8kMLDlwhKDwEzDWGSF4as+JUxwrWPKwS366VxDF4UCKM14cLRCiVbX8h8iI5qrIXDE9a5ikrl4X0ISGzzxLldeZJlSUeAuTfscT5bXbXOdcJ0BD8ZRtoFEoqPy0mn3jqok4Ck0PuTbMcJC6Kz2WMyYfGQtc8lyxIP5nVNNbk2zsj+Kq2QExkZlsQs32V72eyzCpqLlo4rKJsdqYclezdaZdOVOvJM+C/Ezuqp0NY2i1Jk75g09JqD2Nrli8K0cJBLT4vyQiu7+zz8Qqa+9CfIQeB5ERJhks6GUI5i6mtjtTLIC/XOIe0hAJODdNJkyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=uu6oODdrfFst0hEEG2qMTfs0my0ajnkCwg6+fmG211o=; b=Lru0D6XuYpob8cHmWXuDzUyZ8Vaen9I7dzQLgKDcWvuiMCLdevrJfy3egSUGjN80tkEjq+x5MPknB7y4SitZzV1K5IIthRTOtNOzIzTLpgVSAuSubeUb32hDVrZyZKES8+2sdhTTcRf7F7cO5oogQaDApQ9aUL6HkJXp9DENzIFCDGOyIAAGsgSkFYCUY7VQCFPPLvHwwTCxPX1vxJjlEwzXB/JEL3wHf7O+nheeuN0uBP34gCKcjd6Uw8PeCqjp9fcQc23EQIgICCzL0jgxYWv4z+MM3oLKY5kcm5jEqoSvNIHDrD+C1NLPGrxP/WVZd1tLwnfnpKpI2lvMFn7ehQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uu6oODdrfFst0hEEG2qMTfs0my0ajnkCwg6+fmG211o=; b=FHaOLb4/JnYoocsRgLrmxntqYFhLVkSbZ7ai/k7e2sULBpDIq9FDrdy+VfYXNrCmyhcLMw2NIflNNVcbnxfwZpw9XF9eILouBizQ/MOzZdPI0FkhvdI/R3I8vAVqCNmfA5qzRNvEj3oaT7JPEgfEKAgZY4gMmXhqrb7RXZwDlEyO2NacUEs0P/1tdacFhRPqSjNsSeOHMbn6l7j1wvuwVGPRkRPo11SBotWDfjlkE6xRK4cw/4OwOHJPUbpQxB2nTJ9826HbtnPWBGTw2c5BBp2XwGZWhEUMB0PUQrgcViApAISSzWzatfkWNUGrBGs/ozIB1QJZCm/2LwMGfKmPZA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) by GVXPR04MB9976.eurprd04.prod.outlook.com (2603:10a6:150:117::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Mon, 11 May 2026 15:00:39 +0000 Received: from AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9870.023; Mon, 11 May 2026 15:00:37 +0000 From: Vladimir Oltean To: linux-phy@lists.infradead.org Cc: netdev@vger.kernel.org, Ioana Ciornei , Vinod Koul , Neil Armstrong , Josua Mayer , linux-kernel@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH phy-next 1/5] dt-bindings: phy: lynx-28g: add compatible strings per SerDes and instantiation Date: Mon, 11 May 2026 18:00:19 +0300 Message-Id: <20260511150023.1903577-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260511150023.1903577-1-vladimir.oltean@nxp.com> References: <20260511150023.1903577-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P191CA0013.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::18) To AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8585:EE_|GVXPR04MB9976:EE_ X-MS-Office365-Filtering-Correlation-Id: 52c94bac-fa61-46e3-5a33-08deaf6e0f2e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|1800799024|366016|3023799003|11063799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 5cLh44CwhKBEfnJHQfVPZ22LLSo80B0jZRaL7kbOk6ol8DOCRc8oxfudkLMBwAcpTP7Hl+FZlIyub1KRMGB7qG3w5XN6m0TmYGktEqv0Q67F76afYrSYcfAIwz/6uJBHTP1Jt2h+Fj2ouSAqpu71GhGiz42tlC8JQELXkssYnuejrpcZCR06Bqz2J54m+80vFce6og/JnFzZgM/ouJSLb/O4TQHgYsCStubqcTaNSO7mypvKGLfh+f8NwXgKZIo4CjI76wyd8CdqjMUizeccq6yUebZnppYehjlF86scPcxXu969Aj1WQ9il8gUC/xhzx3D3cCuD76hSHp2H+ni5GBEd+oc+Z2a2GdutGpD0rF9ihlsj4NcYrwJRjUyDik5fkMFen5t1Jbr8q9b0pJaqI6okdyfoSM1S4vzDH+vCBlPTh8s/C3szhBTqX79wb/6QmvUeIu/TX5BpkdQS7f36NTH1+/0Suz5PCZtAA10EyFSrPK78+ZJ7zYw1DZb4mnThk7KrAI4X5Kz3noFs+HOMmwrUCVD3YnY9+LcJKuLv/K5P+QcSp6hqxK76qnnN2URYI/afl5JdJ4QTnYWZvcg5GwNdejJHHohyMlS/Lo5OSKOgqouRTUb98J7GTN+npjj085oLMqq1AwC2Wv2CZqzAjM6kvn6iOR5EIjLHADQsyNlYynCaOrK0E1yqgMFpDEIQCMxQjpSvZTyHy20GhQeGRA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8585.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(1800799024)(366016)(3023799003)(11063799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Aq2fdcayBNMId0xm0tIBaAjJEO8RQW0DIZ5I+EgvTa+WP74KwVYONEizAfa?= =?us-ascii?Q?pOvdNmLZFFwiO4t8cWqUX4W9f58T9KAWis0+ZxJdbS2RvsKBq1tJux95OsBA?= =?us-ascii?Q?8BqW/d9zet8f4UUrVS/pCcQ6otyoX7xCtke9JK0PVDK5pgVbDhU4LTD3S9a1?= =?us-ascii?Q?W9dmjSDjCKenjYIrmorgH6Ole1moDkri+uZd8BK8d5rMgYtSlDMzp8MWWhCd?= =?us-ascii?Q?YqkIFd5gSj1kNAc4X8aW748K8/irh7jsCYqtGE0/Jy34PEo2slJE9JcfYnLp?= =?us-ascii?Q?2NpCWRPJ6RKapLs9xRj7I3HoUGgZJILKnM5PKFGrCnjx4lVrtt6Hxm5Dzh3t?= =?us-ascii?Q?pAv1adZy576oIrBynBbxkEVUK62cbE7h1hfbbRM7JU2JvDo8o1+ivaFfD7yC?= =?us-ascii?Q?y7TW3xQQ46t31SQmxb6W28LimCN6UDoROIfpqnjqvm/HBtUcbtQgMK0+mSg/?= =?us-ascii?Q?KPLBUM2dpPcYlzSVdxaM1etczy4UlQsoON1pAtcW7UOuGDE+xpsrSFdaJh3C?= =?us-ascii?Q?/TYa3hv4TP8diahedoivuvxxtFZ0uLKGm43EEXH9guhsi7m3Dmc9robRHeGk?= =?us-ascii?Q?ey6NNU9+wZ6/AaJQBMMQYwb1AJ+2o/Ug1/fA7SYjG36W5zBEytMWysOXiNuW?= =?us-ascii?Q?av5QviFUtjckHJapebGArRENfJ49TuDysLf3m25n4Wjptjw4o9fEYVAG2NuT?= =?us-ascii?Q?pEfQW9ZG6ir3R6GVUMsEnuU7DRm7/xmBnjyrnWg3GEFg4coDEce8WNlUUr56?= =?us-ascii?Q?C4RhGGX6szxphkG3Nk0Ne8tTs6HBnwhihH6/gF3CQIWkBetkQvxSnCEzGLsx?= =?us-ascii?Q?/BMxcxXNvJvuJSIk6Pwp7xvRyt1d2LtLob7zYukzgBCvD0xkx7nhwbcjo6Ie?= =?us-ascii?Q?vS6yIzmzTUbS3plK+yC7lxHxWOVGlLkLg4Nz5/dTdJzzEPwjCH/oHnd7/x4J?= =?us-ascii?Q?A+Qyf0nymdkv7k6PNO2Jr80Cmp/RXiWTPpdV54ULvP+n1JsDECEsF2Wt6jLc?= =?us-ascii?Q?TekRLBuQ/ftn8dRPRtY37aEMxFY6ghqtINKbadETH4ceytFRj3gY+18BtG92?= =?us-ascii?Q?tC7/7+jv9gbE89mfi6hzpwhsSslXm7+0n67O/YlsNNyswvsE/PcrUvany7u8?= =?us-ascii?Q?/uYDNm7Gs7ssHwAcWGY9oOmLjqsA+QpSiewcdn/vbMIZ7ptNrgPzQH+iFl6h?= =?us-ascii?Q?CFC8oMj/6vY4ui99HXOV+9G3F3ToZsfcvJNQmi31jH7axqxRHzgzgKSWYg5i?= =?us-ascii?Q?Z2K6tM8UrnNKwJkDaRrt+vjZg+59KjGCBqbqzJSI0hQgUWKrhJFRiUmy/06F?= =?us-ascii?Q?fK8mqnU8Jjzol5ftg/vjXO0+TgvyqR1WSQlmflLtlasGkW9y1XOtGfXNYogx?= =?us-ascii?Q?BgpV/SpS+19YOC9N6U7iiHzzl0vmu6RN1wh3heMc5vXPcGQn2em0IcFwnDCn?= =?us-ascii?Q?j+ZWLXoWEwIdzvJONSHfholFHcBSAQ2E7hBS7MzGcDqFd5tAn1uPzoC80WuH?= =?us-ascii?Q?8ZXIMK/7GhjuAPgGlQMpVKZ0szqmD3y/DCA87DfIzspi+Luv59jThrOYasSD?= =?us-ascii?Q?jEfD1LzkeDwFSdktrCnTrQ2ywCx/S8IL1ymT4ptvdyHKs7lnV1Q1HZ+HPOtM?= =?us-ascii?Q?aF/Xa1gp0L55tX2rzS1Rd3JxSTsZlrPl3/CcRmeGyehbI6YgGugdZNVRkQKx?= =?us-ascii?Q?ErlkJKMzlYwDVY2X8yo1LJ1yq4YCAW77XQFcUWjzJxYcR8Dx/3VglzQtyeu/?= =?us-ascii?Q?ube2p9Vk7A=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52c94bac-fa61-46e3-5a33-08deaf6e0f2e X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8585.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2026 15:00:37.1102 (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: AWgi0nzur4YieaiiAeqvhCsXw2dyY43qpWyxOaaGUBjlJizc10lQIn/lxCp2U2mDPfnZDICYlSl5hdz+ZRU9yQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB9976 Content-Type: text/plain; charset="utf-8" The 28G Lynx SerDes is instantiated 3 times in the NXP LX2160A SoC and twice in the NXP LX2162A. All these instances share the same register map, but the number of lanes and the protocols supported by each lane differs in a way that isn't detectable by the programming model. For example, not all lanes of all SerDes block instantiations support 25GbE. So, using a generic "fsl,lynx-28g" compatible string and expecting all SerDes instantiations to use it was a mistake that needs to be fixed. The option chosen is to encode the SoC and the SerDes instance in the compatible string, with everything else being the responsibility of the driver to derive. An alternative considered but dismissed was to add sufficient device tree properties to describe the per-lane differences (implying: supported protocols), as well as the different lane count. Any decision made for the 28G Lynx should be consistent with the decisions taken for the yet-to-be-introduced 10G Lynx SerDes (older generation for older SoCs), because of how similar they are. I've seen the alternative at play in this unmerged patch set for the 10G Lynx here, and I didn't like it: https://lore.kernel.org/linux-phy/20230413160607.4128315-3-sean.anderson@se= co.com/ This is because there, we have a higher degree of variability in the PCCR register values that need to be written per protocol. This makes that approach more drawn-out and more prone to errors, compared to the compatible strings which are more succinct and obviously correct. NXP SoC reference manuals clearly document the SerDes instantiations as not identical, and refers to them as such (SerDes 1, 2, etc). The per-SoC compatible string is prepended to the "fsl,lynx-28g" generic compatible, which is left there for compatibility with old kernels. An exception would be LX2160A SerDes #3, which at the time of writing is not described in fsl-lx2160a.dtsi. As "fsl,lx2160a-serdes3" implies it is a 28G Lynx SerDes, it makes "fsl,lynx-28g" redundant so we don't accept it. Signed-off-by: Vladimir Oltean Reviewed-by: Rob Herring (Arm) Tested-by: Josua Mayer --- Cc: Rob Herring Cc: Krzysztof Kozlowski Cc: Conor Dooley Cc: devicetree@vger.kernel.org Previously submitted here: https://lore.kernel.org/linux-phy/20260114152111.625350-3-vladimir.oltean@n= xp.com/ Changes: - Update commit message to remove leftover information stating that we use the per-SoC compatible strings to impose constraints - Add review tag from Rob Herring --- .../devicetree/bindings/phy/fsl,lynx-28g.yaml | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml b/Docu= mentation/devicetree/bindings/phy/fsl,lynx-28g.yaml index e96229c2f8fb..8375bca810cc 100644 --- a/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml +++ b/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml @@ -9,10 +9,37 @@ title: Freescale Lynx 28G SerDes PHY maintainers: - Ioana Ciornei =20 +description: + The Lynx 28G is a multi-lane, multi-protocol SerDes (PCIe, SATA, Etherne= t) + present in multiple instances on NXP LX2160A and LX2162A SoCs. All insta= nces + share a common register map and programming model, however they differ in + supported protocols per lane in a way that is not detectable by said + programming model without prior knowledge. The distinction is made throu= gh + the compatible string. + properties: compatible: - enum: - - fsl,lynx-28g + oneOf: + - const: fsl,lynx-28g + deprecated: true + description: + Legacy compatibility string for Lynx 28G SerDes. Any assumption + regarding whether a certain lane supports a certain protocol may + be incorrect. Deprecated except when used as a fallback. Use + device-specific strings instead. + - items: + - const: fsl,lx2160a-serdes1 + - const: fsl,lynx-28g + - items: + - const: fsl,lx2160a-serdes2 + - const: fsl,lynx-28g + - items: + - const: fsl,lx2162a-serdes1 + - const: fsl,lynx-28g + - items: + - const: fsl,lx2162a-serdes2 + - const: fsl,lynx-28g + - const: fsl,lx2160a-serdes3 =20 reg: maxItems: 1 @@ -60,7 +87,7 @@ examples: #size-cells =3D <2>; =20 serdes@1ea0000 { - compatible =3D "fsl,lynx-28g"; + compatible =3D "fsl,lx2160a-serdes1", "fsl,lynx-28g"; reg =3D <0x0 0x1ea0000 0x0 0x1e30>; #address-cells =3D <1>; #size-cells =3D <0>; --=20 2.34.1 From nobody Sat Jun 13 02:06:48 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013028.outbound.protection.outlook.com [52.101.72.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B07FC2BEFEB; Mon, 11 May 2026 15:00:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511648; cv=fail; b=p6EbFeBWM2QYXqVPd+OA34dIoT8PqEyItqfb6+y8Hq/VWOpTk7/cWGFHcG2heA7WO3zL7NqFw0IaIIqlJ1EJhHJXdqXdWODR1f6ENdkHZxySWunlf6h0O3jI359Z6uahXpESlNICb1ltcphFAfOzYwrX1sVJai3jLy9m7/3XsTs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511648; c=relaxed/simple; bh=fxoasg4a0HnGbGsSA0+IG8VmK3GU1obXXXFjDfYE2D4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Cv2qWYxMveMPc4gvrdgL99pYDfXQ635VuvV2Aie6G9faM7QM78C3eqkTSKXDaLOpWBlNauOnQOchIiGXL6eUSWzgVoKCg804bXl2NFEBfmiUboowOQJ3Bu2HTKhTjBSjqdeKuZXZFhQLcOupEtbKCd7aSfYE0W7O0aV12GKp9CQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=UVOWFBxA; arc=fail smtp.client-ip=52.101.72.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="UVOWFBxA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GcDEfsNjOCYUCo0GYObYj52mu9d6m9yY/A6WN7kO9d1OrBlj48HjZDWUulfLrkIr120OfAaL/ETZy7tkPWzQT1ikbWQxjN3ZyjBUN9HfGdN6xNSYB2ofzKOTcRunSmFmA1KuNL/zbGvzx6RnnJlmd31ufWgahddv+hHv2PRUUsXFcarXrK3aao3hTTQTdOOWqDZS4a0+zifgPXAy2wEdNtIQ4qMft9TaKepOqw4HBGOQXSP9lWlgP+fNTEDc0cusJE9heKyBu5YMI9NAsh+aDkOuQkfX9Azn9IXHB7FTyJ4lChQP+ry2nSdcHxq3xn/sF/Lsq3paYfGuLQhjBMdkJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=cERAfxlhJ7ayrncDmYGRCh3+eiBHlX91FXTC41i6nnI=; b=pRUm6SwWgZDR6hzX36XY4/Jojs+PwK5NlAw0wdSZy92jrXcUQ88jeuBRgol6WXjOmCJ77kexWlZNpxN9BvxbYP+6hC1zzN8q7jgC7gDwWfaTFsJSYMNfyUcUf4weuSGWlZ4l31uciSx4e+CZ+gGcaJL1Ca7MUWqeqcpMzEJ7W+Ax2klN+rHFJIKCHsf3BXb3tXOFQQsLZsegOnHGwAfU0KW3qZimtYgTj66GdeGKUI/PE6wYCLjF/+upovgkQMvlQIyi0SOoNu2M35D6TTkg7Ov9uBLUB7yop1Ys7RXoFUEqNlj22eK7WCZ5egTGZWYhfcOQlYJnn/WJJNJFL3jTqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cERAfxlhJ7ayrncDmYGRCh3+eiBHlX91FXTC41i6nnI=; b=UVOWFBxA2rqCTk1XT2dPiEx462iLVmTJv8o41OQaguzRdQRbHnLx4adg8YFYjVt//MkXNKqCjEdtJ8XiIiaieD2SumtIgAOrxyBMaElwhOS7r0ju7Nly3jPNb87isTDAikr0br1TIX/ie5rbMrjBIQBw45Ta49rDvjxIRM8dalOxj4sU1WmEtar4j89lrZ8uBfmAolj3cmtYwnPq/PGdnIJtd2k/Aa/+RTyk1Om+85MigC4BDK38dUqQcF4WcG6axQNdyqdBY9bkpp0kdEzJ3YV5AC2U0jG2bX2aZwbIv6wbadLp2nUc7sPgwfpI5ACQl8e7q21Pfotf3Z+JAYujTQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) by GVXPR04MB9976.eurprd04.prod.outlook.com (2603:10a6:150:117::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Mon, 11 May 2026 15:00:40 +0000 Received: from AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9870.023; Mon, 11 May 2026 15:00:40 +0000 From: Vladimir Oltean To: linux-phy@lists.infradead.org Cc: netdev@vger.kernel.org, Ioana Ciornei , Vinod Koul , Neil Armstrong , Josua Mayer , linux-kernel@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH phy-next 2/5] dt-bindings: phy: lynx-28g: add constraint on LX2162A lane indices Date: Mon, 11 May 2026 18:00:20 +0300 Message-Id: <20260511150023.1903577-3-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260511150023.1903577-1-vladimir.oltean@nxp.com> References: <20260511150023.1903577-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM4PR0302CA0012.eurprd03.prod.outlook.com (2603:10a6:205:2::25) To AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8585:EE_|GVXPR04MB9976:EE_ X-MS-Office365-Filtering-Correlation-Id: bc84274a-68df-42a4-19ec-08deaf6e1049 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|1800799024|366016|11063799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 6JfNjHPRuIP8yP5+g+VN5JKcQzsbQCpJo1PsCBTf4yoHkRS2t9zJHrBd2HVphrdqbnaNOpxBsbOw2/qDEWVOUVtSpKrz1hkDt3vDabvjkHRJLoH2ochvtjPJgMe6PZljWkqfQZV0B8hgLpPRsl7bF0g+fvsVETqSmZ1sSWYu1L1tSCmHVIR8D3yrOJpz6/S2clzV+0YvjPkTqmWXHiHaYD7naZpfzisUB7nIETItu9fdgaCDA3VK1+3XpwGLWvd/a7i8e0hqh5KevD3b9XQWVyQUh5g5hDJIlxGPRnZZt/lC2aCBH+SPDpbD273Wd9SwJFqshS1Jl7pkVCph5W535jf1G8EmPXVxn36p0i+88FrP4s351Wd5bI6ud8z2euZQzpv+aVFdYAFEclW250U22vgSL/VWz6q8SRhIXHS9ekm8udhAUfRJ00uGnE7xTqytdZV+sPVNzWKRPHcckdvzZVJDx2ODy/3p1liGL5A8vdX8h7HjSx3wMAsshSebfZsdiJig41il5N5uC4Gg/CEC5x2Ft/xfc3n23u7esaobo5wgPuLta4PKdVmjkYCYr5C+mlo0jjh8NiE5NrTlR/x3dobQALN5J3KANDRzLbYpSS09zIPAMpfn2sIMYVWEqklZmT6rST1VMbg9S1QFEzwd8NAbHrebqew9vSby1l576aIGFEMGXD+G2zQykCdgQ1K5 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8585.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(1800799024)(366016)(11063799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YkQhC85EHlpHpzn+2LE/j06HBJL2bPlEjF5yxss+UpTiu1uVMeiyQOXtTEXZ?= =?us-ascii?Q?2MOn5UwQKYgVbTyaMm3iHoptcLmCfDB3vWA6sr0p56g06b+2v0ruj+B9JBp8?= =?us-ascii?Q?PBL657pDNocKxey+Dj6MAg7PsFcE/ETgn37ESFre5DydLZYsY1SMaGt/FlzA?= =?us-ascii?Q?RkDZtsJo6XGaI+3yxCSgXqDp3kYPgP2PcA6S1LuIoNrqOp2uR4AgqZPPLEwO?= =?us-ascii?Q?f4pTU1PRoY1+D0RLX65cNf0ieUnR1zI9e/pXjfz4pXYtDuM8emt7pF61ga5h?= =?us-ascii?Q?3rbd3apk7Spwr1AA5S1bhpE3MnfCDd/tYWt4GuAz0nfhtVseg9yfD2JcVN5a?= =?us-ascii?Q?3th+YI8E3+ivwB0eCxOrDjMn0tn2JOtZuXzYnbUWVm6yJGV8TKfRh/VETEPk?= =?us-ascii?Q?lNVbK8GsQwbClEC9Hcl92NXoK7tvnbgpT399orYrXF+CoX8jh+1efD8R1Ntp?= =?us-ascii?Q?hQhi4HvNvp1fXpy5w8RzV93MUgGOZ6anoe2dy36+yYYxhFlEZthfF9UGhf7k?= =?us-ascii?Q?HuMONBMt2DZ/1e6Vkd6l3JfKpsShqqlL04CgXBl8w672ZqaYK7fvsRsFUlw6?= =?us-ascii?Q?LUu0HjajB94yxHl9sBbW49c3PA3SRmN+8KwYyk4wv1CRSQou0aEO0C19COkZ?= =?us-ascii?Q?m8g/mZ1t9+Cq3nngIvGke59nftPpdeSl1qGBFjharhr7fwJrMyY8yCFjKOCX?= =?us-ascii?Q?Hx3q3QiBVYr5M3gFxQvITuX4WmU792rewkOJoDPoNtGRcCH7k6kTvc///+/O?= =?us-ascii?Q?JMNLFD/nXmOGyPE5nGiKpJ+x4gOx3PF8CJ6fG5OBfd4tKrjrP7K76l1u456t?= =?us-ascii?Q?YsH3C+oAJhKHpLhYRJ/QnvUscv8wB9vpGL4kTzt9UF4vigG3sybDHUmOquad?= =?us-ascii?Q?lNpqvLNuYhwGIcX1OyoKfqVarXq/4g24PsLL29KkCyv/W4HG2n6EWFRWKPUp?= =?us-ascii?Q?r4QUbwte3wQJiiqmqBZfwf4yhUPm9LKpOStYbzmZldm0AyQg8NwDDyk7xgQP?= =?us-ascii?Q?tRnXVUzjo+BTLNzVLo2x7VrUgEGyvU8bK7prcTuLTl4IKX29AFAAoOizveu8?= =?us-ascii?Q?rO9Ja66I4Gt6NHCelmmkq5FXPfJ0xMQHtnKOH5kSMwVqUasCIfPykLNa4U4m?= =?us-ascii?Q?j2xrCZitr3Qv50WUlcWqP+bcYF08UnfuHiQbm8C6F/p2XT9YrOuhxmYUD3z8?= =?us-ascii?Q?K6KYkRKwZ5A8OCD9JNkZLM6MBPCdiC0LCjQzBfbyM5UYZ7V7BN11yCxLBx5I?= =?us-ascii?Q?H8eGX8i21CtKKJhr595pbgYVfx602h9eM0nBXKzy1GqaMv7+nIHd0eTeJCNb?= =?us-ascii?Q?wOOVe/f+OpgUcKwIsOxIRSoKSLhUUiM/BpRqNuHQGRn1BzXIg4r0kVyw0wqp?= =?us-ascii?Q?TBz2xehPAB8xYLxKatU2ZFvAEnrLecnh3rtC3nIFT5hN0qMnjPtvffJbEVS9?= =?us-ascii?Q?kyiROzzILY+HfIK6b9kkN0g1+YRCiiqWDzLpmrAJdRPPkQVGWgAjBxrkdKWv?= =?us-ascii?Q?XqkbhJ9FXdTVKV3pZIR6QUjlx9jq/C9x9wjKEjJNofdlCjNVX8qxZEgSbNUM?= =?us-ascii?Q?h9rRTb8TmXNVx5vY6hHbivyV5KaphwCWWhzP22Wf0lSinhwsnPo3mui69UVH?= =?us-ascii?Q?nbJlqaqFkYvJR0x7rWGYS4B0IJsg5KemNKtnwQzA9kfBfPamsxEjyKaTdwK2?= =?us-ascii?Q?08uYFsOpric6va5KmH2h86xtLDX6c2PH5Do4CrS6zKRqH11wy7O8kWcKUDqN?= =?us-ascii?Q?r5AS4b73Aw=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc84274a-68df-42a4-19ec-08deaf6e1049 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8585.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2026 15:00:38.9156 (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: FNWuYsZOQvrPtZAfWZsQ/M/Xx/N3zLRKmy43RDuDhzrvGHwskKMMqpjWmjLjja3pTQkOu3GIEe+/gXMAvsc25Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB9976 Content-Type: text/plain; charset="utf-8" The SerDes 1 of LX2162A has fewer lanes than all other instances, and strangely, their indices are not 0-3, but 4-7. This is a best-effort constraint, since we can only impose it when using per-SoC compatible string and per-lane OF nodes. Signed-off-by: Vladimir Oltean Acked-by: Conor Dooley Tested-by: Josua Mayer --- Cc: Rob Herring Cc: Krzysztof Kozlowski Cc: Conor Dooley Cc: devicetree@vger.kernel.org Patch previously submitted at: https://lore.kernel.org/linux-phy/20260114152111.625350-4-vladimir.oltean@n= xp.com/ Changes: - remove redundant patternProperties: "^phy@[0-7]$": true from the match; having it makes no difference - clarify that the constraint is best effort --- .../devicetree/bindings/phy/fsl,lynx-28g.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml b/Docu= mentation/devicetree/bindings/phy/fsl,lynx-28g.yaml index 8375bca810cc..d73591315d4b 100644 --- a/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml +++ b/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml @@ -78,6 +78,21 @@ required: - reg - "#phy-cells" =20 +allOf: + # LX2162A SerDes 1 has fewer lanes than the others + - if: + properties: + compatible: + contains: + const: fsl,lx2162a-serdes1 + then: + patternProperties: + "^phy@[0-7]$": + properties: + reg: + minimum: 4 + maximum: 7 + additionalProperties: false =20 examples: --=20 2.34.1 From nobody Sat Jun 13 02:06:48 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013028.outbound.protection.outlook.com [52.101.72.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D18B2D738F; Mon, 11 May 2026 15:00:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511649; cv=fail; b=iQNJnfk8Skpwps22ROBNNyzgyyL2A1C1N5feLepoXmnWQBZXfFo8vmyGj+PoHVJdI7yn8gyzp9UsG1j5NyompyyuMaCfILM1Q4bdat+sdTMNp/KAhcHVngdlk5TFKjL9AjsBx1NDMHWeNSFhA3K4EyM1PglIF1BXynMVneI1osI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511649; c=relaxed/simple; bh=LpOWqVqxrtpAz0vxsZKRlbGRI6kBLrJOWnMkh0g0FLE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=HfleYeMuGu0Zzhqe7kjJWCeLhVHUUKV2M8n/C85j4ERjkYWFBYb8O0YXzogjUCNs4mJik95L07azAg7qQ1Ciby5ATsgsDxPMN6eE8itoeM+M/1pIf9ai6goDMRP2U/VHppR+29JUu4aRMZrtr8XVjm4ElGzf4mtgEKW39da1IAI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=g1z8hu7L; arc=fail smtp.client-ip=52.101.72.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="g1z8hu7L" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p76Q6Osl9hY3tbf9ypgp1rM7RRyxQpbQanG25FBuSb+3nL55ZI2c7TsmqlQTtDuBjVL9jVwhyS84rp48hzQMB6UzkbOj3z6pOIBco0liG62DxihPAnUvrOstHZHlF+sjDGWFe++dugZw+Yhl2gS4tRfBfeYjzSVjJsdoExT2PobJvIz7iiJC4jIbGOh9Oo2zbkSaDz2doCaFUZWYX3j6DW8tJmSdvuJU/ST55TvNWi8FwZdXuPI8bE93s8/t9een62v7ANhPu1Mvw1t0I+iyLbwYmqPRHdFx52tNc+9sGg+LKmejqynf0S320MrwxXQOnQjctWDV/XyYh1tHsUoa3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=ssxnr+Z+OXXeGs8K2+IJj6eKRhPpAfCjpgwdqB9xTe8=; b=ipYkRDbdriA4L6f58bQefd+9px05PWdHVycEF+AZCHvWrKV7fqZ9gH7OMphp55o/zTooaDv82JDuGntlY1bzcdnBf/mjyFw1RqPIea+ARz5w/OUYbdkEoho1IaX/fVy5B8REAF/5wBPk+ZNqFC+UMkMbKNFhL4s9xQK3sDTcWVWLXZE3Zvhy9rzxsyM7OVS2Hh+dKBWviWw1JFa7X4h6R+Usj+Lh9r8D+S0hLDWN0CdNL3ipuu7xBvejeOBMCVFyVWDG+W9i0wf6lagVEyE/tUZNyzkcdBn3YOePupVtOxAVo05fSNHWO1Dhgy2ZdJSSR1QZilGVvQAmDas07T7tmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ssxnr+Z+OXXeGs8K2+IJj6eKRhPpAfCjpgwdqB9xTe8=; b=g1z8hu7Lzu52mCDftt/fYjJ8MgGSMqFvc9FULSzRPVBAi5nZmF3l1HfuuAhv8kwhgHwe4Okhj4BHn3mYx/eRkbzIT7kGPEtweuXtagcVrvvOVVUDJD9j3amP1mA60c2RIzFh9URv9eGNdjvZqPCFIWM1AB02OpT49bkl9k8z3JhJYpJSr3kseRsl71WzEgOIptfgjnm+wc1ovND9zpIXYC4s6beMsX6UljvBJwWs4Tsx73e1N+8ky1jjgz0eN/2Biq3eeNQa+fXRww/MMgxpNeW4gPVWwiwvc9hvDzOnX3sErVB/+3sQKX/a+Tnulctn4aykRwXmnKpM1j74AphCmA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) by GVXPR04MB9976.eurprd04.prod.outlook.com (2603:10a6:150:117::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Mon, 11 May 2026 15:00:40 +0000 Received: from AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9870.023; Mon, 11 May 2026 15:00:40 +0000 From: Vladimir Oltean To: linux-phy@lists.infradead.org Cc: netdev@vger.kernel.org, Ioana Ciornei , Vinod Koul , Neil Armstrong , Josua Mayer , linux-kernel@vger.kernel.org Subject: [PATCH phy-next 3/5] phy: lynx-28g: require an OF node to probe Date: Mon, 11 May 2026 18:00:21 +0300 Message-Id: <20260511150023.1903577-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260511150023.1903577-1-vladimir.oltean@nxp.com> References: <20260511150023.1903577-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM4PR0302CA0028.eurprd03.prod.outlook.com (2603:10a6:205:2::41) To AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8585:EE_|GVXPR04MB9976:EE_ X-MS-Office365-Filtering-Correlation-Id: bfef3ddf-3eb1-4089-dc76-08deaf6e1164 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|1800799024|366016|3023799003|11063799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: AV7fQpOKYeBhhHv595R6HpJUvR0jn++WMqjO7QG9iykCXXTlxs+oUxqZtTRWVY6Ygkf6N4+GBjnzQi7gOY7xdV1L+qROyoEmIsRgnAu513kVkLH9fPc/LMF94PYPGyi0+HShl3mzVUj2XlgOHDCkdewe2lfPOzYMFx8EiUauG8ZaERctvvR3O2d/Zd5AU8YsbvvYPSO5H6WZ27MBE7xBA2p3kgI4hjfHTyBcpzblM2Tu7MfESl/AlqKJafZIj2FWIboNeRa+lnj31Ts9JG+cmBCRvrwJVmQketl8SoKesBzeiVgwnoXhNBzHH/X4DjfkzvYUbro7xAUdpRVxLtGvtzs2DczAKofybKRneRXlfqU0Sdi9Sh1h5qRuhCG/Qhut7+2DQ1GNGHnqlAFrOnbsOpCWgpW4M8lYPBHBfGN4Gx2mRklYUUllWCanqbO2lHBv7wzVPIvGFRjgIVT2fjrsz2uVMImFJNIhit2gTi/opETBTlErvhCOOLBNbqa9HEuuuNKoBQFF/mskf/YTIpcgA46Mfa5DkEfMorRGhn+t5CiXq83D8ZGfVy56h8GycLL6/TrgP3COwJ9b36ATfCFoMAj4oKw9f+3jdGq4UNhdXFDe15zv/4hrQHvvTiWXlT0FkXzv0OzH7AmeAYlcX3HXfWxgLmPKlnwyN3lu23CQgUXWCwO1Puw/bJ/D4mN77t7K X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8585.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(1800799024)(366016)(3023799003)(11063799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wz8wgRGODD2xX1+rHBl/P9+jZhn983w6XFwC3VPpLXthfHt0GS2CoOlUhLz9?= =?us-ascii?Q?7B9cy8Ru9A7A9LZGu5V1QhxE3k987hWUi6iTqvwywwxi26WP5xkEDr4uj9un?= =?us-ascii?Q?DvOrrSxMN1aKg2EJ+tDA9CbwfT9dJIwSxAcQtA9T+RPQHcqyZzvxePXXXqZX?= =?us-ascii?Q?5QotHRmPfTkUpgxegk2ehB8MVN9aSxednIhDn7XVEKJDdMgn0ikYBqALbR49?= =?us-ascii?Q?PqcbiR+tRmBAh6H+oMnxj/65FYrB6TNxIWDDK/83XvgeR1cjtK8JtTY1ibUH?= =?us-ascii?Q?mA04oXbBJS64Vetcg/4q9bGv2VkkhVzw9HAlcGnSferQX5n+s3ECNXvMLVV+?= =?us-ascii?Q?AFANhmNWmZSkrE7HoP3cyHqV1OYmf4KeO9MB2lEp/yUQR2aZOl6X+Ilogrk/?= =?us-ascii?Q?nUwZRf1+umDTX36aGCHP67Wqob2I6VVTPTYbuZKWzVbohE/g3Yf0uxedVjRw?= =?us-ascii?Q?jOh09MQi6dkXd9DkUxA2j8rqfNvihfIQbCIb9EPVZALrItmm2nVgPxUiBZwn?= =?us-ascii?Q?jSBiSSSqvfdo4OAEPmvv7fsZqXgn45Tis3gkBIkwhTV/0Oi4IevbfGaJfbfx?= =?us-ascii?Q?MsiTCmlUIoS+gA6L+cHlmlauxYqNvKrEf4kcTy/NsFJS6lKt7vGd2XpehNU8?= =?us-ascii?Q?e4tWL8KXeB8tArjJZ/BMUeYckUgn9hP+6JmN0guv4snj38lK8nD0Sd9tzDRJ?= =?us-ascii?Q?zSLRqaAYw7Xdoqyl8kA9I9uLUo/boZuf4JwSioiE1CyhHw/7Y2T8EYbhvV7e?= =?us-ascii?Q?rKDt5ipgIbeCJWYTAASD48/tJt6xy7gAQbnnoeISD/Q3ZEmWtcDQqbKS3FdH?= =?us-ascii?Q?Fc0k7FLy7YK/Spz5C5BpOt5kXuMJgaJ04HLMgHEb56NX3quJlSzCmHOOLm1j?= =?us-ascii?Q?WOgo0svhdxwX8BeJrrnteoY98/iWtLMHiLfdVUquE5KpmHtDYDhuEoldTOnC?= =?us-ascii?Q?YYooRhShw96w74DGc6y4801rgbQKD5GTBN92ri3ls07c1gLK+kh4u6hJzmCw?= =?us-ascii?Q?s4jwQrAAepAZS64oEfRezCWiBdhuEYhZf3jOzFhHXNYl71ZS4rMx5Rfxdsl8?= =?us-ascii?Q?WUZjJynSgjOjAtPEsiEl1/BuWNkBQnxph87YleFw74tT7Q/BORfjVWg4KW/v?= =?us-ascii?Q?HnL52LOXFjpSRsksHJ27LkdGexI/LbdSp2TsfcH6LQyaDpSPP+bX0KTaLuNl?= =?us-ascii?Q?eh/5WxPkNaQuPUIGP6FJQ+MeSCPGROg+aK5avTJtx+yjOKZFvG7PcRmoNxlv?= =?us-ascii?Q?FsiibmMtZ+43nLfSCsCM8Gkv38VMDl1ItZXanFHszhoMSNhNxT8wf4hwjI8x?= =?us-ascii?Q?prsqgq+ZBNoE6sVlxnMa4ofZ6TQ0JIZcyl7ipyMSi9Ks5l4uIPYfroCjXEDp?= =?us-ascii?Q?0ioOT1tEDSGkxCGG6+1jXAS3Gs8FjvZE25vXT5w44lvquVNpJ2BKOCjo/6Q/?= =?us-ascii?Q?RS1hSTkp+e86hYyPy1o0bRCQ8ewQ8hb69Itvg6asQgVjuZWUy/5NV4OLkWkV?= =?us-ascii?Q?avOTLHSQkWJjLu9/2JfKUvslOyLNv/2JT6uF7v1OqQeLRzMVrIiSJkdz3ItD?= =?us-ascii?Q?i6acLzxbGg9Ls9mIdnminr4mQuV8Guy8gTnEun6s4/1XNkhINLAiNE4D813h?= =?us-ascii?Q?uxsYzRWYt2kgBtwfNkCztUeS1ny5z79X22qJ5fen8ZsUUzOPmVbvgPMI7Oys?= =?us-ascii?Q?LG8aFuS1UuTP1iFX3Q56qh1lcVaJjgc0pYkTTH1qZZ5bfkE4wdD+MGOfTezv?= =?us-ascii?Q?8QQol0NkzA=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfef3ddf-3eb1-4089-dc76-08deaf6e1164 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8585.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2026 15:00:40.7891 (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: Tpfm9ji8i8jvJhxVSFO9m4IL3veA2PACZ5ubIvpOqRFZxeD+CkA1G5y7kEAv6onLAAHXJmp0cLrhzhx4mhnojw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB9976 Content-Type: text/plain; charset="utf-8" The driver will gain support for variants in an upcoming change, and will use of_device_get_match_data() to deduce the running variant from the compatible string. Currently, the driver expects the schema at phy/fsl,lynx-28g.yaml, and OF-based consumers, but doesn't enforce this. And it is possible for user space to force-bind the driver to a device without OF node using the driver_override sysfs. To avoid future surprise crashes for an unsupported configuration, explicitly test for the presence of an OF node and fail probing if found. Signed-off-by: Vladimir Oltean Reviewed-by: Ioana Ciornei Tested-by: Josua Mayer --- Change is new. --- drivers/phy/freescale/phy-fsl-lynx-28g.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/phy/freescale/phy-fsl-lynx-28g.c b/drivers/phy/freesca= le/phy-fsl-lynx-28g.c index 4ec3fb7a0d69..6d0c395d20e5 100644 --- a/drivers/phy/freescale/phy-fsl-lynx-28g.c +++ b/drivers/phy/freescale/phy-fsl-lynx-28g.c @@ -1286,6 +1286,12 @@ static int lynx_28g_probe(struct platform_device *pd= ev) struct device_node *dn; int err; =20 + dn =3D dev_of_node(dev); + if (!dn) { + dev_err(dev, "Device requires an OF node\n"); + return -EINVAL; + } + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; @@ -1301,7 +1307,6 @@ static int lynx_28g_probe(struct platform_device *pde= v) =20 lynx_28g_pll_read_configuration(priv); =20 - dn =3D dev_of_node(dev); if (of_get_child_count(dn)) { struct device_node *child; =20 --=20 2.34.1 From nobody Sat Jun 13 02:06:48 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013028.outbound.protection.outlook.com [52.101.72.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 151A82DFA25; Mon, 11 May 2026 15:00:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511651; cv=fail; b=r8t+5JnOBiqu2Cf6AIBEDBBPiUKLaihbl4+P6yvvQDgAAAAPtn1RHyxUhtATPpt5tmeMnE5z3TTgP1K5pGDN7dOgrN7IHXcBnaJuXQdfTTFLtZ52EJiS8TeMqh0tFdVQ9mxNpDH5ZibNXWAkgSCApFKkTEkO+RN8ryy4R4Amfs0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511651; c=relaxed/simple; bh=GSlNHgEKkos+cisfRnD7bRYrMV5mJQ5Rw4Cd1kJPTC4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Mdt5k5veIJRUrdHllpLMiCnOzVN8zRSsupIHLBXbodcs3Xnhpl78ILwrcInaWPgTpm5mcySCvBINKGhd/xHIX+qQjQnh0W7SczulCm9BFCgQSuaM2BUzig6U8W9zXZC3BflPRCm5JWbvbboD52dgkIbEdQfRC8lBW6wbqXpfkSc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Zj5/MVuQ; arc=fail smtp.client-ip=52.101.72.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Zj5/MVuQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Dh8eg4MK3l13+cVNACTeuV6XYzrsE0bg97pm4IgWtI0nwlOa9hKexbIbMEBOzIK/h1CvaAf1FVwZvLx3INHLNN+MMlTsMg8p+gf3bFbw+cgZiUEhhIOb6UIZ+Th8CZjptfDAJJlsFYL6mAhB0U8Bo631sJZA+NiQ2p9UPUI6Om6k3HYfxpI6QuxsGt1ZEOtbwVd93EKTKJTDoIfK4WYfWTyIx10e6DRWCIcb0D5+t9qtJeJVvoaJJifD1G9fEDbQmVLRcHfnG5rVm2pyv7cUBADQrroLdhvS0Fub0Tk7ZkkIk1jQLypC219x8OsPL7pYg1SLkVYxzWg6mXE3Ri1EHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=VIzsNa2/XI9U1t21cFFHbt7qVEwxZwK4HrgAmgJIBew=; b=QOMekZP7JZTyTCvUZHBBKjfpjiyrslAfHNMYEya3XXtRblowNDueUt2F+HcmyWOeNh94mQz64gTIvJs0SxqlNsJ4OW+WDvjwIGYl+bJyG3A2sekqKSoTMHZ5Tjq2LWfTEGhkbELdVoFUhXAqFe++3gJWc7yfEEk2td5U0b+bO0xZeBtf6JYb0rM6wkRCMpMOGMUVxkAUnGnDubmdA/bVPJZm0kmMNEiGT83lFv42kp5k7udamhBG682cUJAwNy9nSNxB4tKNpN5cJ6WYf+RlY37gljdCCyLaPY6iZ8wSQK+XgnbzCfVLuolDfiq7NIs+bMus+2G0wSknkZOrRtkluA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VIzsNa2/XI9U1t21cFFHbt7qVEwxZwK4HrgAmgJIBew=; b=Zj5/MVuQzOWavLfYjNTzCrvw4B4it1REXtqdd1GEkW59NXy46rEj5IwXgJTOd7BhWKDgNn+rDtyyQCuNirDklxl1oJ1rwW59fT/BwUbygQGFMMBk1VgaOFks4fcYocyXPRPr0xkb1cJW06JwzbkQMIfBLwz5AtW87/ppc5q8jcZvQWZhNifDcbcaCNKyY9goBZ1pIwGd0KD9l2VD50RoEgpUPzH1a287+16+MIL3kXvyF0sGHePhZVpQj8+0Sxc0XAKOKSRe9/blK3ck3YUele/E/GBkje80oNL2yyLtQ7NmDu7r1caLS9SajpjayNDCDalt4FW2aaCpeuuX9nxADg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) by GVXPR04MB9976.eurprd04.prod.outlook.com (2603:10a6:150:117::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Mon, 11 May 2026 15:00:43 +0000 Received: from AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9870.023; Mon, 11 May 2026 15:00:43 +0000 From: Vladimir Oltean To: linux-phy@lists.infradead.org Cc: netdev@vger.kernel.org, Ioana Ciornei , Vinod Koul , Neil Armstrong , Josua Mayer , linux-kernel@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org Subject: [PATCH phy-next 4/5] phy: lynx-28g: probe on per-SoC and per-instance compatible strings Date: Mon, 11 May 2026 18:00:22 +0300 Message-Id: <20260511150023.1903577-5-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260511150023.1903577-1-vladimir.oltean@nxp.com> References: <20260511150023.1903577-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR02CA0115.eurprd02.prod.outlook.com (2603:10a6:20b:28c::12) To AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8585:EE_|GVXPR04MB9976:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d258410-4f18-4be1-9589-08deaf6e12b2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|376014|1800799024|366016|3023799003|11063799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: x/EVe8lkToIS556a1BrJhL6BhZJW+kr3M+n98gYhhqotDY8Fw/a4lEoDpC6OkXXe5XOMoQKXCh0aGLr/hAp4/6HBG0Nl0hinpY6xreopa8gMbUP1a9/gBf0EDWssP+Gyj0WvV4QplVEAWFqoRTk9XMd7qy86HuCOaWm30A+wQ0d7qTJl+YGY/GuaGVSO8jaIa+97ky6ZMilughMsGw9ipZ6q08FnQ5lgLNDfpag8BqhurzXLtkTVOyWVzhP4zTXlYst0EKJLIHRZanxWl5CmZdAn7P5Wy8SKn6gT0eHkecEljf7ZX5Lo0sGolLCE65Wb2Df5gQNom9Z7kq30z8JAkFNOA491vL/zfcxgOsGhxbRIsT3RstfeLo2XO91yI8OX2XvpeylaV5aqEBZ7/C2lKZJwmqU030yokcmbC3g7uoU2cddMfJjCI+mMxW60GsVC7xjes2phUJByfh/uxAk9uEfngETsCGBecLNQNyjnoy7lNXQQcKuctXjLYet4ErgugMON+4Cje2dieSTRVXqb4uqwYw1bXt23l1zlh64ug2/t6GTIXpwttdFIyGIOqqag1Xm7W0VE1Q2q3qQCGJJdQPSNKBKXkusQewBEiIVJpxyrxBgyojK2OblTB7OTiLakDhzsx3VE4iGhAfeJqYsdws87fnpMy3tUsj3AtpuffTqhBMYy7HeVqv/Jdwq2OuKtle2bpxOLc/sdU9moRaioWA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8585.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(376014)(1800799024)(366016)(3023799003)(11063799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9tm/Dr4Jqv9Xrg4NkCeyvTn6DUN/fSUychNTqBhpuS7m2d6Rw0PVAAc1OfOS?= =?us-ascii?Q?xlSwG8bD6NukdMEai8MTRGNZgTuUONCo9NTA3qRP+jjKaQ9LMOI5xypwODPp?= =?us-ascii?Q?/om41EB/wKdt2AMYJ3M4u4emWqDAupx/HDNWAtBl27/H7a/2WcdnhqveZj1s?= =?us-ascii?Q?l8BahFglu+3UU+lr202Km0SeloQhhTDKKUBH82dRxneQW15BaTo5LucleiBx?= =?us-ascii?Q?iPwdq2BoV4ZhrUSX7A5B6adCnnIYaFI/gS8yblE/Z/qwkORL5Gb+Yw9TrDZp?= =?us-ascii?Q?iNqVjHu3h3ow1NIA78KQkLVH03scRP9eXA4nOeK9GuhTtTKkihDAMrEwKXxD?= =?us-ascii?Q?0TrVnD1/YO+J8z1sFW2Pydmcm5sOrZjTM3is2EspYL9TMBalsqHTHYR/t/3s?= =?us-ascii?Q?MdDIebnklS08oagwjcNrjN1nW7Oe5mUq5THob0oRH7xu1UwQo7ldvn+OtOC/?= =?us-ascii?Q?IMjJ9HgKV97IPfTSvPREAtxXqKnZzOpY1qZIXo5udn2Z1RPGsgpM6mOOoxgH?= =?us-ascii?Q?3iWPILChs/cTzO4CN3O1RSMFk+HWcdz2Z8kRbVKRqYSZhKNdA9dTtSHse7jl?= =?us-ascii?Q?VN+L482GAsEC/gqvdoe6oWUNS5SD8lb22HJw+veD2Lq8Eg2GjGCpJouKf2me?= =?us-ascii?Q?ck+WmNwFKsB7qTWcacZkDyZuneG4zLGOa8eYXJYo3HClexz7mAigtbtUvrl4?= =?us-ascii?Q?/mzR8sK1OTkD2zqQdvI+j/aTLMlqNElwmy7U0TW775m41yNdLmby/bYobt33?= =?us-ascii?Q?EikNIYsCzkT6LcG2F+igwRZyDtyHoo8yfHjsPXHSoNPZNqwHhZXBg/dIpk4J?= =?us-ascii?Q?smM99CngUJts6/KgUhzBRy2JRixm5X0PRue53mdB8WTYS1Pi4117s+Ub13Fi?= =?us-ascii?Q?uJ0mXEORGQEyQmmAcimDCcytvbPdOYNLGQecAQ1y+FVi3HWHpSQR+8y0hb/R?= =?us-ascii?Q?pr8u1wm0Fsuj0RuDwoTGloCDg4dxs5SQBxN33ROKwkxzwTyoGr0EMmTT0lFH?= =?us-ascii?Q?aY0mjX+DyJpDWXs1onSeKQrjCMPXjFURP4iNYkJlScrlfqj8p3Bu5p9MJ/1/?= =?us-ascii?Q?+hvOkwC0xKt8gfVE27h9Hmva5I8FfeMGgYLLB+CKG1MQhYYPzb2RFe1pwdMT?= =?us-ascii?Q?59Q2mCsaN2Y4QrNUxkRWlaAqMp/ACXsvB5xtyDfXDCXsvLM90IJ/DcWWXkl0?= =?us-ascii?Q?seM8g6+jS28ulOzSN/bK8koNeH8GE6EXShwPROmFBBWwpmSem4LolKVbHlEj?= =?us-ascii?Q?u/r6qiEKWyPmpcItw8p/iDTvhs/TyY5CBGXbODcU9NMbx/0/g2a0kb3xeNHU?= =?us-ascii?Q?cOsbBvU1n0HXsOuEdOwhQQ4wBWm4kIl/KcjlCGGe2A4Vj7EtnTQ1swn1Evpw?= =?us-ascii?Q?Tp1V0gH8fhwu+IDdNY0UfFLwUQZpJe9lCJVcFmM5BZinw958ubyZV+ky8/z2?= =?us-ascii?Q?gYav9A46nsafBMYmyv3zU4kZ/GGkPo+MRmyBn78Gi9fl1dUAXSghMZ7Y2lO4?= =?us-ascii?Q?UPFUGL/AQ+QGffzGkE6yyJ+Qwo/cQUz5wbqGfXjCJ88LiXxS0gsD/D5QeG64?= =?us-ascii?Q?Z7KggsRjIL/1iPJNxP3n+S46Loc/ukX+ik/Gclmvt7g0hCUpbbLv/364qfnc?= =?us-ascii?Q?eJbpdZD+SxgFLFxtyDh/JovfXz4u9SL93nNtdjqvXkS/P1u9RvLXkm37WcsM?= =?us-ascii?Q?qXf/BUEgr/RhR4Js1uBWltxM5Y4ocQJkaRi6xv+vhs7cz45Q0TaD4Jy2cRSC?= =?us-ascii?Q?qk8onX/SFA=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d258410-4f18-4be1-9589-08deaf6e12b2 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8585.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2026 15:00:42.9743 (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: 4kJRHvB8QQ3DcOllxBFyiRsT+7CPQTKUuEyuJLMIcUst+0lVyn9u3VP3QjGi4+KabI/lPZkEFUg5HxtDlaMhfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB9976 Content-Type: text/plain; charset="utf-8" Add driver support for probing on the new, per-instance and per-SoC bindings, which provide the main benefit that they allow rejecting unsupported protocols per lane (10GbE on SerDes 2 lanes 0-5), but they also allow avoiding the creation of PHYs for lanes that don't exist (LX2162A lanes 0-3). For old device trees with just "fsl,lynx-28g", the only things that change are: - a probe time warning/encouragement to update the device tree. This is warranted by the fact that using "fsl,lynx-28g" may already provide incorrect behaviour (undetected absent 10GbE support on LX2160A SerDes 2 lanes 0-5). But we retain bug compatibility nonetheless. - the feature set is frozen in time (e.g. no 25GbE). Since we cannot guarantee that this protocol will work on a lane, just err on the safe side and don't offer it (and require a device tree update to get it). In terms of code, the lynx_28g_supports_lane_mode() function prototype changes. It was a SerDes-global function and now becomes per lane, to reflect the specific capabilities each instance may have. The implementation goes through priv->info->lane_supports_mode(). Signed-off-by: Vladimir Oltean Reviewed-by: Ioana Ciornei Tested-by: Josua Mayer --- Cc: Rob Herring Cc: Krzysztof Kozlowski Cc: Conor Dooley Cc: devicetree@vger.kernel.org Change previously submitted at: https://lore.kernel.org/linux-phy/20260114152111.625350-5-vladimir.oltean@n= xp.com/ Changes: - reword commit message --- drivers/phy/freescale/phy-fsl-lynx-28g.c | 126 +++++++++++++++++++++-- 1 file changed, 116 insertions(+), 10 deletions(-) diff --git a/drivers/phy/freescale/phy-fsl-lynx-28g.c b/drivers/phy/freesca= le/phy-fsl-lynx-28g.c index 6d0c395d20e5..5eddc2723e78 100644 --- a/drivers/phy/freescale/phy-fsl-lynx-28g.c +++ b/drivers/phy/freescale/phy-fsl-lynx-28g.c @@ -446,9 +446,15 @@ struct lynx_28g_lane { enum lynx_lane_mode mode; }; =20 +struct lynx_info { + bool (*lane_supports_mode)(int lane, enum lynx_lane_mode mode); + int first_lane; +}; + struct lynx_28g_priv { void __iomem *base; struct device *dev; + const struct lynx_info *info; /* Serialize concurrent access to registers shared between lanes, * like PCCn */ @@ -513,11 +519,18 @@ static enum lynx_lane_mode phy_interface_to_lane_mode= (phy_interface_t intf) } } =20 -static bool lynx_28g_supports_lane_mode(struct lynx_28g_priv *priv, +/* A lane mode is supported if we have a PLL that can provide its required + * clock net, and if there is a protocol converter for that mode on that l= ane. + */ +static bool lynx_28g_supports_lane_mode(struct lynx_28g_lane *lane, enum lynx_lane_mode mode) { + struct lynx_28g_priv *priv =3D lane->priv; int i; =20 + if (!priv->info->lane_supports_mode(lane->id, mode)) + return false; + for (i =3D 0; i < LYNX_28G_NUM_PLL; i++) { if (PLLnRSTCTL_DIS(priv->pll[i].rstctl)) continue; @@ -783,6 +796,87 @@ static int lynx_28g_get_pcvt_offset(int lane, enum lyn= x_lane_mode lane_mode) } } =20 +static bool lx2160a_serdes1_lane_supports_mode(int lane, + enum lynx_lane_mode mode) +{ + return true; +} + +static bool lx2160a_serdes2_lane_supports_mode(int lane, + enum lynx_lane_mode mode) +{ + switch (mode) { + case LANE_MODE_1000BASEX_SGMII: + return true; + case LANE_MODE_USXGMII: + case LANE_MODE_10GBASER: + return lane =3D=3D 6 || lane =3D=3D 7; + default: + return false; + } +} + +static bool lx2160a_serdes3_lane_supports_mode(int lane, + enum lynx_lane_mode mode) +{ + /* + * Non-networking SerDes, and this driver supports only + * networking protocols + */ + return false; +} + +static bool lx2162a_serdes1_lane_supports_mode(int lane, + enum lynx_lane_mode mode) +{ + return true; +} + +static bool lx2162a_serdes2_lane_supports_mode(int lane, + enum lynx_lane_mode mode) +{ + return lx2160a_serdes2_lane_supports_mode(lane, mode); +} + +/* Feature set is not expected to grow for the deprecated compatible strin= g */ +static bool lynx_28g_compat_lane_supports_mode(int lane, + enum lynx_lane_mode mode) +{ + switch (mode) { + case LANE_MODE_1000BASEX_SGMII: + case LANE_MODE_USXGMII: + case LANE_MODE_10GBASER: + return true; + default: + return false; + } +} + +static const struct lynx_info lynx_info_compat =3D { + .lane_supports_mode =3D lynx_28g_compat_lane_supports_mode, +}; + +static const struct lynx_info lynx_info_lx2160a_serdes1 =3D { + .lane_supports_mode =3D lx2160a_serdes1_lane_supports_mode, +}; + +static const struct lynx_info lynx_info_lx2160a_serdes2 =3D { + .lane_supports_mode =3D lx2160a_serdes2_lane_supports_mode, +}; + +static const struct lynx_info lynx_info_lx2160a_serdes3 =3D { + .lane_supports_mode =3D lx2160a_serdes3_lane_supports_mode, +}; + +static const struct lynx_info lynx_info_lx2162a_serdes1 =3D { + .lane_supports_mode =3D lx2162a_serdes1_lane_supports_mode, + .first_lane =3D 4, +}; + +static const struct lynx_info lynx_info_lx2162a_serdes2 =3D { + .lane_supports_mode =3D lx2162a_serdes2_lane_supports_mode, +}; + static int lynx_pccr_read(struct lynx_28g_lane *lane, enum lynx_lane_mode = mode, u32 *val) { @@ -1035,7 +1129,6 @@ static int lynx_28g_lane_enable_pcvt(struct lynx_28g_= lane *lane, static int lynx_28g_set_mode(struct phy *phy, enum phy_mode mode, int subm= ode) { struct lynx_28g_lane *lane =3D phy_get_drvdata(phy); - struct lynx_28g_priv *priv =3D lane->priv; int powered_up =3D lane->powered_up; enum lynx_lane_mode lane_mode; int err =3D 0; @@ -1047,7 +1140,7 @@ static int lynx_28g_set_mode(struct phy *phy, enum ph= y_mode mode, int submode) return -EOPNOTSUPP; =20 lane_mode =3D phy_interface_to_lane_mode(submode); - if (!lynx_28g_supports_lane_mode(priv, lane_mode)) + if (!lynx_28g_supports_lane_mode(lane, lane_mode)) return -EOPNOTSUPP; =20 if (lane_mode =3D=3D lane->mode) @@ -1083,14 +1176,13 @@ static int lynx_28g_validate(struct phy *phy, enum = phy_mode mode, int submode, union phy_configure_opts *opts __always_unused) { struct lynx_28g_lane *lane =3D phy_get_drvdata(phy); - struct lynx_28g_priv *priv =3D lane->priv; enum lynx_lane_mode lane_mode; =20 if (mode !=3D PHY_MODE_ETHERNET) return -EOPNOTSUPP; =20 lane_mode =3D phy_interface_to_lane_mode(submode); - if (!lynx_28g_supports_lane_mode(priv, lane_mode)) + if (!lynx_28g_supports_lane_mode(lane, lane_mode)) return -EOPNOTSUPP; =20 return 0; @@ -1183,7 +1275,7 @@ static void lynx_28g_cdr_lock_check(struct work_struc= t *work) u32 rrstctl; int err, i; =20 - for (i =3D 0; i < LYNX_28G_NUM_LANE; i++) { + for (i =3D priv->info->first_lane; i < LYNX_28G_NUM_LANE; i++) { lane =3D &priv->lane[i]; if (!lane->phy) continue; @@ -1253,7 +1345,8 @@ static struct phy *lynx_28g_xlate(struct device *dev, =20 idx =3D args->args[0]; =20 - if (WARN_ON(idx >=3D LYNX_28G_NUM_LANE)) + if (WARN_ON(idx >=3D LYNX_28G_NUM_LANE || + idx < priv->info->first_lane)) return ERR_PTR(-EINVAL); =20 return priv->lane[idx].phy; @@ -1297,10 +1390,18 @@ static int lynx_28g_probe(struct platform_device *p= dev) return -ENOMEM; =20 priv->dev =3D dev; + priv->info =3D of_device_get_match_data(dev); dev_set_drvdata(dev, priv); spin_lock_init(&priv->pcc_lock); INIT_DELAYED_WORK(&priv->cdr_check, lynx_28g_cdr_lock_check); =20 + /* + * If we get here it means we probed on a device tree where + * "fsl,lynx-28g" wasn't the fallback, but the sole compatible string. + */ + if (priv->info =3D=3D &lynx_info_compat) + dev_warn(dev, "Please update device tree to use per-device compatible st= rings\n"); + priv->base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(priv->base)) return PTR_ERR(priv->base); @@ -1323,7 +1424,7 @@ static int lynx_28g_probe(struct platform_device *pde= v) return -EINVAL; } =20 - if (reg >=3D LYNX_28G_NUM_LANE) { + if (reg < priv->info->first_lane || reg >=3D LYNX_28G_NUM_LANE) { dev_err(dev, "\"reg\" property out of range for %pOF\n", child); of_node_put(child); return -EINVAL; @@ -1336,7 +1437,7 @@ static int lynx_28g_probe(struct platform_device *pde= v) } } } else { - for (int i =3D 0; i < LYNX_28G_NUM_LANE; i++) { + for (int i =3D priv->info->first_lane; i < LYNX_28G_NUM_LANE; i++) { err =3D lynx_28g_probe_lane(priv, i, NULL); if (err) return err; @@ -1362,7 +1463,12 @@ static void lynx_28g_remove(struct platform_device *= pdev) } =20 static const struct of_device_id lynx_28g_of_match_table[] =3D { - { .compatible =3D "fsl,lynx-28g" }, + { .compatible =3D "fsl,lx2160a-serdes1", .data =3D &lynx_info_lx2160a_ser= des1 }, + { .compatible =3D "fsl,lx2160a-serdes2", .data =3D &lynx_info_lx2160a_ser= des2 }, + { .compatible =3D "fsl,lx2160a-serdes3", .data =3D &lynx_info_lx2160a_ser= des3 }, + { .compatible =3D "fsl,lx2162a-serdes1", .data =3D &lynx_info_lx2162a_ser= des1 }, + { .compatible =3D "fsl,lx2162a-serdes2", .data =3D &lynx_info_lx2162a_ser= des2 }, + { .compatible =3D "fsl,lynx-28g", .data =3D &lynx_info_compat }, /* fallb= ack, keep last */ { }, }; MODULE_DEVICE_TABLE(of, lynx_28g_of_match_table); --=20 2.34.1 From nobody Sat Jun 13 02:06:48 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013028.outbound.protection.outlook.com [52.101.72.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F0F22820AC; Mon, 11 May 2026 15:00:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.28 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511653; cv=fail; b=GYoYBak5nrVhGvhMoRulzdY61SHzZ4sED+Tlz6EH07X3jIavu6edqZBYK4MvgkAuKgVzZjaYDZIRrBNNE4mqV2Sbg4s4tJH5rsikVkQc7XWE9E/H+kp8JEIv7RKBKCDonSDc1ySqzU4V2U+XUwNQjg86zIoCrARSKpb6389Ku2s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778511653; c=relaxed/simple; bh=boMYKeB0AljesexDLRI5Q5RSVGQ6JNiRUjNwxv0ZHhY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=OS2sqEnW7/uyVNfmxFDaSiG+CosO2giwbXNa/cljPMc96d2zGBgOhoPEUnQpp7W+0w9IT0bPabfdZwXUSUo3TQD40a1f7AC30eCBTUbeVD38F/fDnUi2P49l5ejMd3oGigll+l/O0qe82jLMINZUiBgavOafrf5Z9mets8zzAIg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=ken5V7n7; arc=fail smtp.client-ip=52.101.72.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="ken5V7n7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FPYwmbtD5p3Gjx2AnI/T9Enpmsyr8ze35GKpdnbRZ8Zgts5GIIvrinHR394VLebn7d6gIyJ8radKLi9glvIW/Cu6h7e/qNlgYMdyRhStE4YYFFxI7K3pLl7X4LQWEzYDTKbX/ti0RInHT9j/5RHCOuHpI4zZ8G/Uee0LEBnJmhIyiud9g+QxLvp7Km5kGPTc+LcfjAdBsiADFwOleLHV7GjYXtCQtUt098igY6jvNpC2aLfeYMh7b6r4NSBEVOfKdWnw8Ro4/gMj7sjE3PUQ/7Hq9fmt1nvR0rwSMX81J/+quhktFFt13sbKzRV2a4nQ6fidugkA1Lp1l538gjEB6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=t40qYh/t44bcFs+prRyKspRg2TEnuCwOcw9PBVH7ytg=; b=Eb3dZ2WIB9O4pENkdIDHMmpzTT3aWGt0y/ZLVgyTFf8VuAt628ugw9UOyQja1QhMIU7brimU9NwmzCMnacqux/U7NABrdDSAUYyYlwWvCO+pLtAxYGJz1RzVAoPkiNVRrZJuhRbpGVHAuBIQi3RnKVBCgpFKbGf1wD1yHigjAEZTxRX7xpBxZMhBPGzsWiSQirrRwd/MAi4a/xhhNK0G8L/fpTbk7iE1OrAOekTWpSGD0U1XGwMQvbSxHSIDh+fq1NKOE9XOdvB5jBmhpemH+VjJvDMUeFPx1Jz3EkFd0deT0qj2yS3Tp7RgJutOV3Z/kuSQj46KeRypC9tt4CSDmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t40qYh/t44bcFs+prRyKspRg2TEnuCwOcw9PBVH7ytg=; b=ken5V7n7hKYZWYlXsGPbQTUhne0gs3s335pIX19MZx2kskh+yV4HIfwfFzPt/ApHZSAJuqw5iqS57YurQig7+FsyDi1nEo9wSbZ+oFtGNUc9FF6Zr8EakBhdSaODTAlBk47tK6qO9GGw01S+zddylMNtcpYHYwEU7cLoGKaYbQqZdBxgsCs0QIAayRV6U6JPCE7Sri7k9JoqU1mtxMpUw35idgSVLy69os/vqp9phCAoL9LPMLPSPGkqHpNzDDl+mLvJnIxsfhnsrML4x2+hOEYED8v/OiId34+jO+LwUULefZ5TPcldDoLh4kUa5fK7C0ZYDtdnA+zhmF/29mzZ3Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) by GVXPR04MB9976.eurprd04.prod.outlook.com (2603:10a6:150:117::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Mon, 11 May 2026 15:00:44 +0000 Received: from AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4]) by AM9PR04MB8585.eurprd04.prod.outlook.com ([fe80::f010:fca8:7ef:62f4%4]) with mapi id 15.20.9870.023; Mon, 11 May 2026 15:00:44 +0000 From: Vladimir Oltean To: linux-phy@lists.infradead.org Cc: netdev@vger.kernel.org, Ioana Ciornei , Vinod Koul , Neil Armstrong , Josua Mayer , linux-kernel@vger.kernel.org Subject: [PATCH phy-next 5/5] phy: lynx-28g: add support for 25GBASER Date: Mon, 11 May 2026 18:00:23 +0300 Message-Id: <20260511150023.1903577-6-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260511150023.1903577-1-vladimir.oltean@nxp.com> References: <20260511150023.1903577-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM4PR0302CA0033.eurprd03.prod.outlook.com (2603:10a6:205:2::46) To AM9PR04MB8585.eurprd04.prod.outlook.com (2603:10a6:20b:438::13) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR04MB8585:EE_|GVXPR04MB9976:EE_ X-MS-Office365-Filtering-Correlation-Id: 923e7e3d-8da8-4651-d649-08deaf6e13c1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|376014|1800799024|366016|3023799003|11063799003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: VKUH03+eLtiR/Oc/RN6VR/RxzcRZ58vUTTfkii15FJ+LUnNaLTC8y68gibySSJ3r6pOTZezmjNwScURBPYuXzrzjtXRpLJteLotbYU3ir3bQunDr0fniKPY+t3TjFnM2c31MyWy5K9oPnhHy7bISzIc7KVPBpTEfyjxs27rQ8ENMZj6WO9GerwrdSD0vmphkTNVxlbFLhFNndO34nO/X265IajGSN/mxNDQOfDd4Gmr6/6XZ+nQnjyKWxyzC2d0xIV91ZZ5c6PvyJb4HdrxaMqTNjPphqTzGRmBquNuslwi56RaofeA+3fW0o9331MwjfFLRxABx60pc4PTb9hH69SPxN3tzQ7yd/wWp0rjaPkZc2yeQfNKaZM7gAe+I4hkyYULfAym4ZEl4fnvu+u+0HUvTDHdyNQspDzBOjNbdtt0c6gOs8qVtpXkVc/xZE9q8YIKUcaPoTuwyxSdKwypz7mC7Ti6PdG+L3496wKYEiWeDIwiym1zV60h3zidzaYlbnjzWfxXho7tPvZs16/F9bCwIpt0a8zlwe1YcBH+A2SEzer4e7SzRwEp51alr8wQBeiZJWUF3fykOuGHQMAYuib8KLzvTRn3fpcBya4k7lec5P3J7WqaaOb4psC9FjKGb3MxLvYeLZTDLETKgCKNbt3oMQhZaipm7mVmJ2B6Bgz8jTQiWk7ogX4EK+ScFPNSf X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8585.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(376014)(1800799024)(366016)(3023799003)(11063799003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ULHsjnGNbUs1zBR4xKYGWVRnPxC65ahNnVN+lTDO+CjBXED/E3NrnbyjK5/q?= =?us-ascii?Q?4UOR/l/N8DyfemRKBCGhDMVVyJpkVLs0MO5yYVANIZVWngDMKBAbEqotzJGi?= =?us-ascii?Q?wuGHUSyzoeK3/EhVidjLFR7FDUVdZH4cUImF5A1lV2mJTvBwMRXJPVBagaKd?= =?us-ascii?Q?yEVjE9MW45CTvoKyhenCVHtjkZv5VzCBr1ZaUjc7i7kJXL7zlK7BXfMVIwYn?= =?us-ascii?Q?ARzxjpKJzGIO8HqqECgmca2tgCxK4zKO24K0WX9r/eAHvXCB0Sx58WyeaLGz?= =?us-ascii?Q?Yj7kSKKj8VQz8UYTUump4nKRs8vDg/t3X4sQUBoGTcQrXFCZ0jAHfVfFt8nf?= =?us-ascii?Q?BPUv9vmwgKyUtCOzQNOjlkamVHqVZ8LQb46iJJtp1wyaYeiJGReuudCg6Inz?= =?us-ascii?Q?hdHIkYiqS/pUL2dFeaUrmwQ97hiXd1+boqhCkoGNOExBw01IEStZBhkF6hOb?= =?us-ascii?Q?hVFNuV3ubGqkSzEOY4Wk5W990ea0PrVlh5QxKSOqhHmyIy/PFXBc+0VmL9ae?= =?us-ascii?Q?ghYPTbNVc1O0wtA6Fw3K78z1KLe90FavZbPpmXyh9Oa51gP2zMSO7rDKMtZb?= =?us-ascii?Q?47RnEsQANW1DAnZA16rz+WC3qXEuwcSIe3mqAddCOfAiwTmEKcFHE+sCyCcX?= =?us-ascii?Q?RUVR69OAx7xyRg4hhZTlKGGZXq7d9ExySkA607J6feBmT7GwV0omQzTDp/ft?= =?us-ascii?Q?y/K63UQs7EWoA44gJ38Rmd2frv4ityOskOZOKgRoNnUO0xzqpvSDKdHq8Fyt?= =?us-ascii?Q?aS1d5U0hO5deh3/BqvXFYsFl009tR+uQi3vPVz81L5zXRq16o5GpG6/UZV3o?= =?us-ascii?Q?6dQeNfy+hgjIeTjgkYAsViUxad2zPbZNTf0yfEU8vQf9B31k6XD1B1xZihe1?= =?us-ascii?Q?LhD4G/7EjAzAwayWw/WSjH2iV8hFyJyNL+hJ6ieqhgKUFQkeSByPYKIvmb8h?= =?us-ascii?Q?TH139p2t7e6CFrhk7U8jjh0j29FEVivnq8qCqn6N66wrWvP+w9EkOQu4RVSe?= =?us-ascii?Q?MQanEI5V7U6iBb2IjGZLnamqDtiVeRMqXX6tel6QXEY/vgK0/3wAIodhmyLl?= =?us-ascii?Q?O7L0vthEwz0OISdoTivkFOZ1f/H+4X+fJ6sb30gc0DkWMaSH5cMYWPpTSNjV?= =?us-ascii?Q?nCOjTx9VK+SqZVQIwRBR+aMTeY9Z48gWsd8koRZ+oCetqDiyC44RLKK6KiWg?= =?us-ascii?Q?a6vh8NjH0Y2BGbXVV54rGNxEvrOaQazhUSIPBD21g7rBMpYepOboYAXtamR4?= =?us-ascii?Q?DORJEcz0dvERyeYskPNOqxJBL3U3IdVBIKEnKn5xlL7v5M8QVmQZv2VctfwN?= =?us-ascii?Q?hWlp8oRoQKLTTun9QFkiZsZcXvIC/secjip/+k4Koeglo2eXMcM7GR1aKjlP?= =?us-ascii?Q?r8V0S8E6JtbpGvcheCQT8hzBH05bSH+wmedLrgcXxadOjUK2iQWXJ8QQw7jX?= =?us-ascii?Q?J8c6Bdx3CFCJs92eEP/DdYpZq1WVOtkRHZ6sRt+VEQ5pqaD1eCHhb1T4mX7e?= =?us-ascii?Q?SxGOoEF0Ojq2GYHOnMMuv0fsFjOW5bobJXeF+JfcudbvR0nPvg6AvgwthRqd?= =?us-ascii?Q?gXGV7sSYUP0ta29iInla+WpeH5UlIWzTrpa8AEA1sRJcBw67ZGx8Gj3s8L9d?= =?us-ascii?Q?9X/dyqKr4MCMgDP6vsvRgqO+MMx6tpJziJ0Zk2Zau+pbzsXry21PjXtfdNxq?= =?us-ascii?Q?vSYyrvR779xH6NVPVxZXsW6nr59y1pgpRHPLnQi6x5kQCcUymvahWs9oG+xl?= =?us-ascii?Q?pSAjFLr5ew=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 923e7e3d-8da8-4651-d649-08deaf6e13c1 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8585.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2026 15:00:44.7537 (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: YjzRqRRfufL5VC8LXaGJMq0XUVaLRpJzihLV9k0rSoWdrcP6fW430RjvL6Wx2uilvQ7ffavrWXxC8WXb9Y1N1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB9976 Content-Type: text/plain; charset="utf-8" From: Ioana Ciornei Add support for 25GBASE-R in the Lynx 28G SerDes PHY driver. This will be used by the dpaa2-mac consumer on LX2160A with: - phy_validate(phy, PHY_MODE_ETHERNET, PHY_INTERFACE_MODE_25GBASER) to detect support. - phy_set_mode_ext(phy, PHY_MODE_ETHERNET, PHY_INTERFACE_MODE_25GBASER) to reconfigure the lane for this protocol. The intended use case for dynamic protocol switching to 25GBase-R is with SFP28 modules, and protocol switching is triggered by the SFP module insertion. There also exists a 25GBase-KR use case, where the protocol switching is covered by IEEE 802.3 clause 73 auto-negotiation. However, that is not handled here; it merely needs the support added here as basic ground work. The lane frequency for 25GbE is sourced from a clock net frequency of 12.890625 GHz, as produced by PLLF or PLLS, further multiplied by the lane by 2. The clock net frequencies produced by the PLLs are treated as read-only by the driver, so the absence of a PLL provisioned for the right clock net frequency implies absence of 25GbE support, even though a lane might have the appropriate protocol converter for it. In terms of implementation, the change consists of: - determining at probe time if any PLL was preconfigured for the required clock net frequency for 25GbE - adding the default lane parameters for reconfiguring a lane to 25GbE irrespective of the original protocol - allowing this operating mode only on supported lanes, i.e. all lanes of LX2162A SerDes #1, and LX2160A SerDes lanes 0-1, 4-7. Signed-off-by: Ioana Ciornei Signed-off-by: Vladimir Oltean Tested-by: Josua Mayer --- Change previously submitted at: https://lore.kernel.org/linux-phy/20260114152111.625350-6-vladimir.oltean@n= xp.com/ Changes: - reword commit message --- drivers/phy/freescale/phy-fsl-lynx-28g.c | 90 +++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/drivers/phy/freescale/phy-fsl-lynx-28g.c b/drivers/phy/freesca= le/phy-fsl-lynx-28g.c index 5eddc2723e78..92bfc5f65e0b 100644 --- a/drivers/phy/freescale/phy-fsl-lynx-28g.c +++ b/drivers/phy/freescale/phy-fsl-lynx-28g.c @@ -57,6 +57,7 @@ #define PLLnCR1_FRATE_5G_10GVCO 0x0 #define PLLnCR1_FRATE_5G_25GVCO 0x10 #define PLLnCR1_FRATE_10G_20GVCO 0x6 +#define PLLnCR1_FRATE_12G_25GVCO 0x16 =20 /* Per SerDes lane registers */ /* Lane a General Control Register */ @@ -64,9 +65,11 @@ #define LNaGCR0_PROTO_SEL GENMASK(7, 3) #define LNaGCR0_PROTO_SEL_SGMII 0x1 #define LNaGCR0_PROTO_SEL_XFI 0xa +#define LNaGCR0_PROTO_SEL_25G 0x1a #define LNaGCR0_IF_WIDTH GENMASK(2, 0) #define LNaGCR0_IF_WIDTH_10_BIT 0x0 #define LNaGCR0_IF_WIDTH_20_BIT 0x2 +#define LNaGCR0_IF_WIDTH_40_BIT 0x4 =20 /* Lane a Tx Reset Control Register */ #define LNaTRSTCTL(lane) (0x800 + (lane) * 0x100 + 0x20) @@ -85,6 +88,7 @@ #define LNaTGCR0_N_RATE_FULL 0x0 #define LNaTGCR0_N_RATE_HALF 0x1 #define LNaTGCR0_N_RATE_QUARTER 0x2 +#define LNaTGCR0_N_RATE_DOUBLE 0x3 =20 #define LNaTECR0(lane) (0x800 + (lane) * 0x100 + 0x30) #define LNaTECR0_EQ_TYPE GENMASK(30, 28) @@ -116,6 +120,7 @@ #define LNaRGCR0_N_RATE_FULL 0x0 #define LNaRGCR0_N_RATE_HALF 0x1 #define LNaRGCR0_N_RATE_QUARTER 0x2 +#define LNaRGCR0_N_RATE_DOUBLE 0x3 =20 #define LNaRGCR1(lane) (0x800 + (lane) * 0x100 + 0x48) #define LNaRGCR1_RX_ORD_ELECIDLE BIT(31) @@ -282,6 +287,7 @@ enum lynx_lane_mode { LANE_MODE_1000BASEX_SGMII, LANE_MODE_10GBASER, LANE_MODE_USXGMII, + LANE_MODE_25GBASER, LANE_MODE_MAX, }; =20 @@ -420,6 +426,41 @@ static const struct lynx_28g_proto_conf lynx_28g_proto= _conf[LANE_MODE_MAX] =3D { .ttlcr0 =3D LNaTTLCR0_TTL_SLO_PM_BYP | LNaTTLCR0_DATA_IN_SSC, }, + [LANE_MODE_25GBASER] =3D { + .proto_sel =3D LNaGCR0_PROTO_SEL_25G, + .if_width =3D LNaGCR0_IF_WIDTH_40_BIT, + .teq_type =3D EQ_TYPE_3TAP, + .sgn_preq =3D 1, + .ratio_preq =3D 2, + .sgn_post1q =3D 1, + .ratio_post1q =3D 7, + .amp_red =3D 0, + .adpt_eq =3D 48, + .enter_idle_flt_sel =3D 0, + .exit_idle_flt_sel =3D 0, + .data_lost_th_sel =3D 0, + .gk2ovd =3D 0, + .gk3ovd =3D 0, + .gk4ovd =3D 5, + .gk2ovd_en =3D 0, + .gk3ovd_en =3D 0, + .gk4ovd_en =3D 1, + .eq_offset_ovd =3D 0x1f, + .eq_offset_ovd_en =3D 0, + .eq_offset_rng_dbl =3D 1, + .eq_blw_sel =3D 1, + .eq_boost =3D 2, + .spare_in =3D 3, + .smp_autoz_d1r =3D 2, + .smp_autoz_eg1r =3D 2, + .rccr0 =3D LNaRCCR0_CAL_EN | + LNaRCCR0_CAL_DC3_DIS | + LNaRCCR0_CAL_DC2_DIS | + LNaRCCR0_CAL_DC1_DIS | + LNaRCCR0_CAL_DC0_DIS, + .ttlcr0 =3D LNaTTLCR0_DATA_IN_SSC | + FIELD_PREP_CONST(LNaTTLCR0_CDR_MIN_SMP_ON, 1), + }, }; =20 struct lynx_pccr { @@ -499,6 +540,8 @@ static const char *lynx_lane_mode_str(enum lynx_lane_mo= de lane_mode) return "10GBase-R"; case LANE_MODE_USXGMII: return "USXGMII"; + case LANE_MODE_25GBASER: + return "25GBase-R"; default: return "unknown"; } @@ -514,6 +557,8 @@ static enum lynx_lane_mode phy_interface_to_lane_mode(p= hy_interface_t intf) return LANE_MODE_10GBASER; case PHY_INTERFACE_MODE_USXGMII: return LANE_MODE_USXGMII; + case PHY_INTERFACE_MODE_25GBASER: + return LANE_MODE_25GBASER; default: return LANE_MODE_UNKNOWN; } @@ -601,6 +646,20 @@ static void lynx_28g_lane_set_nrate(struct lynx_28g_la= ne *lane, break; } break; + case PLLnCR1_FRATE_12G_25GVCO: + switch (lane_mode) { + case LANE_MODE_25GBASER: + lynx_28g_lane_rmw(lane, LNaTGCR0, + FIELD_PREP(LNaTGCR0_N_RATE, LNaTGCR0_N_RATE_DOUBLE), + LNaTGCR0_N_RATE); + lynx_28g_lane_rmw(lane, LNaRGCR0, + FIELD_PREP(LNaRGCR0_N_RATE, LNaRGCR0_N_RATE_DOUBLE), + LNaRGCR0_N_RATE); + break; + default: + break; + } + break; default: break; } @@ -761,6 +820,11 @@ static int lynx_28g_power_on(struct phy *phy) return 0; } =20 +static int lynx_28g_e25g_pcvt(int lane) +{ + return 7 - lane; +} + static int lynx_28g_get_pccr(enum lynx_lane_mode lane_mode, int lane, struct lynx_pccr *pccr) { @@ -776,6 +840,11 @@ static int lynx_28g_get_pccr(enum lynx_lane_mode lane_= mode, int lane, pccr->width =3D 4; pccr->shift =3D SXGMII_CFG(lane); break; + case LANE_MODE_25GBASER: + pccr->offset =3D PCCD; + pccr->width =3D 4; + pccr->shift =3D E25G_CFG(lynx_28g_e25g_pcvt(lane)); + break; default: return -EOPNOTSUPP; } @@ -791,6 +860,8 @@ static int lynx_28g_get_pcvt_offset(int lane, enum lynx= _lane_mode lane_mode) case LANE_MODE_USXGMII: case LANE_MODE_10GBASER: return SXGMIIaCR0(lane); + case LANE_MODE_25GBASER: + return E25GaCR0(lynx_28g_e25g_pcvt(lane)); default: return -EOPNOTSUPP; } @@ -799,7 +870,12 @@ static int lynx_28g_get_pcvt_offset(int lane, enum lyn= x_lane_mode lane_mode) static bool lx2160a_serdes1_lane_supports_mode(int lane, enum lynx_lane_mode mode) { - return true; + switch (mode) { + case LANE_MODE_25GBASER: + return lane !=3D 2 && lane !=3D 3; + default: + return true; + } } =20 static bool lx2160a_serdes2_lane_supports_mode(int lane, @@ -1115,6 +1191,9 @@ static int lynx_28g_lane_enable_pcvt(struct lynx_28g_= lane *lane, case LANE_MODE_USXGMII: val |=3D PCCC_SXGMIIn_CFG; break; + case LANE_MODE_25GBASER: + val |=3D PCCD_E25Gn_CFG; + break; default: break; } @@ -1259,8 +1338,12 @@ static void lynx_28g_pll_read_configuration(struct l= ynx_28g_priv *priv) __set_bit(LANE_MODE_10GBASER, pll->supported); __set_bit(LANE_MODE_USXGMII, pll->supported); break; + case PLLnCR1_FRATE_12G_25GVCO: + /* 12.890625GHz clock net */ + __set_bit(LANE_MODE_25GBASER, pll->supported); + break; default: - /* 6GHz, 12.890625GHz, 8GHz */ + /* 6GHz, 8GHz */ break; } } @@ -1327,6 +1410,9 @@ static void lynx_28g_lane_read_configuration(struct l= ynx_28g_lane *lane) else lane->mode =3D LANE_MODE_USXGMII; break; + case LNaPSS_TYPE_25G: + lane->mode =3D LANE_MODE_25GBASER; + break; default: lane->mode =3D LANE_MODE_UNKNOWN; } --=20 2.34.1