From nobody Tue Dec 2 02:19:45 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010035.outbound.protection.outlook.com [52.101.84.35]) (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 2320A346E6B; Wed, 19 Nov 2025 10:48:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763549341; cv=fail; b=JRSvmi1GpnrRgg2DcLDG4rmBoMK3Dtr7hoM8Iob3cu+ObyOep/Vu0QpFl0otYp8r6SQJiSU89AYN5YZbqDOy+mmdMd4wPxdE4IRpqsYV7u8EDfH5KFhJVeJWz3/8J6lPW3HZVEfoefOnvT5aKDC5JuKf5cyqqt68gM9Ngs7Bmxg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763549341; c=relaxed/simple; bh=H4dhqSFqNUPhbI5Z6YCI1MsEXtxG4N70xlFholhMDAU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=S8dFNJZP2aIMlB3udtHcRDcJREDQZKAjgFDED9ajEHNWtMQY17a2wZD9ZCpGkgyEolhq3SvkTAmw1174Iv6MzXEXk/09bcwoQ/0Zz9tJz/U0nIKAjGWYBxGxb7tQ/jdvytPhzA2ZmHFPdEZHuNSmjZGanmsxbSHN0y67Zaifz8M= 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=Gt1OOJJ9; arc=fail smtp.client-ip=52.101.84.35 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="Gt1OOJJ9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uVKsN5iTyP51Q8ZW7+m34W51QRyq82NFcMm8xcY6C+W9MkKeAL/XJwq0PrI1HSmW5sNtHFl/ZSAStNO6GEETharU/HckOmV+MMtQ6o9oeW45J95K/rCX+j7aiYtxJxqfxfo8GtdRo0gSZbsD/WLnd8lV1axa1ERYXSKN50C0OeK8RUvTm5KEjkvsSFIxDiNdpSYV0gap8S5vshmC+xgx2U9O9IhXZH00ZObUXwJyODMcH0C4+HfYsTwm9XGgR+9MkhHaAJP0urvIMAADEvgjLfR7nTU+jlju6phCueomwlfn+XSnzbm2v/aHhZvbE9W0PrAAducHapWC0dVSpMsTqw== 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=VujCEcUJI806nGdSeJffIBj+lB1VN54zlFZsVtCNXro=; b=w1Iet4RYGiZpMf7+XKvXId2/ZBIazE6WBAA7ZUvctfGiEjdhntewx6+uDg6mfCOOwjB1hV3Rl1bjwf5vmZd0RlokogxONeIk5XEPE/pKqBYB27TUrm3JToXLpn8l0xhr7BtJBp4gYcIFaCxzehe8ceQmg3eVLROK7XTapKxyhvlzloYEGurNpzsc5lAtYEmTlwO1WvL8TynGlXANqzzK7UHCPNu6rLT/hWlkV0Dy3Two65AP9aBc8J2I62ETYkBDR1b9vEwpNTWn+a6ZLCRg5dUgf+f4VN6D0PRFtxY0YFB1jErnIwa7XhRp1qwku6Q2yW0IzeWEnRivnKEeXLt8pw== 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=VujCEcUJI806nGdSeJffIBj+lB1VN54zlFZsVtCNXro=; b=Gt1OOJJ9ftbLWGNaMet/c4lmJjiYpNaNHZ/SWR1klYtfB/00LxvfkK7P+SY2hQeHow2J1jZmL1pNGrCL70duUibu0CdeDnMCBuziObWymuqt4IfRuVcbAVLb27OcHF08znC6fQ1dA68LVMiyBO6YN/8eOQfihDUliPJAwwOlcjh/839Ntf0SKZVFF3hTPQf2AkDC8lXy6HhepYbHSekYY/2NhhpSaA6S1szll14/UFJH5vUmjG6yNiAH6y/6CvdEJah+heYSRAcNu+6KLILeg82f4TeS3a2xvMd/m6bTce90yuNc90ZS/uAwxKoEQbysvuPKDrz7kw0hDRuuk6pfQA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) by PA1PR04MB10628.eurprd04.prod.outlook.com (2603:10a6:102:490::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Wed, 19 Nov 2025 10:48:53 +0000 Received: from PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db]) by PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db%4]) with mapi id 15.20.9343.009; Wed, 19 Nov 2025 10:48:53 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: aziz.sellami@nxp.com, imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 net-next 1/3] net: enetc: set the external PHY address in IERB for port MDIO usage Date: Wed, 19 Nov 2025 18:25:55 +0800 Message-Id: <20251119102557.1041881-2-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251119102557.1041881-1-wei.fang@nxp.com> References: <20251119102557.1041881-1-wei.fang@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR06CA0210.apcprd06.prod.outlook.com (2603:1096:4:68::18) To PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) 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: PAXPR04MB8510:EE_|PA1PR04MB10628:EE_ X-MS-Office365-Filtering-Correlation-Id: 7839c4c6-d4e0-457c-1152-08de27593b4e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|52116014|366016|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?GMAyMqg0RjRhVaR7ExzuSmrYZjnHTpJAK6CF3y1v/Fl2OCxYqPAbtcAVKnRE?= =?us-ascii?Q?2UBnKffNXPyDMq0kyp6HhyxbjM34v2lkmQ6a/0DwE3NdkvvyoMVM38IqA1RL?= =?us-ascii?Q?6lyJKsfOF4ear5yMDy8HefohfZQS7+XdVD9WkmqG61c0Euoc6LxNWWX4rBPS?= =?us-ascii?Q?gcvC7xuUzQSfBH9fQZExitUvZF89G9LRruITcZTVWK+LcouFg6OWZIMmjm2Z?= =?us-ascii?Q?1lVV5fsqh79ZHnwagkFJR7BpPV0SUvGdqxeOMful/D4mcNkOIJoaOgsG9ju7?= =?us-ascii?Q?IsWegJCHeM/gk5FYf37vX52Jl0TYXz2EfpHg0S0VbffH9qQTryuORMp01NlC?= =?us-ascii?Q?r58egSPWzDa/i0at2hRNyWv4V8Uw9TTqt77eAZhIqESSmJtI5rYc2SGSxSX/?= =?us-ascii?Q?NpQnHDH/iT8XF//i9APyyf0Ua3YfAavB5YHHT0mXSfafHbR71azafulQl/NI?= =?us-ascii?Q?Q8jhrD1f79yyGc9P0C0icg8hS7/o5h0/tQxhE5fbA/bytKRRZovbEOjBvvPW?= =?us-ascii?Q?YDFN1iAvb71zlv9gBG+47TLmvfbo0VosuaTuyBljIwaTQ5boEcvTI+ewtg5R?= =?us-ascii?Q?F8DTEWB1ppmCLpdnfqElpz7fTXbpZWh0SHZUfpCigkJ5XQ5SjHtZXR/hS8D5?= =?us-ascii?Q?7TZt9iLvTdApD1X6wWC5WIxVdvdqQD+UoiQ4lA55wMCpxs4uhk8jRktwjhwW?= =?us-ascii?Q?9q98z0aHCrBx6ezjkDcaqPo3VOd9M6HU7jH6QUVXPAX3I8vgxvJbJPmVnh4z?= =?us-ascii?Q?Y1SvBBo0lBlcPm0C7Mdx/rq7SgyKgaBOLv0gy5ajSUc1ks0QZNZ1vShWgKgu?= =?us-ascii?Q?XGLA07QoIQbAf7+fXPr02dGYC2XEbdLdtqyLP3wYqqIxzmesg+sur8PjTWJL?= =?us-ascii?Q?UsEJ+nXRA07OQUujfiXi42i0qc3b+QZC/C8e8W5zWcRxW8iCcw8NcCdSWQkQ?= =?us-ascii?Q?H4V4jarMmlvEQw/atcXM/EIDVg3kEtY0i7jHEZwIrB53rVzegPeS4MSnqJbH?= =?us-ascii?Q?DhVwSeb98xo4IJQnm4+/rQ4T5q1laNPONr9Utbrh5FHBq2S2IsfWPGtv8AOH?= =?us-ascii?Q?cPg4issyGtVVxh9HdoXdd8WB4mmVwwXDDY4Due45ROvpKtYkUV07vGZNqqV7?= =?us-ascii?Q?jSfLpm9lQaFDZ4vBSIumLTC2QqPnm4cY7Opot74QWxSYfIK26U5buLtjlVXw?= =?us-ascii?Q?dzMgjkfD4yR0Ef5HTNc0ZsYbIAVeV98a7DgQCNzqhZU35y/y24XKTHxtBuLt?= =?us-ascii?Q?PblPdFkYHBjpjgU2wK+nYIMGfMusxzQcE5wTxQNwtH4BgYOFxAR+ndtBliU/?= =?us-ascii?Q?y+8aihzi2Wo09OQhwQAUBxYYbm7ime8IOXen4rgOtxkaKfE46Eg1i+TolaAB?= =?us-ascii?Q?+rIe2BsZfnjQzU47H3IaGe5eCH+g?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(52116014)(366016)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bagduQammEMckBUjATYKMobKlzjmv4sLfzoVDKrBM7C15w0MudaKzJPkORz6?= =?us-ascii?Q?SsHc0wVEby7EIahMr9HD43vYcx4cyuFiAuhnxHidGpRpEmHz97KL5JDfNvcl?= =?us-ascii?Q?BT+cEJXwFom+JV4trzJibfJYHMhX8uelM+IuhpRpsXgcvw2+g5nGiDBRP0ve?= =?us-ascii?Q?ol2XCooE6YHl8ehVu10rY0ahXaM4pw6nvDnfZRoloXq7qiAqimDlGVcFxiry?= =?us-ascii?Q?yWP0yCRrEWE6sgrGQ2FQM2jeaQhgFrgzkxNwSPkohwkDHHnUT9mxIDgxVMat?= =?us-ascii?Q?1Tspvas+iotiLbyW1uyKmITIoPKXDUoOCkVcKxHLizbIrBrZtq62mwLDF6Kj?= =?us-ascii?Q?dNGWcx9/pNtK2lTGNj58zsiZD3D8p3Yij3ir3MwqvE1BqGoSDi+coIPrMX2l?= =?us-ascii?Q?gdb4DxgsuSf0AZkLazTARaKymlaNdJx+/q8J1wT2JL6P1IBDT17fUoXaYf67?= =?us-ascii?Q?OfKRcQLsX0+yTTuaW+MLMABbpGE8rsa6g2Kv5CO3/DFxhZPxWQ86/xbuThOQ?= =?us-ascii?Q?nsUb4t5unUht9sJWoAkSWP3kH6OQUtbBIKwWhgSZndqebGCUgRd5Sqe41LyB?= =?us-ascii?Q?bDyrqJ7NJgzacocPoOGKuPsJIzHfXo6ga3C+R98CLSKidGzHlmqLnSIz+4hx?= =?us-ascii?Q?BLYw32PnWi+ckYJXDnGEkVdppv1+ja4u3swd1sULkNslq9XVrdVQuCCFqTlQ?= =?us-ascii?Q?MbCctBIz2uiZjCXeZ0Jjv38sOEVA5y4V774kSVrqSFaQAjG431bBOMFIOLXm?= =?us-ascii?Q?ymuWq35/BZYH6cGAj0FPY/dKIukwjSYOEA7D+l6Gwvg7v/OMONPo5UXGIs21?= =?us-ascii?Q?A60F7V10dLz0iGyhU6kXtV5U7WU7S5wo0x4P93b21h/56Phk+0bWO5LRaW37?= =?us-ascii?Q?1phG7ntkFdQA3yjRPTwA/8gpYBDkxp+AqmtSADw2bxCyhPxQ70L3TPmpR/OA?= =?us-ascii?Q?ZUGj2DpAheK1B/ibucO0JPaNxBsb3qGCtOxPCpI7/I0+UGQiR9pEafSf/xmm?= =?us-ascii?Q?TwKrXj/vj1TYxFLJPT5epSjUfla59zvSVdVqTaedd5jacB8RqAgt88WdQjaD?= =?us-ascii?Q?1j2pGICTeeqEGCKioGCqL7AMO3MLUiJ9LkOohfZPxZ7FTFLwb9X/SsfVDnW1?= =?us-ascii?Q?lpp9ajKZmXki0XIQHHRzvQpjaiiimQxnk+U8Q3lLuW3rJDx2Ds8+KW6cydrK?= =?us-ascii?Q?Lai3+vsjyHv8p9UAozKiOSEQSXWwFugXYiwjrSCh1WTKiY13iEy8rfDkC+vj?= =?us-ascii?Q?LlP1UXB+A1W0Zh9AqX05HMjrFgtfCIy+872oWkuocqBgPkpKvF3+OTxNPgY3?= =?us-ascii?Q?a7BKwq3Y+wY7rg+VZvbnezo1OOgEs0KW/KZnCmGE83GJETld6bUWK75zM7z6?= =?us-ascii?Q?ZJsPuzjLoA5z/z2p1QWZ/MH7kB84xWFE5bBJss5lbKiLAy2ML/q07Mm6KYd3?= =?us-ascii?Q?v6yKSJ11uXkEquy3PdtVGgPZnmxBfQs+EJuH9a5H0M4q+DkHdzYV8CMIFl5V?= =?us-ascii?Q?AWpG05oxMqCwKHdXIHgnC9/2TPpv2Ih6imrWuisAG+kUFWMIzA6aD3COQwz6?= =?us-ascii?Q?fnT2BUxpmMbyludHPxvih8+SYVIIPhYtX94MOAbv?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7839c4c6-d4e0-457c-1152-08de27593b4e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8510.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Nov 2025 10:48:53.7229 (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: DHxAOZGvwwLMnVX2bYcl1z6GAqD7tvcU3MOW8QclPCKqf8Vl7RVv+G7AQygfsKrODlnCxQYdGNY3vg0Tb1n97g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10628 Content-Type: text/plain; charset="utf-8" The ENETC supports managing its own external PHY through its port MDIO functionality. To use this function, the PHY address needs be set in the corresponding LaBCR register in the Integrated Endpoint Register Block (IERB), which is used for pre-boot initialization of NETC PCIe functions. The port MDIO can only work properly when the PHY address accessed by the port MDIO matches the corresponding LaBCR[MDIO_PHYAD_PRTAD] value. Because the ENETC driver only registers the MDIO bus (port MDIO bus) when it detects an MDIO child node in its node, similarly, the netc-blk-ctrl driver only resolves the PHY address and sets it in the corresponding LaBCR when it detects an MDIO child node in the ENETC node. Co-developed-by: Aziz Sellami Signed-off-by: Aziz Sellami Signed-off-by: Wei Fang --- .../ethernet/freescale/enetc/netc_blk_ctrl.c | 141 +++++++++++++++++- 1 file changed, 140 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c b/drivers= /net/ethernet/freescale/enetc/netc_blk_ctrl.c index d7aee3c934d3..6dd54b0d9616 100644 --- a/drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c +++ b/drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c @@ -67,6 +67,9 @@ #define IERB_EMDIOFAUXR 0x344 #define IERB_T0FAUXR 0x444 #define IERB_ETBCR(a) (0x300c + 0x100 * (a)) +#define IERB_LBCR(a) (0x1010 + 0x40 * (a)) +#define LBCR_MDIO_PHYAD_PRTAD(addr) (((addr) & 0x1f) << 8) + #define IERB_EFAUXR(a) (0x3044 + 0x100 * (a)) #define IERB_VFAUXR(a) (0x4004 + 0x40 * (a)) #define FAUXR_LDID GENMASK(3, 0) @@ -322,6 +325,142 @@ static int netc_unlock_ierb_with_warm_reset(struct ne= tc_blk_ctrl *priv) 1000, 100000, true, priv->prb, PRB_NETCRR); } =20 +static int netc_get_phy_addr(struct device_node *np) +{ + struct device_node *mdio_node, *phy_node; + u32 addr =3D 0; + int err =3D 0; + + mdio_node =3D of_get_child_by_name(np, "mdio"); + if (!mdio_node) + return 0; + + phy_node =3D of_get_next_child(mdio_node, NULL); + if (!phy_node) + goto of_put_mdio_node; + + err =3D of_property_read_u32(phy_node, "reg", &addr); + if (err) + goto of_put_phy_node; + + if (addr >=3D PHY_MAX_ADDR) + err =3D -EINVAL; + +of_put_phy_node: + of_node_put(phy_node); + +of_put_mdio_node: + of_node_put(mdio_node); + + return err ? err : addr; +} + +static int netc_parse_emdio_phy_mask(struct device_node *np, u32 *phy_mask) +{ + u32 mask =3D 0; + + for_each_child_of_node_scoped(np, child) { + u32 addr; + int err; + + err =3D of_property_read_u32(child, "reg", &addr); + if (err) + return err; + + if (addr >=3D PHY_MAX_ADDR) + return -EINVAL; + + mask |=3D BIT(addr); + } + + *phy_mask =3D mask; + + return 0; +} + +static int netc_get_emdio_phy_mask(struct device_node *np, u32 *phy_mask) +{ + for_each_child_of_node_scoped(np, child) { + for_each_child_of_node_scoped(child, gchild) { + if (!of_device_is_compatible(gchild, "pci1131,ee00")) + continue; + + return netc_parse_emdio_phy_mask(gchild, phy_mask); + } + } + + return 0; +} + +static int imx95_enetc_mdio_phyaddr_config(struct platform_device *pdev) +{ + struct netc_blk_ctrl *priv =3D platform_get_drvdata(pdev); + struct device_node *np =3D pdev->dev.of_node; + struct device *dev =3D &pdev->dev; + int bus_devfn, addr, err; + u32 phy_mask =3D 0; + + err =3D netc_get_emdio_phy_mask(np, &phy_mask); + if (err) { + dev_err(dev, "Failed to get PHY address mask\n"); + return err; + } + + /* Update the port EMDIO PHY address through parsing phy properties. + * This is needed when using the port EMDIO but it's harmless when + * using the central EMDIO. So apply it on all cases. + */ + for_each_child_of_node_scoped(np, child) { + for_each_child_of_node_scoped(child, gchild) { + if (!of_device_is_compatible(gchild, "pci1131,e101")) + continue; + + bus_devfn =3D netc_of_pci_get_bus_devfn(gchild); + if (bus_devfn < 0) { + dev_err(dev, "Failed to get BDF number\n"); + return bus_devfn; + } + + addr =3D netc_get_phy_addr(gchild); + if (addr < 0) { + dev_err(dev, "Failed to get PHY address\n"); + return addr; + } + + if (phy_mask & BIT(addr)) { + dev_err(dev, + "Find same PHY address in EMDIO and ENETC node\n"); + return -EINVAL; + } + + /* The default value of LaBCR[MDIO_PHYAD_PRTAD ] is + * 0, so no need to set the register. + */ + if (!addr) + continue; + + switch (bus_devfn) { + case IMX95_ENETC0_BUS_DEVFN: + netc_reg_write(priv->ierb, IERB_LBCR(0), + LBCR_MDIO_PHYAD_PRTAD(addr)); + break; + case IMX95_ENETC1_BUS_DEVFN: + netc_reg_write(priv->ierb, IERB_LBCR(1), + LBCR_MDIO_PHYAD_PRTAD(addr)); + break; + case IMX95_ENETC2_BUS_DEVFN: + netc_reg_write(priv->ierb, IERB_LBCR(2), + LBCR_MDIO_PHYAD_PRTAD(addr)); + break; + default: + break; + } + } + } + + return 0; +} + static int imx95_ierb_init(struct platform_device *pdev) { struct netc_blk_ctrl *priv =3D platform_get_drvdata(pdev); @@ -349,7 +488,7 @@ static int imx95_ierb_init(struct platform_device *pdev) /* NETC TIMER */ netc_reg_write(priv->ierb, IERB_T0FAUXR, 7); =20 - return 0; + return imx95_enetc_mdio_phyaddr_config(pdev); } =20 static int imx94_get_enetc_id(struct device_node *np) --=20 2.34.1 From nobody Tue Dec 2 02:19:45 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010035.outbound.protection.outlook.com [52.101.84.35]) (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 5C77334D90C; Wed, 19 Nov 2025 10:49:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763549343; cv=fail; b=TR7iXuyLBirA5NiKScgve9c6DuB4j2TlyIXWC8lP4Csm6BDIGpOvKYAow1kqZxkk6WfujDJ6i7ll2Oj3sLB/1kAmjjfMgsOn2yeMufF5D4caiC2a1K/aQ8arnu0eizKp6MLwGIUGJbmART49L+OFlm6woRWR+28UfIaxdkmqekU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763549343; c=relaxed/simple; bh=lbEqDT0T4enXbZjG/QSbRPXknfrVPBKsHDi15mMqddk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=TIsZYhwoGp5hHEoOjIOky2YbOo2LMNCb+9FzYFVwsfWZOayca4Gl8uw5zcJ5Mq0foyIG+txPNdGjflXk9CcVF/SPxzRfsUyBWkX/HBXjDKyWOXeEGMBQOtVR9D/KJ7zgaHs0YbN8yakhduerwFjz0EQLBV4PBuyoJld8APsKFAw= 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=bXQ5SnGI; arc=fail smtp.client-ip=52.101.84.35 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="bXQ5SnGI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QqrvVa2Vq9LJ6OZSsZVGJevV03CqO6ubAaVHPC2427Co96pUvulaEueB9rUCWyowN1ZsKKY1nP0j+eh2JHPK+r+BY5XO9ig86ZwTSVF+bpzrJRkmEDe9EWsfUDTrkPVw1dOxUiqamT8/x8sauM/cU65OS8i38MLUDvLCal1a6i2CcAi58KPWph/omFbWplTbrGyLISKA2eVjkRe/mxktQjZa+FOpm2ctwQDGkClFSFyQlgOv/gahNvxwVwgps1BVuyiOWS7zDfAM9gp92M9j56haFNoTYCEmq71h80XUm9ARXs4q6kK9KuME6TDhsrK4Tx/KmQuL/8ltoesLwU/jew== 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=fcV1rRhfdUseOApFEBoYVkB2CXFl9b4qKjiv/cvVy+U=; b=gQVMykKhNy+MVLk5+19puJkK2opR5o4EMQLbKLwSqzjdLJ3IidcCQUZSnV9KP4/82t7XbgYp9JsSbz1d1/HMOekJuGFKVemVOQKQiqI9tUwv2P5x1G92nEKt1CXRXkvdzVgl/5iLPULctPgziu16eH2Hsu/q70PEjHwS4Kf8BwxkK50P9PDiSYvfCx7BCDn4+7mKekdgov6R9rlR5CsBt3fmBgA71djvdSmwMcFhAFgSO+wA2fJ/a7ATifilDMtWYBZitCgW9U0w6KSfnvGqk4wiKSyncE4SS9c8+r25duuOQMgDDhG/HJv55PBoVJfYXjQm1hJes4MLizaVn9WzNw== 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=fcV1rRhfdUseOApFEBoYVkB2CXFl9b4qKjiv/cvVy+U=; b=bXQ5SnGIaLcZVHEuPgAwrG1y6CK583EHkoekORpyF7QsOWbRHQsuNLcJ7KoyyR4MMCMZtXQoJS42/91EUcv38XdpXCTwCNBdIe9S/i6t4LQAZzrS1b2RPOA+O6R3S+WSIQE4DrIgR/vi0aMYI4yNDVk9kCH8qci9lu1jenAe2oSpxpoG1Pw7o2qZ00u8+F3XYcj6FsqzDoYWWZDL39651MQBTkR6Yj8oLrhn4FvN5jBkeKCHg4fNtCZW3Uh4zSmm4ZjDgkPh4Dj0k0lIEnhYfmbrCfKhZGNyZsZuxeM9CNrMZBpXeZKK5XbZbwOz44A2KoQ3ptPQNwS9IaRiGtnNSg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) by PA1PR04MB10628.eurprd04.prod.outlook.com (2603:10a6:102:490::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Wed, 19 Nov 2025 10:48:58 +0000 Received: from PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db]) by PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db%4]) with mapi id 15.20.9343.009; Wed, 19 Nov 2025 10:48:58 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: aziz.sellami@nxp.com, imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 net-next 2/3] net: enetc: set external PHY address in IERB for i.MX94 ENETC Date: Wed, 19 Nov 2025 18:25:56 +0800 Message-Id: <20251119102557.1041881-3-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251119102557.1041881-1-wei.fang@nxp.com> References: <20251119102557.1041881-1-wei.fang@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR06CA0210.apcprd06.prod.outlook.com (2603:1096:4:68::18) To PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) 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: PAXPR04MB8510:EE_|PA1PR04MB10628:EE_ X-MS-Office365-Filtering-Correlation-Id: 10fa948f-8cac-4096-1527-08de27593e34 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|52116014|366016|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?doshyWLa6E0bN2AbWj/JZKKjTKpjPUkhRWlIKu2OfZwYNJDTkdT2BxfaY4sJ?= =?us-ascii?Q?mrtgrIW4EeZERO2gV/fzbU86zQhEE6FAwrUIxa12j8mK3WplDQIN5gQqOfRw?= =?us-ascii?Q?S+kEU1z6RWAqGMQH5WGqR4ZKlc+GMc49CQNUoVWKzea5WzFUxDNFn4obkrSx?= =?us-ascii?Q?wdYko67oO0Wa1L+3P8Vt3Ap49yedZDFp5svkAMVGZVp89L3zwTdpyNjb7bly?= =?us-ascii?Q?39knJdhb+r1OXAZ4JOJRhfJZzS5WhyD18AFC/qw9U8QBJwQbpRZpMK5Thuak?= =?us-ascii?Q?FXXtp7rO2GowkCWP04gjSEgiKuRZFSypgu0U52L8F8SaGPtneMEoKQFHUV6+?= =?us-ascii?Q?9OpGsta8nKkeHH3HkKAx/3/9nPiWfOsdpBLSc+c2A59iYMAkO5rzqMox5WTR?= =?us-ascii?Q?XApZVAOst1guxejzUPChSixEG5Il72jyQrX7GA2xbALSWjX/EesSly3MglrL?= =?us-ascii?Q?2snJgMaQL/BpGFfDkO/9vMdRsAyj7+B7jiM8DYMcGOIi3vhg4pp+xOAgGHV/?= =?us-ascii?Q?8D7kO1klWO6aDIC9ewA9Iw7TxJtRi7+WCKingTmRmn4iyqDVLO6n3oJwMNAu?= =?us-ascii?Q?H0TnmPJs+DQWEBysIun89f4ZM93//YfNBO7Z4nIz36KCgh05v6nYClTSj28x?= =?us-ascii?Q?Z8Gd4PL1UWX4YA7X5O8+joH3q98vEoR4OKej6MGXCHAq4YD2L1NVz/jT7RsB?= =?us-ascii?Q?jOXQKRM1i+yR7prYCz16LHQ3w684ZDwOo77vUii9ke1DIPdz495PUP0Q0zzp?= =?us-ascii?Q?+0Khig6W/tetCq3F2tKIkrMWLkkjxoOkKFcIViOgDVRg/JH4mqQhdQo7KW7f?= =?us-ascii?Q?74Q7Finu/dNAhjtHv3dKammw6si6DJow8Tn2heG0imXJ18Eo79jtwuZbm5sQ?= =?us-ascii?Q?mp4OCj1LTf891XBIC7M7Jij10jKa+0gyK92k3/gvDN9eKZDQx4T/wIbHOHWA?= =?us-ascii?Q?9lSZw6Gk18k26cQPSLW91UVNBO/K+Gd9itII72V1+bPZsngaBj15cZa9EZEn?= =?us-ascii?Q?TYLiv/TlGo7mf44EHFUyGbfRgUcolgo7TZI2PfKDY6m0tC3BDpTH+5lcc0Ki?= =?us-ascii?Q?C5ncDzLLk3w8A85rCT6mGyaRoL05ebdrnV8c2nCsnUC6QFyyjHXd0bM4mJWM?= =?us-ascii?Q?XsgEc64LZoZtdFbQsLYJur+yABoe0govFw0h9Jp5LjrxcDEU+bepafXSKRMS?= =?us-ascii?Q?1z9HqVzpZEsMQjrpDq0Kfkv+goEMCK5yUQXKrhqGKW+m8LN+NH/Z60AFnCX7?= =?us-ascii?Q?61wLEYJy5lvQKgx3H+LBJpbWqtfHinV4/DJKdpAA8O3pJXXbZAsf7GEkqEfl?= =?us-ascii?Q?cH0JulbCLcKKy8BdV3iMd55lvUG4xmEGW5gEXRvpedKZVTMtgygryucy9oGH?= =?us-ascii?Q?XMjarQAaR4A/NY/PCGfYcAJZ5c+Kxusen5qQPGwg7XvkHuxUWZWW8nhiOPrl?= =?us-ascii?Q?OnhkhOLgIDA0QMRTnZyaJjPoaXfK17ZSNlAmrf5yUWHkTbsRm7SFm787XzaT?= =?us-ascii?Q?SRQgOTuwLOFUbyKQ4wUdO21LL9tNHVgdkWdy?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(52116014)(366016)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6kGOB5h9RWn13R8lyqTsRtCj6yyhxQKvsNIEYppZhFWHnXDB+1+q3/K9E8oF?= =?us-ascii?Q?LYHxRa9SsUmeziXJrC9l4pNCH5F2l4QIFW9s8kzf+DFu2l8mj+qmHvkeW6nt?= =?us-ascii?Q?J6BRnEqzS9QnDJac3oqP/LePylLQE3dXb7ihDaL911FDnpLQfVDECeyPkbvr?= =?us-ascii?Q?DkCVS3OlVlRONjMR6w+QRaV3hCgVmXgBQOscIauvuUrnEiuVHrafxteGpKdb?= =?us-ascii?Q?zpfU3ThFSo/nloREOLQdi4dEBPYIg0mOwkN9c8m/ZgwpAWiKq5FC0LtQwuTD?= =?us-ascii?Q?aPLnMfUtGchfnp2/H2r6+IvyxSX90EG/5NfHdtG5l6trePFMH8N1/GFUrlrx?= =?us-ascii?Q?1VrIccFvLi1xWFi01wlhVb7fYpJbbJ4iOYRsGpvR9VnBoVxilDzcq2dCPjet?= =?us-ascii?Q?RLaENV0SzK7O2r2DrBLBGKWDKd6PRfPR6eEm/3JwYDD3cvWgmjCUkKp3srA9?= =?us-ascii?Q?kYfaoCZh3apMsdqOHkLcDh+OzcKCcFhJsy2tx+AqdhNaZc9gpMS2CYD4cLMg?= =?us-ascii?Q?7WX/LQ+RlL471Y9EQP1EWk03loWC/aYqdrvuGHu7qDr2r3Z123RjQ06rHnmb?= =?us-ascii?Q?pkij0CaIc+cgTO2LWDmXU3NiyNPl01qIxZF0xJa64YyXp6h/yzyo9888kIyY?= =?us-ascii?Q?MZIISitKZkn9qkqzvAcUIxqvYszY/qXJ8mmPABk6Y3RqFS8Y3YsgzOmCDd2H?= =?us-ascii?Q?sMgfdC4bDiJ+AEZ8ei5B3b99wfq/IE8qFlhmkWdUHAFjXQmo1fKdJQcwEcrE?= =?us-ascii?Q?Kuc+tB+7JZqmR/ZtBVltnp51YzGyse/T5moRqhIbE7+H2VrFWGrVNHbveav5?= =?us-ascii?Q?LXLNUFI4OndAUFibRst2A0cExQY8DBVHGuzH/YwJYxjVPNBrK4CCu1CsI4s9?= =?us-ascii?Q?ZAIgwsKA0B7RCARoMWgm70DyVVKlvBUv94KhZXz7AlnX5RGrgzmZRSgzBp9Z?= =?us-ascii?Q?F0yg654UTVjznfWPewG7dtaDdMy9spCzshWhZbG6jxA8iomO6iAig476y+gU?= =?us-ascii?Q?u8uH4wYwivwzR8XYetQleUAmjA6nswvJvUPuTUG9vtngJZmqiI12aihYo96o?= =?us-ascii?Q?Jms1ubtlYtbJI4/sBzfoS+gEeJIgDSeR08iBihzXLv/NzbKJpyWiEa4Q/+tg?= =?us-ascii?Q?lNR7TaNC/8Dn1Sp+hcMHboE5kEPcIscr8p7Ji80+M9Qm2fVZtNwOPGmf1Q+W?= =?us-ascii?Q?KWCoZuPaxQYgjJeM8Wzzy1jBBVYdXIWHY3WI4pP/qiDuB6Yi8Nq3Qq3gc4vi?= =?us-ascii?Q?OAEoWlhbGFdly6Saxi8N8/HwySUi/b6FTyL1py3v4JqgZ4UG2Pt2H/126PhS?= =?us-ascii?Q?kJfmyng7MZm4ikGe8kJ8tVbvDlWBEh5nNR8ONX1p1cTkCYcjwc33C4ay5Lbw?= =?us-ascii?Q?H2rrVEqtHpuZdO5ua9Uit6w2AlX6DnkzJNVWktN8y/Akvvyy9ENC4s4YRybr?= =?us-ascii?Q?zzYxJE9L0jGXivoP/2cEpOTB9y+FCRbKsy2pA25ldo61yHqU5vPjgaWLz1f1?= =?us-ascii?Q?RxpntSDp5C4bfUHoEdl+rD44sagljm1uVB/mpUNijQsHqZ3GRsY7tC757NdN?= =?us-ascii?Q?kO9ZzG8E9OsxkZ79pYnr4l+ji05grSFG/IYp6Ura?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10fa948f-8cac-4096-1527-08de27593e34 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8510.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Nov 2025 10:48:58.5408 (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: taimA6Vy6B7k4v1NLOTIhdb/jHbbKQXxnA7jXuEC5SKZtlq3EIZTL/vBUGcwzkbp4wypR0Z4/yukxI7/7YDEvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10628 Content-Type: text/plain; charset="utf-8" NETC IP has only one external master MDIO interface (eMDIO) for managing the external PHYs. ENETC can use the interfaces provided by the EMDIO function or its port MDIO to access and manage its external PHY. Both the EMDIO function and the port MDIO are all virtual ports of the eMDIO. The difference is that the EMDIO function is a 'global port', it can access all the PHYs on the eMDIO, but port MDIO can only access its own PHY. To ensure that ENETC can only access its own PHY through port MDIO, LaBCR[MDIO_PHYAD_PRTAD] needs to be set, which represents the address of the external PHY connected to ENETC. If the accessed PHY address is not consistent with LaBCR[MDIO_PHYAD_PRTAD], then the MDIO access initiated by port MDIO will be invalid. Signed-off-by: Wei Fang --- .../ethernet/freescale/enetc/netc_blk_ctrl.c | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c b/drivers= /net/ethernet/freescale/enetc/netc_blk_ctrl.c index 6dd54b0d9616..443983fdecd9 100644 --- a/drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c +++ b/drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c @@ -563,12 +563,64 @@ static int imx94_enetc_update_tid(struct netc_blk_ctr= l *priv, return 0; } =20 +static int imx94_enetc_mdio_phyaddr_config(struct netc_blk_ctrl *priv, + struct device_node *np, + u32 phy_mask) +{ + struct device *dev =3D &priv->pdev->dev; + int bus_devfn, addr; + + bus_devfn =3D netc_of_pci_get_bus_devfn(np); + if (bus_devfn < 0) { + dev_err(dev, "Failed to get BDF number\n"); + return bus_devfn; + } + + addr =3D netc_get_phy_addr(np); + if (addr <=3D 0) { + dev_err(dev, "Failed to get PHY address\n"); + return addr; + } + + if (phy_mask & BIT(addr)) { + dev_err(dev, + "Find same PHY address in EMDIO and ENETC node\n"); + return -EINVAL; + } + + switch (bus_devfn) { + case IMX94_ENETC0_BUS_DEVFN: + netc_reg_write(priv->ierb, IERB_LBCR(IMX94_ENETC0_LINK), + LBCR_MDIO_PHYAD_PRTAD(addr)); + break; + case IMX94_ENETC1_BUS_DEVFN: + netc_reg_write(priv->ierb, IERB_LBCR(IMX94_ENETC1_LINK), + LBCR_MDIO_PHYAD_PRTAD(addr)); + break; + case IMX94_ENETC2_BUS_DEVFN: + netc_reg_write(priv->ierb, IERB_LBCR(IMX94_ENETC2_LINK), + LBCR_MDIO_PHYAD_PRTAD(addr)); + break; + default: + break; + } + + return 0; +} + static int imx94_ierb_init(struct platform_device *pdev) { struct netc_blk_ctrl *priv =3D platform_get_drvdata(pdev); struct device_node *np =3D pdev->dev.of_node; + u32 phy_mask =3D 0; int err; =20 + err =3D netc_get_emdio_phy_mask(np, &phy_mask); + if (err) { + dev_err(&pdev->dev, "Failed to get PHY address mask\n"); + return err; + } + for_each_child_of_node_scoped(np, child) { for_each_child_of_node_scoped(child, gchild) { if (!of_device_is_compatible(gchild, "pci1131,e101")) @@ -577,6 +629,11 @@ static int imx94_ierb_init(struct platform_device *pde= v) err =3D imx94_enetc_update_tid(priv, gchild); if (err) return err; + + err =3D imx94_enetc_mdio_phyaddr_config(priv, gchild, + phy_mask); + if (err) + return err; } } =20 --=20 2.34.1 From nobody Tue Dec 2 02:19:45 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010035.outbound.protection.outlook.com [52.101.84.35]) (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 21C6E34DCC8; Wed, 19 Nov 2025 10:49:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763549346; cv=fail; b=r+lRWKsIJG0QaYN13/4Tr+xX/voFYsh+kfNvt5PFtmYMkt1VDRDXETbgoLrkcwFw7hr+OALOmyqj7v2D1df05uCjVBZekG9e9q7BZO7pIxgZpjP+Qf3WUDhi7ySvkd5e4g0e2Rs6SzlK9opJI1XNmiFeBc4UvCI31BeoIJq3JFk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763549346; c=relaxed/simple; bh=PMs/xmtapr29yv31vvLAIgTlIQytmQEWyHpOXFfCLNg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=MZAR9iFqyp05VCqjtzmBcxAolwOsShu098/UTboPrApwIIAy+fbPYuAEZ4iNsbSNi6nBA9XdOzYhjwcLtJh+6ubiY96emSD30v0ISk0++6i5TueFQHbY90b02Ikd7bkVrX1U2vKPgTYYNAMaQBzag3bNqVuFbFfmWZ84LHQrdyE= 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=jozRnVoP; arc=fail smtp.client-ip=52.101.84.35 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="jozRnVoP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nb/H7enPX3gs5zObj2VFDPyKWOOKSMSY6AGbfT2kvWZiaWYEIdsDFNGx/gjoOKp/Fs98ghJCYIyUHBjL/15MnipZDoNuNqYwdRFVwBlwnJHEmSMSwR123oSlllua2r8OkpMiJGN7huDf3ZKIqpagcc927TI5PCYerO96dQ9xjjv4Zk9CX4phqj0eS639QSZ4l43zaOVXzHOk0iLCG5xFtSwljaGWmr0LakZjZR2SXRf9bd61HYD0i/fxJQFj6CwuRnWI2wIpJTSdNOfHkjtT8ovv/BmUAchwe4zcVNqUK3vDMywi3jOXYD5vK7Knvx6rtrHIeg8cNptBssyU5KiVnQ== 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=Wh1ugBt8Nkt4TSeliMD6m/ioEoY2ZTis6gDExb45f7k=; b=xobf1uQC7WaSbNZcnpJ9zVLsEEbsnb80fDX5B80St3Ubp/jY5nDxjgTdS98a25lQf1DwSKfJVUfs8P/7A/ytxiIBwVMdDXb8vILtfpPnWZqReP7iiGlkyF3YWwelw3Ff8VOyVIFRgJjNQ10k1+RZQw4BSXQNEfSR/iAeEhols0G9x0aVLx2EAiwHoGg0fx/qWCypgEeP5AKNMg1d4Yxz8Op88YD/bmlWHEHitCwNd+Q2uvauYHMKuG2TEJQjBetRG1rmdxB9arG7+B01G/qNeYQ/KwCf+FjLdWpXnAUJFvlbvwJfT6RP3fcr+BUFWz6EnpbdGtScLUS16v2DThokcw== 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=Wh1ugBt8Nkt4TSeliMD6m/ioEoY2ZTis6gDExb45f7k=; b=jozRnVoPYu9CWbBAi04QbsGhX89GuzPw8vSe4HWuFK+l3FrJYuqrV6BIy9uhl5V4IE2r0nat2O7LBowyTAG8vtKkZ3JTnfz1zQ+JUdg2w/jWL6hFadoenfPm6gMJKjuH5kdWXXn5bFkColHL9b6eu8tLxVpnX1uMDiO2GLv2Xzdrw7/9HB8gLd6CElPnsl+J3am0rYxOrcSbMIBb40gnVbisBA/eGXOBTq/ybeO2JMyV/VI8OWS80eeshIfCV2Shk+R+TCUu3SlcT5hv7+1iTJhTQW9dCSezXcGvvo5K8Txu0r/Xu81Z/AcE/25CcZdIfIwwiH8zYA3+kvdqfN2WUA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) by PA1PR04MB10628.eurprd04.prod.outlook.com (2603:10a6:102:490::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Wed, 19 Nov 2025 10:49:02 +0000 Received: from PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db]) by PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db%4]) with mapi id 15.20.9343.009; Wed, 19 Nov 2025 10:49:02 +0000 From: Wei Fang To: claudiu.manoil@nxp.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: aziz.sellami@nxp.com, imx@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 net-next 3/3] net: enetc: update the base address of port MDIO registers for ENETC v4 Date: Wed, 19 Nov 2025 18:25:57 +0800 Message-Id: <20251119102557.1041881-4-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251119102557.1041881-1-wei.fang@nxp.com> References: <20251119102557.1041881-1-wei.fang@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR06CA0210.apcprd06.prod.outlook.com (2603:1096:4:68::18) To PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) 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: PAXPR04MB8510:EE_|PA1PR04MB10628:EE_ X-MS-Office365-Filtering-Correlation-Id: 899f69b9-9934-4a0d-9cd2-08de275940b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|52116014|366016|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?h4v/j2t6zrG4roYNnW7mV54kVNcPqIjBN7oSkWJuNFxzW7/x1+jWuHeKowCs?= =?us-ascii?Q?WKMzrl4Bu7O+SiBbRbww25RFiSA2p/ejvsFtsuyKbNO1NEwyY4EhD3HN9LrQ?= =?us-ascii?Q?YTsgptgq8veMY4mtX29I99WV61QYufl3VL/2q6VECEoQA3dWx9E+HC6PPl7B?= =?us-ascii?Q?h0pDbrD95KdmzOrB5/LbPb8wXD7Vw8bEa3JxAsf3o9UEM29EadC446CkM3yA?= =?us-ascii?Q?kDmStcf65rUIC2fOfHacTjmX6Eg+YLeIj6Qnw8oyGVsALDQ/7qtXy77Y1prM?= =?us-ascii?Q?r1KKq0gzeq39M1hoTUFpN67xzg3iXotO+x4bSl2iuAUYONnnO+GTiEiNoNv2?= =?us-ascii?Q?IRiNPY0jKwoVpXQJsclFSzLk4/dV/cG2xmxwvEeMnfi0uMAJGAAbNLlmcSo4?= =?us-ascii?Q?TZQwbMQqlE1GaVVcBswJR7WvcnJ2h5FGO7c++BinA4WbL52+pjWWt65He1i0?= =?us-ascii?Q?wYTpn2N2+IEm33Kbz+330lvjxSWvXNRALpA61mEBnwfyxR22Ooo/htjLtfFE?= =?us-ascii?Q?WB8IGdtWHZiw8W5TjToe2RIH7Jz+Q3LfXZ5TUb+o/71Pzq0z+fKR1+brPw4P?= =?us-ascii?Q?r6t3EhsmkhpGEsHKhS3lwZ327JNgmP709qCLRb/6r4+9DXzBvCNXVdNSGC3A?= =?us-ascii?Q?MdcXWgvzI5uQslTVInkBPMAV+nISoukKpShll25HZVlhdzTm5EuaxNOlRJcm?= =?us-ascii?Q?bBbbTNPVNAkmB/nZA6jbP9XflpcYLjdfzXAyxpIZp3RDFFFHo1NP/XlZppxJ?= =?us-ascii?Q?LeEpW0vCaTJgpZBEiGvk6SQP+rJg5MtDsI5rBVURb9SFlE4Jt2TJQCtl0U/x?= =?us-ascii?Q?nk8LLDd8g/FjEQQA6YIbCSyMxuHO/q90mih+u89Rtg8ID+bff4GYWNhF4/Wy?= =?us-ascii?Q?/Ay5l1kl2EZY+NbNGoAZKGAjo/L+cd8pEaGcJNQOoWgwDPVquyMwV6Fbz4Mn?= =?us-ascii?Q?kVsgEyY4kM7hwIrsy4J2okO0F4StGCeD3/7CUg+E0pZPwQx3Bw+E0s8XxKpM?= =?us-ascii?Q?73EUp8HkX6wvViOc+pqgbidRGVeyQUDzzJzsKbw5599VE+mrKqaujJYoRY6v?= =?us-ascii?Q?ZkDcW70qTSGq7CKdiyg7qoV8LRgZ58dyDR0CpCVAX3hqOoPGVVYjOnVgdtD2?= =?us-ascii?Q?0MzAb68bg5pb7YvH51tbGivUld1zkTTI3/hTByqI++bAkY4xMBkqCfPDduWm?= =?us-ascii?Q?YWORQxnpKPKrWxDNcFY7IRr6V7nmusz5initKXn1lOELZXN0a9ZJvjn5j4Ax?= =?us-ascii?Q?4CTACtVDXsAl00IEbuQaRrJSkUcmcn1w3cQW83yEb+HLEJHcnGCF2RUi7cce?= =?us-ascii?Q?V7033ERWsberoS/CC8PITg1f2QPbLlCmE8TNwkapfuwUoO42fbvEgJfrhOaK?= =?us-ascii?Q?Sjk8wAjd1ajtmJzqUyvTU+vpsaxBwnB4YWLPjMONQh9Q1UpaKb2ix1DmcBBG?= =?us-ascii?Q?xbO8s39DZ0P4QJQuwEAEUE2EZ3BhkKkOQUqBjLztHY39pDbiEe7xHng2HZVY?= =?us-ascii?Q?08yJ7tP78/opNAs4wpmoyWsL00RL5px9gk1H?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(52116014)(366016)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?euV1HwdykL9pNQwqueKLLA73edKM1xNdhl2I0k4d95aXC02bLmzzQS/Ve5Wd?= =?us-ascii?Q?hH13Xif/Q7GoICdgzzIk+8Kzy0d48OSJtF/2xuG+ErCPwX/pMN8UAbvhpm2f?= =?us-ascii?Q?O2E8l0/5q1vCOZ4MnMlo2zOECXL+qIHxPSA53l0JFzOqpiACTt3L+eJn9jLN?= =?us-ascii?Q?QXPoEDiqGiWnrvLOzrlnksfspzT1wPRYL1PzK49i/hIu7QML9hAuiw526KuY?= =?us-ascii?Q?snMJpZawGP6lLb+LbM43SwXyOQYRd1cGEQuAJAfkBroBhk8U/W2s+YkBfbCQ?= =?us-ascii?Q?7OuO9c79tbkXKhC4am0tCab9LNmpjSARui8yq1/aT59mKm72KZJoofDhUVc6?= =?us-ascii?Q?Yeh2uTvlg7T124mR/RUIg1dQ/QwHdodIMty60Zn2sQi2yV6vdKJEVZQfjwt7?= =?us-ascii?Q?YFgR3QohCvjAmOHgzA4UNT7516euI+pVGQbcQNOM2xlqSnPrD+csPUzla3k5?= =?us-ascii?Q?Wmw4zwpZXrYOr9ifdkV6iN3/rrJ81p+u11z0Qg642Pm8ZvEa20q13YCGkJc8?= =?us-ascii?Q?HqqtjhVU9Ioxa9hGGWr08jk38kPk4gfUl6h80GlZEdbIGSX4f8Z/jdTPP/zL?= =?us-ascii?Q?69IeydUBZE7+WakWkTui7GoTXH6r4ZBhhlb9Jh4dTkd5EfUwESHes8Q388VX?= =?us-ascii?Q?mAnpiJyqWttae048XMljbynakDri3vuMchFJf2IjTOucgxwy7YuB8tdKJ56M?= =?us-ascii?Q?n1RmJ1NzCOtuCgfjhcew11P+Xsaym/eeJO2z66u52OoCJ0WVsYY4N61fvdbS?= =?us-ascii?Q?c351CDHM7i4TYjreu20NwQF/Wi9ACvqmthwi4UmcGdSCaplWEtBGg/vrvWPd?= =?us-ascii?Q?3Of4ztJ4nQL/1W3IT7R44l1+4Ic4aI69v5g1WhHMfg0PWqsd8N/XKvX8wqnf?= =?us-ascii?Q?FaKMbh+yClZIYwWX3d0cAWaveT6t8+bbl7jFQOGrkaUCKtrzsghCKrw8ogxD?= =?us-ascii?Q?jJeF7ZFBJJtkM5utx36n8hLyGcWWG6bDyAn1d2qOUnTAN/V3by1MHWv/f0hc?= =?us-ascii?Q?GxWQAm7VzmqfCUNqch2NGAQ20rGL7ygSlBbnY73xgf2EdD3202JADAOieQiG?= =?us-ascii?Q?tUDSwJcVBYO+E9BSiozn8RsomSl6oisrhgB8zmb3v2TEsVqxzAcf1mV/4Q/1?= =?us-ascii?Q?0wDlFiYLMgrfxLuh92po2FTNjPbVmm+4fq0GxMpSXQJ/YKVodVkLK9lwk/SX?= =?us-ascii?Q?24tFvoU6U9aIHKxu3cDRruOembkYb0ArLK4ZLmYJugL0Z69zVkqKoVKgdK+I?= =?us-ascii?Q?0IavH8AYVIoOadpNIzOqCLF+CE2JJFxQzT3qYd0V9NZ0pnEO/X7FJXrCWV8A?= =?us-ascii?Q?lrJXyItvN3YKiP73hnjRdoTI8Ibldoi+j3d6yAoAr0Zr0szJuDKuTWxz6+NI?= =?us-ascii?Q?aOlW9xB1TFlfAGov0Ux11q4pfryI5jpSm53WNUZYvByHW4RdrCd0r3cCvNZL?= =?us-ascii?Q?W+NoJRhaSp8Wffijz5IPlU+Z+/cM29zevDfaz4L3O4HV19ouER9L9lv5nX04?= =?us-ascii?Q?gDUgaHqj4RcCcIfmlan2ks/roU8kLUDbh9j5XWhVPT1UyZEbgJq3XwynYLMD?= =?us-ascii?Q?pg/7GN+DDScU9X36J3o8iKjqniCElZ7pRqyA9dAZ?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 899f69b9-9934-4a0d-9cd2-08de275940b4 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8510.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Nov 2025 10:49:02.7080 (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: Mf62QpKNeNXvzl4R+Ux+7ak0IJLZ47e3tGLn8LnOLPfChjARlUSpRQy91vDe/5+V5uERtXtP+f663lP3SduTVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10628 Content-Type: text/plain; charset="utf-8" Each ENETC has a set of external MDIO registers to access its external PHY based on its port EMDIO bus, these registers are used for MDIO bus access, such as setting the PHY address, PHY register address and value, read or write operations, C22 or C45 format, etc. The base address of this set of registers has been modified in ENETC v4 and is different from that in ENETC v1. So the base address needs to be updated so that ENETC v4 can use port MDIO to manage its own external PHY. Additionally, if ENETC has the PCS layer, it also has a set of internal MDIO registers for managing its on-die PHY (PCS/Serdes). The base address of this set of registers is also different from that of ENETC v1, so the base address also needs to be updated so that ENETC v4 can support the management of on-die PHY through the internal MDIO bus. Signed-off-by: Wei Fang --- drivers/net/ethernet/freescale/enetc/enetc4_hw.h | 6 ++++++ .../net/ethernet/freescale/enetc/enetc_pf_common.c | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h b/drivers/net= /ethernet/freescale/enetc/enetc4_hw.h index ebea4298791c..3ed0f7a02767 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h @@ -170,6 +170,9 @@ /* Port MAC 0/1 Maximum Frame Length Register */ #define ENETC4_PM_MAXFRM(mac) (0x5014 + (mac) * 0x400) =20 +/* Port internal MDIO base address, use to access PCS */ +#define ENETC4_PM_IMDIO_BASE 0x5030 + /* Port MAC 0/1 Pause Quanta Register */ #define ENETC4_PM_PAUSE_QUANTA(mac) (0x5054 + (mac) * 0x400) =20 @@ -198,6 +201,9 @@ #define SSP_1G 2 #define PM_IF_MODE_ENA BIT(15) =20 +/* Port external MDIO Base address, use to access off-chip PHY */ +#define ENETC4_EMDIO_BASE 0x5c00 + /**********************ENETC Pseudo MAC port registers********************= ****/ /* Port pseudo MAC receive octets counter (64-bit) */ #define ENETC4_PPMROCR 0x5080 diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drive= rs/net/ethernet/freescale/enetc/enetc_pf_common.c index 9c634205e2a7..76263b8566bb 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c @@ -176,7 +176,12 @@ static int enetc_mdio_probe(struct enetc_pf *pf, struc= t device_node *np) bus->parent =3D dev; mdio_priv =3D bus->priv; mdio_priv->hw =3D &pf->si->hw; - mdio_priv->mdio_base =3D ENETC_EMDIO_BASE; + + if (is_enetc_rev1(pf->si)) + mdio_priv->mdio_base =3D ENETC_EMDIO_BASE; + else + mdio_priv->mdio_base =3D ENETC4_EMDIO_BASE; + snprintf(bus->id, MII_BUS_ID_SIZE, "%s", dev_name(dev)); =20 err =3D of_mdiobus_register(bus, np); @@ -221,7 +226,12 @@ static int enetc_imdio_create(struct enetc_pf *pf) bus->phy_mask =3D ~0; mdio_priv =3D bus->priv; mdio_priv->hw =3D &pf->si->hw; - mdio_priv->mdio_base =3D ENETC_PM_IMDIO_BASE; + + if (is_enetc_rev1(pf->si)) + mdio_priv->mdio_base =3D ENETC_PM_IMDIO_BASE; + else + mdio_priv->mdio_base =3D ENETC4_PM_IMDIO_BASE; + snprintf(bus->id, MII_BUS_ID_SIZE, "%s-imdio", dev_name(dev)); =20 err =3D mdiobus_register(bus); --=20 2.34.1