From nobody Fri Oct 3 07:43:38 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013051.outbound.protection.outlook.com [40.107.159.51]) (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 54EFE3009F8; Wed, 3 Sep 2025 13:08:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904883; cv=fail; b=Sd3/rsiqo79o6KHiOkjhc5uEZxBahJSIDXkdnf+sd2ltgyqiK45baJAtGiCSydn4hgxQAVoU1koemX+JdRJ3cVZCwZlXn1MTizgHY3icOf3nunrNIkZ2j6SrcKqhc24goqExy17w0/dV3+jmD5OeX95adf7EJ/kwtko4I9b7pP8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904883; c=relaxed/simple; bh=oLyVzgUEkGvuEVIjuz2iHqNY4MQDSO3ZlkJduBHaTvo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=doPTYE+vIuB7EnWiP46vcN7T1kyNoqgk2OJi85pPEKup/r+nPdDgzYNgyir8RqP4gQohsLOwnv+pFAOoXeQZI76NLIEq5dAqqQmiR47k/uKEA63FnIWI+IK/Ye2AS8BMNAwjhfRzbX/zY01pt8xH5QWwts3PwFRoewffg+yqm/E= 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=I9ZWf2Kq; arc=fail smtp.client-ip=40.107.159.51 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="I9ZWf2Kq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QQu8rpxaiKsoI8Ol3iq3gf5kS3/4c2o+Amw7d/MgaESqy00Xu0So44isHpRRSfrv7f1alDF+X1OoTKKCWvDmy7mKPggc23ZEeUInkplKzmp3lC/tAIA1NhaW/yuqiE/uNSAuMvIxl5ZtkaGByykC/ubO2EWtDW91qHAbx7Y50TKxiFdgVeTOUrMP0c/4p2oq8Qfkw/Do8n62v2FHG4VSODfTsoLWFKLQ2B9J1fS04jdUoyFYJS0qD49um9qCnvxf/tmxpKEz5VqvUh8MAhVeuQ/6hvcxJpj6fXmMJ9VcTZ/2KBR0iN1qQNSGBixh1piOwB9op0S7eDnK2GKsBUHOng== 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=mBlMAdRXtXyNi88wueKiFEV8Jw8/7mGeBA4F6QjJONo=; b=H/wJ6+hfqhpdiii4Bn8oS2WHga3sOOumWuF9YMo3kv7FamA955DZ1oNlaK7D5JajY4PzNN84n9+weThmoh6lCbIDtccnjhFQCuN0AeXBape+ItToKc+THrK0Fff4EX3+Jczr32LhYx1fbwl4NcuYl/mODcZICdhLBvhCl1ataDaWqN0nkBfOIAxoo7P0gGk57dodPOkCoZfcLBgkpslqSiNQLBQFVE2MSnDvFomVekr/S4HwXJkTzzcy59xznSPhe/ZZd/PaQ+0lUWQipy+cHJ84h1E+GL6rbHzwokbzGKh6dUqDFkcIsmJ/NbWCh7O+ABR3sObvz7pgvSmg8A5q2A== 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=mBlMAdRXtXyNi88wueKiFEV8Jw8/7mGeBA4F6QjJONo=; b=I9ZWf2Kqb8V96ovcieJer6raj9xoCPcEuDQdNTHlxraMIg2jISVnmmcreKzwEtCFPgR6t23kew757P/XzS497UQIC2MdHoKEb7JyjiHON9e54AWTYE00h90KerVfJhBeWchMWga+RHFiaqTWkHWjqZC/GSVBNNFzeoQTQN4kJMHe9SBOoF4vv6WGwt42joi8yjI05oVNgBckXcQyIVi2z+d6jAISDPIvk7Six2umP54aupYXfAFu7gydU4lBWbPjTbN0IBcrzuXdej+z9jaccsvmCuA2K6mKQuxlUz6KSayhKGEbFOVIsuGqdDwYKq91kyNlI4GLL1GiALV3yVzbhQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) by VI0PR04MB10420.eurprd04.prod.outlook.com (2603:10a6:800:21a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.16; Wed, 3 Sep 2025 13:07:54 +0000 Received: from AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2]) by AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2%7]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 13:07:54 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ioana Ciornei , Heiner Kallweit , Russell King , Daniel Golle , Luo Jie , linux-kernel@vger.kernel.org Subject: [PATCH net-next 1/6] net: pcs: lynx: support phy-mode = "10g-qxgmii" Date: Wed, 3 Sep 2025 16:07:25 +0300 Message-Id: <20250903130730.2836022-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903130730.2836022-1-vladimir.oltean@nxp.com> References: <20250903130730.2836022-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0245.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f5::9) To AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) 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: AM8PR04MB7779:EE_|VI0PR04MB10420:EE_ X-MS-Office365-Filtering-Correlation-Id: be93bace-37e8-4e0f-5bc2-08ddeaeae512 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|52116014|376014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?GJe+l2+PR0RtQlD42zhaC/EPsK6wPx0eGBWX+HI/MqCvT0jLBFXBXW+U4L6g?= =?us-ascii?Q?wugHEtUiu0M2gPseNcz1jChJyfQS3qRssuNbTZ8GIm2Jfm3lnV99YMnUVO53?= =?us-ascii?Q?yFRttW19GJZIimPoDi4UvhKc5GbepjVLGmZiHec2/Ca09UBjWGW8xNGPFMKz?= =?us-ascii?Q?XITIUzIzfc673WMnXheMTFnM+zti4ZxaLTw8dJCjkzAC72mxjAXQoazhRP8G?= =?us-ascii?Q?Fwtud82KqJW/wflTCKONTKd0QBbd+aLHmB+C6SXY8Em5duy3YkZR9xY4OF3E?= =?us-ascii?Q?LZ31ZQGFW4FxRXJYw42+FQAUBy5QJ8JBJ05MPak67Ep4VGVs/ALqZ/7Dul6I?= =?us-ascii?Q?XgGWBwEQ/dPkCaj+Dx5fTCq0/QLg9yekRE4K8bo15YbNenmUMaEsbCMnpMeS?= =?us-ascii?Q?+qZgyiXUAQnZVh5jDwveXMtNKIYuwD1uRwftNUOzRYQAjWxFq+m4G+4gYPcD?= =?us-ascii?Q?D62yIRnyD44rbI8To33nJGhgXLIgw6+B1PDWFPfux3kZmRqIspwZWsTLFht5?= =?us-ascii?Q?N3CV83Ks0n01pxQT8hUDzG5fl4b79j6dTMoZc8z0fc1MyQJ3QWdyBqBr5slv?= =?us-ascii?Q?bChcpra0kMrniYZxoYuKrMZgFs59QVJTdN0FyFwPCrp82Xsi1Lzx1pzk84pq?= =?us-ascii?Q?HfUSxVLP4XO9DeH+d1PGpCvuWj/C+Zm0XxkrFhYsoYY1u5zKaLZ9NCViAHaZ?= =?us-ascii?Q?zv86+UT72cZipIqMrynutdLcgfTn/H7xpX9hMlwNb2K+sAH/Ke4U0sYmmQkb?= =?us-ascii?Q?Hw9bmVO+/TMcgWTm+JWIkpg1p0IT0kX69FxTMmZqAhTB3Jf0MCNDEnaCjS+E?= =?us-ascii?Q?BIGOI8sY4f5iUUBtaLf7OLej4SEU9dpiVwRBTi0AndcZUr7wen1jKyM7q9Hz?= =?us-ascii?Q?KOwNjK6lFuyeRc0h4zH/R1VK0cG8MDBBExD0LI8jz0S75hKuEjBGzlODgxHG?= =?us-ascii?Q?7zvgyMirD3Wo9ho5u6CEXRWfONJClJNOZu/CJGkkuQNqHuknjTcpIpVy49q0?= =?us-ascii?Q?3+KZ0gXqmNhdj/XzVxGq/xTuxw1TLbNS9Lhhh+QywGW2AApPB+OHkeDWxYS5?= =?us-ascii?Q?cGQvtFnnOrl1vRF4TqQT8mvDyQq9fYv5nTjNIIQ8AUlPpy6R3gj5MjaecK1s?= =?us-ascii?Q?KSiGZxyTwxsewDusZ+411sXmHR7QzSVSs3HCTpT85SE9EcW99O+CdUF680f8?= =?us-ascii?Q?i6DlQ6JBrO+8fyZPG+JZnVtzOdVJS9sL0bmWQuMKzVZdP2+sBimE/7WbEiBZ?= =?us-ascii?Q?7qwrK1KI419xF7Seqkyq+PTep/AUDb6ZLz1DormVxDFmgjQ95Bp41gm2yOup?= =?us-ascii?Q?jvvqwQqkpL4kMb60itxjSPqAaYbiMLw9MIxqlXCuyXGNRWyedvvJbC9n61ha?= =?us-ascii?Q?r36cupemd2KfPt/2M6hEFyQ/u+0UcqzNE2tJurGbkU1jlh82xC6skF4+uUkQ?= =?us-ascii?Q?m9gThoXxTOWbaBCYUmX1BM0EakXop4bW+zRi0K+imn1a5Hko+ZUmaA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7779.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(52116014)(376014)(7416014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?i/hNQwtngE1xG28JAKjw5H7N9sEqKK8Li0GuehKvzIU/Cu9Jk/wWlBZQQ5AN?= =?us-ascii?Q?cITdrOBKww+OM/M3wMpd1/XLL05ZjFilvTp8jIhorRUvVBmHTFdZGPM6NZBB?= =?us-ascii?Q?/IZIEuabpjCUwqpghjTdcPU3wmJkrhEsXPrtyipBT4jqHL5lXFavrX+8Z9//?= =?us-ascii?Q?czJsLy44Uw6EF4bYlkczDVn+X71j8+q5t5rDYmlrggavaFHrwap8ONpx/JuD?= =?us-ascii?Q?b/M7wI/OJ82G6NT4afDAEJZpdZZhOhld4jruz/QYfZ2se6U5/imsMgQrZwgP?= =?us-ascii?Q?aFMgHcjLHz90f1QGocLOeVOEMlFWyz/auzF/CBUrsxlPC7e0s9xeUDPHMGdI?= =?us-ascii?Q?zFefjOQ6xltUqzUxG9sK4ohMKdyBMzHilgfhN52ceBqKjYuVwXQ5GEb1pLV/?= =?us-ascii?Q?EdN3vLoj+IAONlzvsixoB+0bpyrwzw4vLsg9MjeFlEPpXsoHCJMfvjVvSsL9?= =?us-ascii?Q?QeJ7r6HqTQFkYjCyu92cBnMxZkSZt/GxKtsw5kREGWxH5whGwVnFm2MZg7Bu?= =?us-ascii?Q?PGcpu0rObpmYDBtgJoizqlIS2LP2xCpooG00i6XEBPZglIH1aygroIMBU8IO?= =?us-ascii?Q?M0bkoy8s/R2heNNkx3o5HBfmPmABi1qiolS3673+g7a5lksPRhxbdvsiO21V?= =?us-ascii?Q?IJAlm4QD0KdH/Sn7sJVA7xL0ra2yto50zNKnt9pfugtlDzYTOuu+fgNXEYzd?= =?us-ascii?Q?CV0OARg0oqRFaMaFV9j4wewBUDGgLladZJwSNHVTYG+udWNxjrSzm2NmQfzw?= =?us-ascii?Q?sqmyvJSkzFu8f33KN0E6mAMzAkh49JI6HDxvd4cJw6slXtW5S0AltLMqfhDU?= =?us-ascii?Q?NorIbYix8xlFUcFeRHVGKR9YzDtP5l3jcdk7pCJYZ7fnf6FmAmq4iAJvDwlX?= =?us-ascii?Q?IU3RC4zMDyVypM3uZVBCGBGEFgjc6afDXIsTQm4f0pO00A4wX9yx3RNe5sev?= =?us-ascii?Q?+p4TQ1iMMOOU3n/jlp21rx5TJSGMIQL0W9hQN7orpa8qGAVmwn8zIbZynorO?= =?us-ascii?Q?hvZLqLJfS5Quu44BKRZGhMnKHF/F+fatsDl/pGAwUGhxBLNMSSxIPrtT2RYF?= =?us-ascii?Q?HX1qyZUbvTqQy0mTnpC6/SO+rCOlMVGzZNIEsMXijjzWaT+Snxw+5ypJuIbG?= =?us-ascii?Q?HmxIhDsAR815LpqsXzyDsFQ4irHudBzdWJFBP3QG1blxsV3q9LkFJJuTli4I?= =?us-ascii?Q?gtIdn17jYvmuqVy5XS8Cf/yAfi994RtlyhIi+3vHI5l2Oe+B7ObaRhxDlI06?= =?us-ascii?Q?EH2ZLio/EEUaOZSwBGGTKMz2qgdi4hmod/kCElFbCe3U6GHBlLv9VOTQeETu?= =?us-ascii?Q?N7Vrn/O0oXtYwi1xPnk8BnytRMnY7PshABnu61VxDydVCyMA2LYWYjiTAgOB?= =?us-ascii?Q?mClP3lN4JMFTH+Il0pDhXS4a0otXRJqP9CoeKlm8ESPDFU1lS5Ddjf4v8odw?= =?us-ascii?Q?bE/7pBYXJT2FC9MOcYo1oKX6/ZRr+LV5a455cVdlGWMhArtZx9aHibLMPChU?= =?us-ascii?Q?vH8z0nSbwAGCkSfUujBP6SmZubLPV/MSDsQl0L7N5uf55usf6NUlrT3KkViJ?= =?us-ascii?Q?BD8CCcvdF7nrApjXk/Fi8tC99j56yG0IuKFu58EN?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: be93bace-37e8-4e0f-5bc2-08ddeaeae512 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7779.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 13:07:54.5212 (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: ZGsi5YKud+JclKHbWK2RO6UhFSMEWkoqaYOCqgYZPHQhq5/DyhDD+CNLAhjSXncdO73k/+sCeqo+4K2/ojMYew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10420 Content-Type: text/plain; charset="utf-8" This is a SerDes protocol with 4 ports multiplexed over a single SerDes lane, each port capable of 10/100/1000/2500. It is used on LS1028A lane 1, connected to the 4 switch ports. Signed-off-by: Vladimir Oltean --- drivers/net/pcs/pcs-lynx.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/pcs/pcs-lynx.c b/drivers/net/pcs/pcs-lynx.c index 23b40e9eacbb..677f92883976 100644 --- a/drivers/net/pcs/pcs-lynx.c +++ b/drivers/net/pcs/pcs-lynx.c @@ -49,6 +49,7 @@ static unsigned int lynx_pcs_inband_caps(struct phylink_p= cs *pcs, return LINK_INBAND_DISABLE; =20 case PHY_INTERFACE_MODE_USXGMII: + case PHY_INTERFACE_MODE_10G_QXGMII: return LINK_INBAND_ENABLE; =20 default: @@ -115,6 +116,7 @@ static void lynx_pcs_get_state(struct phylink_pcs *pcs,= unsigned int neg_mode, lynx_pcs_get_state_2500basex(lynx->mdio, state); break; case PHY_INTERFACE_MODE_USXGMII: + case PHY_INTERFACE_MODE_10G_QXGMII: lynx_pcs_get_state_usxgmii(lynx->mdio, state); break; case PHY_INTERFACE_MODE_10GBASER: @@ -170,6 +172,7 @@ static int lynx_pcs_config_giga(struct mdio_device *pcs, } =20 static int lynx_pcs_config_usxgmii(struct mdio_device *pcs, + phy_interface_t interface, const unsigned long *advertising, unsigned int neg_mode) { @@ -177,7 +180,8 @@ static int lynx_pcs_config_usxgmii(struct mdio_device *= pcs, int addr =3D pcs->addr; =20 if (neg_mode !=3D PHYLINK_PCS_NEG_INBAND_ENABLED) { - dev_err(&pcs->dev, "USXGMII only supports in-band AN for now\n"); + dev_err(&pcs->dev, "%s only supports in-band AN for now\n", + phy_modes(interface)); return -EOPNOTSUPP; } =20 @@ -208,7 +212,8 @@ static int lynx_pcs_config(struct phylink_pcs *pcs, uns= igned int neg_mode, } break; case PHY_INTERFACE_MODE_USXGMII: - return lynx_pcs_config_usxgmii(lynx->mdio, advertising, + case PHY_INTERFACE_MODE_10G_QXGMII: + return lynx_pcs_config_usxgmii(lynx->mdio, ifmode, advertising, neg_mode); case PHY_INTERFACE_MODE_10GBASER: /* Nothing to do here for 10GBASER */ @@ -317,6 +322,7 @@ static void lynx_pcs_link_up(struct phylink_pcs *pcs, u= nsigned int neg_mode, lynx_pcs_link_up_2500basex(lynx->mdio, neg_mode, speed, duplex); break; case PHY_INTERFACE_MODE_USXGMII: + case PHY_INTERFACE_MODE_10G_QXGMII: /* At the moment, only in-band AN is supported for USXGMII * so nothing to do in link_up */ @@ -341,6 +347,7 @@ static const phy_interface_t lynx_interfaces[] =3D { PHY_INTERFACE_MODE_2500BASEX, PHY_INTERFACE_MODE_10GBASER, PHY_INTERFACE_MODE_USXGMII, + PHY_INTERFACE_MODE_10G_QXGMII, }; =20 static struct phylink_pcs *lynx_pcs_create(struct mdio_device *mdio) --=20 2.34.1 From nobody Fri Oct 3 07:43:38 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013051.outbound.protection.outlook.com [40.107.159.51]) (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 E2EB8301464; Wed, 3 Sep 2025 13:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904886; cv=fail; b=NzdXR/D3wbyrc6plQ406vYtajWeDsblVWS2xH7zmzKWd+fhxWTeusZSf9TQlNvNm1K5akEsYGQLAdP8AS0UcVhSrFnaAT4ejT7EO5QRUgrmChj0TwEZNRqIcbtyZhCwEz2ow+Ozai1dt6f8QXB6gyZgWNpsC8brNrbfhBtTR3js= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904886; c=relaxed/simple; bh=jglmZSmvTHW5oE2VMo8xjh6sIN3HFPO22SAAWA3TajY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=RR+UaXpBestCxHT/Ti01TTsvL784ij4vsUohbzlGh15zSOgpBHaQlSUBZWuGNVSsFevdFP1C0NlstAjosLCLrHLM5sk0uickH+E6Wdikc3/Mvmxe+MDcIEgWnTxSM34L0ENdGJRwRqrG1HDnzAfkBt8ew+Wo/eHX9ba01dZB7XM= 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=H9gPV88D; arc=fail smtp.client-ip=40.107.159.51 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="H9gPV88D" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kDZeyArXUjqiCR+hAC8EgRuDporn/xPiByvyp5tSKqYogMjdYqQaRZDB41GJDv7gr1i0kgxRwNt2f8qL5DvQUJ2bLitZqg/GEmgIjkwFyGAqCLM3uhp2QO8/kQDnnfAHldfzNmeuKeEnL1b8RT+qMHGClWD5BqfbQsVjXx4o1T3A4bwfCZ4G4mhZljkbq0lFIai6dcGOPw4dUW8510o5lPVzIpwfkpgfnAy/wMr+nvS3YcSJbvS4sVh/acXDKg1QSA6LhlIRCDUn6io53JVO4pKe9EAtKZvjUTHGpB0Vs3iTQ3jvUwPYAXhEuRGRmiWoV/G9nJCuZBxTRQpBxVBM3w== 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=LyzUXw4ml1BeBPFz8RbTD2SXLxxv1hgZyUMC3oIWxlk=; b=EWfh6g0DKuB9GuD2HteejudrxT4IxwFIVWaf7ezhBH1ufjXM4Vx6Nyrq7PG4AL+23l+wSmURwQ+m87mKkwWu1vQZtKNXtQO/0ge3ZanMrskmjRE7sRSlr7dtm1KoDrNZw1bauTM4bEy9r/7nvfzaDXRLFiTo+Ixv/kjbdzd9MdafvqRSt/u6FXtYhIpcyQbbuUeZTUTC48igNg9gBR9nWxaYkd+G6qY74SPN2ZQobEvtbunDLk4qd63JIX3evC4kRP0hXDcC/e4LyBI3CjkIVyUP29KBcUqcAE3B2lVah3ozPERyvkqerbRwdGQGjG4YWOYOSIvrk1UaFBOpnVfW7A== 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=LyzUXw4ml1BeBPFz8RbTD2SXLxxv1hgZyUMC3oIWxlk=; b=H9gPV88D51ZhLs4QWkdc8HvVqTHfQQDz1kLPfm8rBqDXaJ+ZUW61WyjTAnoOCupAub4qCylFIcxckk05gP/r8+gFE6SosYKV5QrU4Y9aJPDGCx8r/2wRFOURuzkLndYX3xVxbe5yq0oRr8MJ7xDrjTzqxKzfG1gStTv5QkIFK/zxBghh/2/aeLBYuhKQNOEZGA9adHDbqaGccJkCeW9lGw/2Qr87cYfLR9SRoQRi+F/JPSxVxfP1Mk3Fbmq98h52oBfyXo1EBDSuFO1p1b0+fPZLEs2vBUBlxFi2a5mVPOm8FCnsLzTml3U3REIUpAynHttjMUbIZ+3xISuapS0cqA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) by VI0PR04MB10420.eurprd04.prod.outlook.com (2603:10a6:800:21a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.16; Wed, 3 Sep 2025 13:07:56 +0000 Received: from AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2]) by AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2%7]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 13:07:55 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ioana Ciornei , Heiner Kallweit , Russell King , Daniel Golle , Luo Jie , linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/6] net: dsa: felix: support phy-mode = "10g-qxgmii" Date: Wed, 3 Sep 2025 16:07:26 +0300 Message-Id: <20250903130730.2836022-3-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903130730.2836022-1-vladimir.oltean@nxp.com> References: <20250903130730.2836022-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0245.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f5::9) To AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) 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: AM8PR04MB7779:EE_|VI0PR04MB10420:EE_ X-MS-Office365-Filtering-Correlation-Id: fbb209cf-0a74-43e7-5758-08ddeaeae5e9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|52116014|376014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8Akat8K+ltyWziFY38Oqdpt/2Z8voVpirRvPAY45VP6Oh0gqsD4QawnkdTyD?= =?us-ascii?Q?sXLDRuRp7YpInN26UcBoI04AFr7rw79wC9ESSDdBNmlAKDkX2PapM9pWdcF9?= =?us-ascii?Q?O9ezMXG53JZOPL1gnfg+sR0i0gbuttu42ICmuEFkE0RCjZKnFZfr7vFBa1GT?= =?us-ascii?Q?rfs1KafojC4D+Y6ZZz96NN7U/NkKpv9tJSj870kE5hpvT5qpzaMSpUkvQ8ix?= =?us-ascii?Q?qQB8oxDCXkA4YLn5byktJ2azO9zqU/AV7JiM8+5Jc0+qg2qOVKktfJ8t3UTt?= =?us-ascii?Q?mze0J6R5qdRTU/ApCFzW2Th91OiOpO1jvvnEyADR7wprMFLevoywdllveU3o?= =?us-ascii?Q?z/II31DrarEBOZswKSTdLd4hrM1QkRu/iLiz/1X9afrWIr3Wp0QJLyWTHCYd?= =?us-ascii?Q?vj4GOEkNse7bfIRoqoM9XHCdVBAKiaS3Jt936dqosPZNIg8wdIHbwRAaagCD?= =?us-ascii?Q?0/guzWOVAY3xGDcLhzNS+leWJ93WC2MaP0l8JMCMa6kZmM07rat6F0pXDY/v?= =?us-ascii?Q?RYNierhSGpwM1ieCM7PEgoXNs1I0efr0a4DGBLSdKvfVT4vWqybwbtuQ+O2D?= =?us-ascii?Q?2d9DKHUlYRHDQb5EOQ3Of88+k0tOpjKkohP7j6QUs1LLSQcKta2SBb5X6/WT?= =?us-ascii?Q?dxIgfnQbQ1vKY1AGFcqTMvXPjgH7Kuv7tIwOO8tRF7yzHZb9l26gDLNetwHf?= =?us-ascii?Q?CoMl6JZVt9YWi6YxBSwPUBUdO7jO59eDfFqpOU3NxJvWFEKVqUZy+YEAgV/p?= =?us-ascii?Q?cqy8EmsY9NY64YNQeSJa0MkdVObIZ6neczIicwB4OwGYSwBFs41aWIKLrPx+?= =?us-ascii?Q?Ojv7Ueihi7s9ZQ7Y+GBAwP9yeyJMjD7Z883QOwp5+lHuJc3uCKvWWJHDtX4d?= =?us-ascii?Q?Xto097eH4xNgYKCF6CTR5By+JgO2ebgh9qf+NuOsOPgAMhU7Mqa7Uhs7RBVw?= =?us-ascii?Q?vDDx/kN+VezxFSO8ONGvaOKF5twew0qN4Mouy1KPDIGEwHPABCAp/2mlR3Dy?= =?us-ascii?Q?TuyAsp3lVGas7w8NrMMh0vARxUoyELPL4yBYljvkNdysVBD4RjgNn1PPgt/7?= =?us-ascii?Q?9qKFgasK7Y50IVhDkBg5uaKS0ovY1s4Qt63IzPZaIZhsI01Tu/xIyqTtNdgh?= =?us-ascii?Q?gmQ8SX5Nss5ff/5zf4JB/9CFIdJ3QsqnOfByCJhtbz+wxT1q0IZPMK38bxbK?= =?us-ascii?Q?DL9GDmkJIHpQjYsm4YSIRk7C63YyGNx/iY0WrvEH8NSEl//gtAMoO8485pfL?= =?us-ascii?Q?tbcz00qGBTgd+tL6U5mOcwKelRYBraK3aLhB6zC/gtyeX4FYNIalrhxnh1LQ?= =?us-ascii?Q?q9LXncyCnfxYsp+OMYG10C1LpvJaFmtrOlY/n41xeVgq2jiA+wZka4NUB3jG?= =?us-ascii?Q?S1uxNh8MzImdgPmb2UkwMoAMeJ+wzUWVBkW4fIzBkq8LP8kLrIkcdg0f3/gh?= =?us-ascii?Q?IfXr9Tx0r6BzPsqddj+4BSiMLgSgvZFx6jlT/J/Q5AFs525WwPp2Kg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7779.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(52116014)(376014)(7416014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ahZc3DITfIjOn3EpINuKHHbEqh7ZbQtRdVucrtdyzGg27XiK5yt+CiQduh6L?= =?us-ascii?Q?0uMDe1yjmdd2v7mkid+dT9wmRJXtPTwPaKI7bCG1jcFTLf8hVYBWdMhaeDtI?= =?us-ascii?Q?hc/U+eNAy5B3A9urUiJq312yzT5fGKxlM5D8CLyks7nsM2iUn7XZm4XhSyVy?= =?us-ascii?Q?uwShjt4rm2pNWD+1SUG38hNtl9sTyxdIGri15f+p6yffpnmQeYC5/HJs8MT5?= =?us-ascii?Q?AMC6IT3D8LrzqECY+HhaG6sfHlJ3pMv4Up0YE++ChdP7mgZXWogJo68J/ZFr?= =?us-ascii?Q?/ha8FRTHlt6s82Qtw/CHoSmqjuylEc4MPZc1l9s97zJsnF85aGB52G4UUTsl?= =?us-ascii?Q?leQr01cMxk+LXNM7ckywTygPrD4b8cpFnZoaguD771J7KvNcfvDyKonwdrSo?= =?us-ascii?Q?Uy/s9WbpJTaooQAqpC42RAgHkbMiSdwMdsZzQCMqyH/2HKXpJHiVXC0LEy7y?= =?us-ascii?Q?QNDa15p0TBns23y4bxkRnXsvBoMSOUrXFg94vVszSakbN9qOVuclhYGTjPyU?= =?us-ascii?Q?BTs7+SygVzQ12FogXrJaiFn0AWNx7uUhBkvyjxrZa2HAbP6VTv8ccpkJhbM5?= =?us-ascii?Q?XC35ULNm/FnccU8s1Yg+CWDzyObOcpqmGS4A67yN4WV5Mk9w3evtipk6/V3W?= =?us-ascii?Q?doKuYZ2RlBTGYYOqkbBzHNhZqCVsfhjjJJdTwertJJ6BXmyTKmW/RCDHbouw?= =?us-ascii?Q?med+SXXkBNiPmfv7uS64qviB/3I+GZty4UGh8iFZ+eaYaqeJrsacsRnSZkii?= =?us-ascii?Q?ek1dbzJXC+YG6fF/iTd0FS1woMt20Nf4mO2uQH2Z7VK4FL0ROCoV6HTadj1L?= =?us-ascii?Q?BvtSIc4BW6uGodVO6L6NyB/HjagG3qwGmyp45isyX0wBpDRGS78LgGWWJ80v?= =?us-ascii?Q?Cee97240RF0/LBVv/fPpDMLPsblTDbKOzrQ0ETAu7g89ro/ErDKoo0f2yv6K?= =?us-ascii?Q?XsIjVUotKbVgg59QGGNZULG6JP///ncNdy20z3CZBhVZxnNYJDVygAz0uZGi?= =?us-ascii?Q?Fy8x/Yg4+s+XQAoukh+GTIYzb1eXjrpw+nF4Nmk31vTlJUuERc28VibZY9iv?= =?us-ascii?Q?yVpmrBmyLzjlfSul9NZ8vmSzvdor7nIcopMhQTw0zTiONSZ1EK0TZ6yUtq4o?= =?us-ascii?Q?27RbT4HC5YxM0SovWqAxgQrx2DCGdprnOzzM+vx0fxZycJcXR5wAmsD3VcTb?= =?us-ascii?Q?00sgCADI/nAReMPKvH28odUHKNQJufztKGSkNpiie0UT2K0DEwHWSD1pUDyw?= =?us-ascii?Q?1zg9M8C8c8qLYNqpjosOHpwQNN7Pu2Y9zb2tpraGkMDMmatjptIxF8StK6hk?= =?us-ascii?Q?ymTaZ4lrxUEh0WX5HtSgGOoeFLRNF0yY1nnKSiLQ8cf7lh7+fJxpoqkEuKos?= =?us-ascii?Q?Kv3nl1hIs2VFIOHjOdmGXFMxpuPfKu9lu+CY97K3QSvt2l6zhfTr+Ysr6B98?= =?us-ascii?Q?3BCHouX3Uhls8mK9zTsB6jSnPZKIpwgJv01tQG8uZ9Hj+ZV6Qw8S4n4D46Xk?= =?us-ascii?Q?NibRrMSL19lplWXBhyNqdAZg000UqfYre/9oEYfvAVAhoGDgu7kU8BRy9Uwb?= =?us-ascii?Q?CeJBzd37PIqyAyt2SdK7O0+96/cWJE2/vKD3MiJV?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbb209cf-0a74-43e7-5758-08ddeaeae5e9 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7779.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 13:07:55.8733 (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: olYJ8LNgA0diKDT/oKyQgZw6Bdi3hwlW6O/mk/WTHH3eO1GxNgfZvYW1ExrBGHkNXkJnpOoZl/X+7gMo5gSDOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10420 Content-Type: text/plain; charset="utf-8" The "usxgmii" phy-mode that the Felix switch ports support on LS1028A is not quite USXGMII, it is defined by the USXGMII multiport specification document as 10G-QXGMII. It uses the same signaling as USXGMII, but it multiplexes 4 ports over the link, resulting in a maximum speed of 2.5G per port. This change is needed in preparation for the lynx-10g SerDes driver on LS1028A, which will make a more clear distinction between usxgmii (supported on lane 0) and 10g-qxgmii (supported on lane 1). These protocols have their configuration in different PCCR registers (PCCRB vs PCCR9). Continue parsing and supporting single-port-per-lane USXGMII when found in the device tree as usual (because it works), but add support for 10G-QXGMII too. Using phy-mode =3D "10g-qxgmii" will be required when modifying the device trees to specify a "phys" phandle to the SerDes lane. The result when the "phys" phandle is present but the phy-mode is wrong is undefined. The only PHY driver in known use with this phy-mode, AQR412C, will gain logic to transition from "usxgmii" to "10g-qxgmii" in a future change. Prepare the driver by also setting PHY_INTERFACE_MODE_10G_QXGMII in supported_interfaces when PHY_INTERFACE_MODE_USXGMII is there, to prevent breakage with existing device trees. Signed-off-by: Vladimir Oltean --- drivers/net/dsa/ocelot/felix.c | 4 ++++ drivers/net/dsa/ocelot/felix.h | 3 ++- drivers/net/dsa/ocelot/felix_vsc9959.c | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c index 2dd4e56e1cf1..20ab558fde24 100644 --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -1153,6 +1153,9 @@ static void felix_phylink_get_caps(struct dsa_switch = *ds, int port, =20 __set_bit(ocelot->ports[port]->phy_mode, config->supported_interfaces); + if (ocelot->ports[port]->phy_mode =3D=3D PHY_INTERFACE_MODE_USXGMII) + __set_bit(PHY_INTERFACE_MODE_10G_QXGMII, + config->supported_interfaces); } =20 static void felix_phylink_mac_config(struct phylink_config *config, @@ -1359,6 +1362,7 @@ static const u32 felix_phy_match_table[PHY_INTERFACE_= MODE_MAX] =3D { [PHY_INTERFACE_MODE_SGMII] =3D OCELOT_PORT_MODE_SGMII, [PHY_INTERFACE_MODE_QSGMII] =3D OCELOT_PORT_MODE_QSGMII, [PHY_INTERFACE_MODE_USXGMII] =3D OCELOT_PORT_MODE_USXGMII, + [PHY_INTERFACE_MODE_10G_QXGMII] =3D OCELOT_PORT_MODE_10G_QXGMII, [PHY_INTERFACE_MODE_1000BASEX] =3D OCELOT_PORT_MODE_1000BASEX, [PHY_INTERFACE_MODE_2500BASEX] =3D OCELOT_PORT_MODE_2500BASEX, }; diff --git a/drivers/net/dsa/ocelot/felix.h b/drivers/net/dsa/ocelot/felix.h index 211991f494e3..a657b190c5d7 100644 --- a/drivers/net/dsa/ocelot/felix.h +++ b/drivers/net/dsa/ocelot/felix.h @@ -12,8 +12,9 @@ #define OCELOT_PORT_MODE_SGMII BIT(1) #define OCELOT_PORT_MODE_QSGMII BIT(2) #define OCELOT_PORT_MODE_2500BASEX BIT(3) -#define OCELOT_PORT_MODE_USXGMII BIT(4) +#define OCELOT_PORT_MODE_USXGMII BIT(4) /* compatibility */ #define OCELOT_PORT_MODE_1000BASEX BIT(5) +#define OCELOT_PORT_MODE_10G_QXGMII BIT(6) =20 struct device_node; =20 diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelo= t/felix_vsc9959.c index 7b35d24c38d7..8cf4c8986587 100644 --- a/drivers/net/dsa/ocelot/felix_vsc9959.c +++ b/drivers/net/dsa/ocelot/felix_vsc9959.c @@ -34,7 +34,8 @@ OCELOT_PORT_MODE_QSGMII | \ OCELOT_PORT_MODE_1000BASEX | \ OCELOT_PORT_MODE_2500BASEX | \ - OCELOT_PORT_MODE_USXGMII) + OCELOT_PORT_MODE_USXGMII | \ + OCELOT_PORT_MODE_10G_QXGMII) =20 static const u32 vsc9959_port_modes[VSC9959_NUM_PORTS] =3D { VSC9959_PORT_MODE_SERDES, --=20 2.34.1 From nobody Fri Oct 3 07:43:38 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013051.outbound.protection.outlook.com [40.107.159.51]) (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 716D630275E; Wed, 3 Sep 2025 13:08:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904888; cv=fail; b=aZq9YN7tokYi25invPr4deINwsXFWSpfptaiOTGSRpUoh9hbmzJ+yc9kH3xN7HJoc0FyZtohucN/wMFfcTOO4acv/jPPnFkTo/CFx90E7k4PtIddebMcnMX/o9SwCIog8VQyb2mr1jB9I3UkoO3F6gOtmruOK++L0WHdwjXLSdQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904888; c=relaxed/simple; bh=4tbTpnrvBATwhmfZU8v8gjxI0wUx9hBP763j3p9kVoY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=rHUQB8Xj9eKxFiZ1M1GfVJO7Ue3tkuvRH143Eief3K6DABPTOmlJjZHhSLP2uVeJirNhD25xt/8+9gDHqeT6Ek/9AavIa28liCi7LfjtEtljRNq7vqb4fXezG2gObeYAXotw521McmiiHAp7qkyKTkm4AEIqaNnRORNEPlLV+Is= 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=KF/s6joq; arc=fail smtp.client-ip=40.107.159.51 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="KF/s6joq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gGYLalNf6rpXEPYfe8n8Hj0GC5j/KNnTYbBT3QTxjBHnjLMHc6GiIXA0CiOhha1RgT+x4awckvKnj8y3KPkRsp5vLt6tu5zlOqxHfYPzPJomeP4U0P2FF41BGy5RwPLA3yLJJeQ9qG4x4FLQ3SDXoInAOAmJ/9dt3NXWu4us/WWJXtKB+l6cYRDzzj+14aABDzgpp/qHlWCLVgCRNle0cNA3at2M5U1X9Zhqh5dYYlIr9ogKg+N6PhaEY1hgxeAVoBwf++6CeuEGnU3O3ci1FUU/uUTcd7scTHv5ifaND6RbczyFSU620nAX6VmVFmFvnsrTdKrjjkgZj5b+TKx72g== 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=QpYVjZvE6qEXT86OT04zV9gSW5yIiQWvI8qePHfgTTQ=; b=HpN+2EyY3UxlpWJPC+17houZrMLjhMror6GFDg+uOKVRMEiR+3jBJ4365LIlk+xNN9w86Z2BRndBwjEw22doBoZtFsPEsqq7fUyhgCJNrjiTzkKqO2NPzvwtTDOYQMkRaBDqGcRO40TnGB7Mz9u9AUb9fJ+ajzyLRu8Au6nCjp8fOhWnkr+HGoW+Ppsks5NDA6QzFm3LyDgnaqIGvyu4YzoFWiyvHKW/AcrmpnIk3cFXAKBioe5j69Wg/H8PjdFbBgluB6aIuVZg0o1uH34UqH85W5/byZU71x6cosE1o9lNuI+eqGpgkCcHWMj81bRSA8gE6KcjVA1KnGR170dyUg== 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=QpYVjZvE6qEXT86OT04zV9gSW5yIiQWvI8qePHfgTTQ=; b=KF/s6joqKBAdwRJL9Cv2XiXoevSCh35Yh9wYeu2mYc7Hm6zfe8IscAd+N7V6TWcznzn4Xk2i/dSL4LKuIbvgFtUAM/ODpstK3h2+RCX9DlHwFrelZyIgJA5+6/bI8ludY4OU0tHlhEKGmeCgvQytDtONkM1Fvb1dKFmqprzM4Ktg3V7MCJVntchZHdexl/y71i/wkWTh+r+6EdkKosHw9qXY5EVZXkc0PGtPPr8i7UXftKSKW88bNfipjTKio3QeFRl/2m3VPAU7fZiN0xEHuXCGgS6XbKHYkc7SQ8J8WdShb0SIqeTvPSu5VQGf7bN+BCz/vqMixPF3KqIDNbkJaA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) by VI0PR04MB10420.eurprd04.prod.outlook.com (2603:10a6:800:21a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.16; Wed, 3 Sep 2025 13:07:57 +0000 Received: from AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2]) by AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2%7]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 13:07:57 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ioana Ciornei , Heiner Kallweit , Russell King , Daniel Golle , Luo Jie , linux-kernel@vger.kernel.org Subject: [PATCH net-next 3/6] net: phy: aquantia: print global syscfg registers Date: Wed, 3 Sep 2025 16:07:27 +0300 Message-Id: <20250903130730.2836022-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903130730.2836022-1-vladimir.oltean@nxp.com> References: <20250903130730.2836022-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0245.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f5::9) To AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) 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: AM8PR04MB7779:EE_|VI0PR04MB10420:EE_ X-MS-Office365-Filtering-Correlation-Id: ea361ee6-b818-46a8-8f8f-08ddeaeae6b2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|52116014|376014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IfXid0Xut1Nx8pwLPLkiL6vbatwG2lxQoQlICsA8rGx7r3gFLy+/kzYXr7Wd?= =?us-ascii?Q?Jt9jv+TrZeFmqvuCBr6cYQoaJJeuC1np15wm+Hx/Kqc4kwUwaXA7641CKbsB?= =?us-ascii?Q?Ct0J/F8c1f89KdvxrfAikv/gGm5D5CmbG7B8zuF5gZ72Rdl8BW12cnHXfkbX?= =?us-ascii?Q?GT8JJ5FIaszUM7ARoMjP8tLt2jKVKtuhPKReqimBeeo29STQvGkypZxzMLq3?= =?us-ascii?Q?Q26vHGztITed166h32t7/vHYxlgib11m9WMQYMt47OpLV/6G+seWBO9cxPrL?= =?us-ascii?Q?tZvxZ+pNcocAMpmOCb2gVQnOYhv5cysMBC5BduNPF6a2rbVHL2fPH9dPiqEB?= =?us-ascii?Q?G5laiPx0fyTsG6cNrLqryXcRYxJVtKTw7qEV3RleoQwUaZFZTygb9P/zuCqE?= =?us-ascii?Q?Jl85a7KJqBJpsm+VWbG9r41v9pgv09f5aDei5hJBjaRvIXcT/3ZVJbTkk0UG?= =?us-ascii?Q?BqAYVmP817Va2dbOVd2HRtAAnvhiIW1dOw/gnNaq7+qAf4WalJl/OsO485Oe?= =?us-ascii?Q?+ain7k1/sjFeccgbb1QY4+8/99jgkuF/jduOZ9WjbsLVY9hB7NXqzl0bdmI9?= =?us-ascii?Q?dIb/rf/fq9jlU6GHyhFlK0EFX2IR7WCqchfI49Ezw7WF5WfFKisCziFB/A3z?= =?us-ascii?Q?6n7HxWj3mo+SNjrTxH57ko7Gyf6NBM1vHYHq90M0GdJ12hFdo9B3ened4lQm?= =?us-ascii?Q?/lNFa6403K1DfsPCPfFYLMcWfP0n8Ff6sreciFguFusg54F8kQacITRyeOrA?= =?us-ascii?Q?l7TL9z2M0ZaLvEB4IGAaXXfzTeynsE+auQGMX60ZnhlyRpkoHvD4a73BTYcy?= =?us-ascii?Q?FDEA6DwqOt+VoeLptr7Q84nNTGA3I/URzkAsCfBVsA1Fw3dfYTslHvtcaqdN?= =?us-ascii?Q?ARvVBQKXiA4lPb0dLQPdUru63TWZTCMf8i0pew5GTK9D+qrFRpa4vUlr8rfc?= =?us-ascii?Q?3Kx5mSCwZbKH+5mmjtULMTXUUpvFnSpxzr0iEihbLwayqiQWJFnecaAcAS3w?= =?us-ascii?Q?ZZn5p+SKQNVcCplxmUPNe33ggic836xz4SyijqVgtUZtiTTSTr+/kLIE+T+3?= =?us-ascii?Q?zMo6ElYCJGl5FzMgY7maaZq6CCGYswrlqSfKSbfNQNDVIVp59gqJ5ytmXUUR?= =?us-ascii?Q?GqUL+D9aHsj9bcCCSKGZSf9gaWkZ/Dncx8/R4QldIhJ5qlhKLlSp/HztZRZ2?= =?us-ascii?Q?UH62XJhidZDZr0PTO+u42q09wfNGNYRa6U/kEi/1cx39T1x/PRppt62lQ8Fh?= =?us-ascii?Q?URnZ3wErmrGeCMtVk23OP7zpt4SBJJoIBmXX1NIgzKiboiR8EU1y1rtKSrjb?= =?us-ascii?Q?fZBkT35YXHfpWO/LmFr1tRotWkskXkr2fUtN0vsf+TJtgQxLjaT+Sl8NZd3M?= =?us-ascii?Q?J8oHCgIh3XheGUAfurF9UkMF0MGW7Td4biUBh9fDEXd2bm1XluKMPEelLc2t?= =?us-ascii?Q?jU85O5zz/uh9RFVkQoc5/Ma6tcJ9LXenUA+P0hZyVN9lijfbTPewWQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7779.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(52116014)(376014)(7416014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4i49E+kuq9xG7gu1jqF87bLPv+X/8lkIr1O+ux8svQJvypMxvuXbSoLx35X/?= =?us-ascii?Q?LiCzdYVml4xnQjzCQkf/dIqE2H4SGg/Lrast/FZd1R8P+kqroPOdhn1fFKCN?= =?us-ascii?Q?LpPV3kgyCILWtfb+xFx+xawYXEZK4Ir9zLa/0AhLPKrbovVoAW1PuEoG7HU0?= =?us-ascii?Q?6zRfzSPMbQhihVK3ooD92S41xysTy9O3GXfWXhEe9ihXoKRJy18hBq9au/Xr?= =?us-ascii?Q?fSAqe/+OZJkDwSCzYbK//nfvj8/oHFUH4prxVaIOVYPNPR5qn8DfF8McVvhq?= =?us-ascii?Q?rCsTsAHAE83UiZfRXJoLrXCXLHR8eNxSraXNre8C7ZZlv0W4USbjU5PpK6uB?= =?us-ascii?Q?3WyZWDwXE9I/MBSBSOHZZ2f+zvW578lMKGhV6zPW4ZdrMtiahcoaExrXIp4y?= =?us-ascii?Q?HmMmaNZOdl5PUVOXP/57ohPwC1H9zvOVWvRAEH7Vib898tqkC4fzdefx9azp?= =?us-ascii?Q?RgTh8SSpVzr3N5LqtPgYuig+vecCKOiIK0BPNuL2uwBbhwKrOJtYIaGJE/K+?= =?us-ascii?Q?zRRQBdXTHEFvofSkyQQBqUIPyAfd8H/VEbdsaFYxPgCF2jHA+lwTuW57MbRg?= =?us-ascii?Q?00I/5ZdYfvXZalnLEi8kVFkBYaso8/ildYyi0N5r65JuvpJyTep8Lllp517k?= =?us-ascii?Q?phEldCFcnSY0E03Yt6dIB1YqTROfCuLTNQ1S+zNSC1YoZLj6wFhoW1JDvfz9?= =?us-ascii?Q?0vdXF3c6uFPgGlH0NR3XeMVcNsOPn5RvcGTgMBzTBJAOU9TfAVJxIcWOQMOP?= =?us-ascii?Q?7FRTNYtpzKTrO2O1H1K+yHEVWwCDGn9UIhO4ZeRpEjRTXmYW8UOZ0UlN9Dx8?= =?us-ascii?Q?2GcdMJkZy9Px3Qrh6CCKQSTwH41g3fSMCV0vTGpv07kYPYDmSxNuQDCLJBYw?= =?us-ascii?Q?ShJEc1h1Lm5ZxvRjDXOZrCxSH6OnZ1r0L+cnLzC+FEg6/nMQDfIJm72S9UnJ?= =?us-ascii?Q?4INEW3Bk+akeRR6YL3ahZenGuuK0Snq/I/Qbef6Z4J+mGZXXB6ENseoamJK2?= =?us-ascii?Q?sq4EKqPAm5ufMd5qGBxu/zce+p6rDbMQT2fJAoBs1tVEHvgPWwEs98JfEeTT?= =?us-ascii?Q?pdANmEVuHRf9IZbtCGhUXjZXStUHRLEZTAEwtoqXZKueCAP82B+d2M1SksMP?= =?us-ascii?Q?m053mg8ZskQKyriwt6UyodP2MiumxDzAwd5lchhAE5CTG4e07JAs4lLtaeT9?= =?us-ascii?Q?6Fcrlo5dNX6hXVK6eyfX1IOZtz/cn/a1WG3RgxgEjZejHHRO5TWkpgg2HBBl?= =?us-ascii?Q?JQ1xacjoHOxkcsD9224sPlG3kqpK4Anf2b3X/ho1PD2IdEdhnqjVaHz65IOb?= =?us-ascii?Q?o58dhoGCieMJRglf/aT0CSRsW55iVfN+Ja4qGsYEO+exF6/6yrg/XLm6o7UI?= =?us-ascii?Q?21HFaWrPrR3FQEnbGf9XIrYN0IVxL7hTd1KjLxLNGb4tiqSxnp/rqqJnLtT5?= =?us-ascii?Q?adR+Y/qWbYApK16P1+k3nIqFpXmeGHutljmvpgBXkS3l2ns9SNsrDb4xt/QJ?= =?us-ascii?Q?r5uhxzIl5gASXTwNHrLSAavIe+pALqOrG7epMD0CBPDCqx0tzD+ffo+XC/Qu?= =?us-ascii?Q?kDp78Ttlf50SVP73tFeYxWk+a/UV6PhmTEJHFwBi?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea361ee6-b818-46a8-8f8f-08ddeaeae6b2 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7779.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 13:07:57.3170 (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: x2LI/75/F69nU6QTDZogeKvxjGU/JN2AIscTao0vwPb+UOJ0cROMxDsOA4tKiRd0F2Tk+Xr5SHY2R3TUiPuqcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10420 Content-Type: text/plain; charset="utf-8" Sometimes people with unknown firmware provisioning post on the mailing lists asking for support. The information collected by aqr_gen2_read_global_syscfg() is sufficiently important to warrant a phydev_dbg() that can easily be turned into a verbose print by the system owner in case some debugging is needed. Signed-off-by: Vladimir Oltean --- drivers/net/phy/aquantia/aquantia_main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aqu= antia/aquantia_main.c index 8516690e34db..309eecbf71f1 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -837,6 +837,14 @@ static int aqr_gen2_read_global_syscfg(struct phy_devi= ce *phydev) rate_adapt); break; } + + phydev_dbg(phydev, + "Media speed %d uses host interface %s with %s\n", + syscfg->speed, phy_modes(syscfg->interface), + syscfg->rate_adapt =3D=3D AQR_RATE_ADAPT_NONE ? "no rate adaptation"= : + syscfg->rate_adapt =3D=3D AQR_RATE_ADAPT_PAUSE ? "rate adaptation th= rough flow control" : + syscfg->rate_adapt =3D=3D AQR_RATE_ADAPT_USX ? "rate adaptation thro= ugh symbol replication" : + "unrecognized rate adaptation type"); } =20 return 0; --=20 2.34.1 From nobody Fri Oct 3 07:43:38 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013051.outbound.protection.outlook.com [40.107.159.51]) (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 C4522303C9E; Wed, 3 Sep 2025 13:08:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904891; cv=fail; b=rgTs44jStFbi0lmeVV/zr3N3HzT0HxRN4apzWjyzQHE3CK3KJ0T61DgyhS+AU4ZjpzByk6kgaaii+KA6dxWkBe+mlYmFgBAK5Q/MIrbY2MHfgoTSk8yuQim/NGxuMlslJIzzh3uYkdAmDGfyQP611++W06V/K3vr0dVGxX102wQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904891; c=relaxed/simple; bh=VhUcTaK46blh7CGsuvIqYVS7RSgJfAGwtDinUS26YeQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=t4OYcGmjPn8TCeVP9OYIrPkCPSsXz1q0eP6HurNNFpNw/pb82xvuNfFfMgxxS9vinbsoMLIWUjkwx9rpZz6fDcqJHvNWu+kTjFMW1PMExF1Hj5Njg7jlI3/0szeyogXU7mKHJkxir5vLkh333v9UmfGy9tmuMMuivuQGbd68gps= 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=S7l7Pc4C; arc=fail smtp.client-ip=40.107.159.51 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="S7l7Pc4C" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xBWp+f5ugHa8Tt7fkX9XzPxMcEQoSOroNIrIXFZMs4HSYgYob/x5hDqhfknTpizY7kdj+i6s52nIwcdc+Ze0PcuIttbnMkbEguUyGII9mfw9E5tAZcJfzFzav9Q6iv2ONG3ZSoubRe1nphc6wol8deCQeJ9AvkFP0LKD2sZiCIT+MYNrM48WifLbQ+oFPWZG7aQpDRrwjftCM7dQJcPyBpAU2WY4MYuxIxcLmGZGTbjXHYFzfY4j8/fQnIsOk4Jtk8EEHpMITHMTBJRaen271QS9LIqCAqioYco7F/g/JKhPFacSdZSvMqTqPXG9F8I4jjXkBvxlngZZzS9Rn8vs3w== 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=2LFyGAXqpoNzEJiGhsaErrvmGFgCzhmDA1NeyoR7X8o=; b=vcFaixaZTyWzZuJ42A2U866Q4jmIgcnzGKyORThWUvvMb8Et+Ee5TX7W5ZxJy0HVvTr3/NLiLbrneYmSV3CqEzZSpLrvVCGv9YF+TYczKuUzg4z4GEcndPvwvR7mrEvCWjoqMAgVOxYuI9f1nF86qxJ4O4WJtLXmpWbJZXUvUnlrE1OvfiO1vtl+1rIYHFJDmvtku15ii/UQ9vL6Vsyt0CoIuwXes2iNF7VpGj7O4VHqIYjOgV74QE6ENszZ73tybXmWnBEVoLdY22vQeOdlD8Ki5duXe0Y9r3JkLtIka4Als5OqFlGFipAis4rUz+Vn22IMMMaHqHDLgQxsohANdg== 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=2LFyGAXqpoNzEJiGhsaErrvmGFgCzhmDA1NeyoR7X8o=; b=S7l7Pc4C7PUjZvAxok8wBPF+EORcwMjDEVRbpgSGS2Y7ZHqp2tzGZkzbFd7xzcbPbD2wVkX12CbTiWDfE41N4CerOITDrtTDhdjUvQxu63UQGxdG2o804v4MRcidU8aoM7+SllyuUGrj77YEA9frX9/MrBjGT9JV2VmDy8Tao63zQ8cuT2CIiDe8GmBfAlECjS9d5iSmPx1/mwgt3QutepSTJzfwKppI8419dRm4Pl8WxxbOHtGOijgPp6eiwPiGUcp/KjqKUEoOWrNdAmcOVcrUIqNZJwtkboz9I7SeHBG5qDkpo3fAXHKvvpORfNkiib+38HEEFB6T1waIlrkYdQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) by VI0PR04MB10420.eurprd04.prod.outlook.com (2603:10a6:800:21a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.16; Wed, 3 Sep 2025 13:07:59 +0000 Received: from AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2]) by AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2%7]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 13:07:59 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ioana Ciornei , Heiner Kallweit , Russell King , Daniel Golle , Luo Jie , linux-kernel@vger.kernel.org Subject: [PATCH net-next 4/6] net: phy: aquantia: report and configure in-band autoneg capabilities Date: Wed, 3 Sep 2025 16:07:28 +0300 Message-Id: <20250903130730.2836022-5-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903130730.2836022-1-vladimir.oltean@nxp.com> References: <20250903130730.2836022-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0245.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f5::9) To AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) 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: AM8PR04MB7779:EE_|VI0PR04MB10420:EE_ X-MS-Office365-Filtering-Correlation-Id: c99fefe8-8c68-4391-c3df-08ddeaeae7c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|52116014|376014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0NT/6kKfTUW3Ad+FzBUHIsHjN5u2S2h7MGRSRNkFZ+oiGOKulWz75eyamtL0?= =?us-ascii?Q?S3EYWfgDUqehdS7X8siDoSnoSoW+CszZjBJGmoEk3JHOcZ999HfYpHdpsJCN?= =?us-ascii?Q?796gs8uYcliuM1aiasgblutxZj1E2aKe25jUPAdGQ2+YoMKMazUVxc/K8jad?= =?us-ascii?Q?OSf789ExuJbP8PyWQBqqkSNstx8wII9o7UPHca2tXlQ4p8lVLinBCHyuW6vB?= =?us-ascii?Q?5jojKzil9EePb5bVWxSOI8n5h8jALMYl3nuH4mgqHSn/BZHPBoH3zfGO3n6e?= =?us-ascii?Q?XDXsA/Offwc6f1SaR+7k3f7xQPIjOXLX/t2/tdsaUTwpraEgYbp3sHazzjTN?= =?us-ascii?Q?7rXPMSWEMwzh3qhsBLX+4aHfe6iwzXCqa5diY8nwp012EuBQv3b1VjjMA91e?= =?us-ascii?Q?gr7/gEptOAa8qlKg8PbqSgvaxfCIpsdvULWVFbYaahftu7v0fDPTdamKJFZN?= =?us-ascii?Q?ReRg6mQZFzgoXF61yHxpoESX/5rsGxooz2UWc/GqIx0ZL6bZJ4179/orHGe/?= =?us-ascii?Q?64i4dWlgVo8JDPzcZ76kvfwXRyypu4DlgPa8tk6uHCfATGNFOJIBXQp1oP8f?= =?us-ascii?Q?8JH3oTrDUYL9+/iFV6WThbwQ2c9NF8SCGVoaeuXx7mFSHosq9KEc575mdzb6?= =?us-ascii?Q?ITx2nK8uL9E+9pzfkFu2sNkELsW5VG+GNQ5QU3RKIkdKZcW+jOUQCk3+5LRi?= =?us-ascii?Q?G+vZ08lAFxh2c3bsno144090XQjyKWFzQr2BT5h9Ut7k+LRrEjt4fs9DTM1G?= =?us-ascii?Q?yGc4dQWpmab9K6tahqUSf+LZILrnoCayihrykee+M1Lb5kdDtYKO7e8G86IT?= =?us-ascii?Q?aPwYv3GGsdv2aiGWCFou7HTtq2YNqqTZnVoueUvez49ezNe5WPi2A/H++7Hv?= =?us-ascii?Q?qVWTEni3X1Gho8FqWPVRc1fYu0cnKlmoYMy4jm07dM40P6EK0YKUd6G47AN6?= =?us-ascii?Q?DcXMAFAEyMvf0j4X/bRTBOkDyC5hxS2iP5UxmsiaXuyc/wz2tNWcEfDtfvlx?= =?us-ascii?Q?PHX/iqETr+ok8MU7yeHQFjd6zUB+6uq8JBVpstnYfZhGkh/+1A67SVZMldw4?= =?us-ascii?Q?kHTNdaZ5UCGC3Ze1DzUr8f/kZlqJHj5sG1WA121kTBmeX2ci+2lx7ZVpTCyP?= =?us-ascii?Q?7dCbrEwxofCoCONe1TmdzUoV8HFfhQhIFO1IE/p65vb6VKeLFfQMlW6BpP7Z?= =?us-ascii?Q?rpvu2qiRqz0b4BZMTTETw1XqFhohuCgZMWpjxwZwZn2U9/BcTnxYvHKwtZJc?= =?us-ascii?Q?hnrPUEavATH+XbURELA1/QMbbT/Ss8XV9BbkunEG2bRm9v5FyYrXV58EhjtS?= =?us-ascii?Q?ADMdgOuUxVCTZiZmVNxBsLf/MlP4/cX7FDaC3MAY7imJvAogDOEB+clWpIoX?= =?us-ascii?Q?tpWQs0FJOmKQtV7zkcqD6hGYNvQVp6uh3wlmdjHQYNkNcgJt7TbiMmHXePIr?= =?us-ascii?Q?eT3d+l3X/34=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7779.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(52116014)(376014)(7416014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6LeSyyiGp7kuwU7/ub9KafRLOvN7EMpEgriOX/GwVd5K8A2gfUffsZNODEyd?= =?us-ascii?Q?A2pEeVlvl6XAklV1WuaHNoYLyJbOErpE9qvw0bh3RPvg+/d6EIx2+GxLC8xX?= =?us-ascii?Q?0Hr4pDbr7svjlLXf9s1+xNgxP5G/raUwRT+hlHasGUgHQYH5D9/XaTkvgQyG?= =?us-ascii?Q?jmr+JFDJ2yVnmoXa7MrT3nqa7I47Vdx3pGdB7ZTZ436xUpBEcmyajRrOaRoY?= =?us-ascii?Q?gKBL9jkUs+rNknT3Q5Aiu/Pk0GrSEGlGx/Dl3KMiGq0aPxhaEzZj64q1zpwj?= =?us-ascii?Q?mzGEByNuGhFXA9blWd2FRX8xe5fml/Lj9l166rDDuLZmkzWhIisu7MvVQQjZ?= =?us-ascii?Q?CHEjcXt/MpiBpqjTEpmwmKPdX2Tj40vTe8jcBnaZmzI9VPOT0vK6xdrsyRwD?= =?us-ascii?Q?100BrgG0wjtl97fblE4Sx3N5EkjzHcz9XvrK5VUMPzlwoWGWJV9dtGqdyVX5?= =?us-ascii?Q?ysUwfET3TTQzkp5d2FyYA6bT3KpjROL8U5sy9fIySNvXeF732vdPr/xlA3xi?= =?us-ascii?Q?Q6J5HaJAGKlRF5SVALQdv/xGPYBLyX/AZUBlB+BBhTbJrUvxMZ+G8PJBA9aq?= =?us-ascii?Q?6epKGMP/k6GeICHKSWS6UZwbYYWo2mKTs73XPosuLgI7GHARvp0c/jzVhN4I?= =?us-ascii?Q?pYr1SZxeiHksqAkUbXNGpcm5CUeNHePE/AISSTidqtlJbe3IfJBqvcXIvbJ7?= =?us-ascii?Q?BtkHUpCgi3FjB7nM4kvyu+bhHbAgg6y4w70tLiqs+dCQyhhXu/IyDAHRrht4?= =?us-ascii?Q?lufLtVCh6ugfCLD0F6I1/sIybGXqEnIIh5gwuynBVUw2JD2LqBh16jvkELLF?= =?us-ascii?Q?T1LJraywB6xyV6fmskfczwNt/hvFVmf90ZDHmrXIVxKg59sxSAn99Pds7N5Q?= =?us-ascii?Q?g+i8nKU2nkW9ecBuRUMLRejU6kNgAHNgzQeXAS3oYjFWKynfMnGwLqSQNQm4?= =?us-ascii?Q?6p9DBSP6Yv7rS8p1Lkon86YpyyNSb2n3PMNMfegY5uaGdOG4//FlrHxbKgTd?= =?us-ascii?Q?vZP8DD7f66d9BZxGfUQ4FJ3DS7M+usOBzGTkKONH9oCTUI8f+5FCEwInU6a5?= =?us-ascii?Q?jafueZvK9OWpOoZhJr/1K0yTZ7lhKL71rk6/AAvRBNapISUMPI1dMOmcsl7B?= =?us-ascii?Q?IGdCTnk3jvQ5gM6hnz583I3EkQiT5dJsf6RZvaLe7A6JquZO9cDLKyoa7vAX?= =?us-ascii?Q?DTNncwUaWRUrFBV3s7uwk4MUOmAjUZwx4667eA9Hc1gptokcKCtUC/1/bPcc?= =?us-ascii?Q?uBoJL5G83xrQ5IFtFYvdnSMikRZ62OTwA60SXtKM45mETUoACi7DRsKueYtb?= =?us-ascii?Q?dOIy4ZgJvDYEy1cuzjfMelP7rWPHcGsprhx7Pbbcc+dP7pDUQTgeT8pcs5bP?= =?us-ascii?Q?SvQ5R7UQy8LSIjTDx94BOtyohMKQAK0ADQZFR1HPty8CSx2AuXOdIUZ4OrJa?= =?us-ascii?Q?aLUvYc5BHYSAYb9MRYOd28Ga+8tpCXZAO0TXKq8zhfSb61dEK7DU45UX4YRV?= =?us-ascii?Q?2OOQK6kL+0iQ53FSzScviQD2EL5ARTF03b2xtYC693b0y+qVBXJGazCkjzAt?= =?us-ascii?Q?Ct1a1Q65ocnXR90p1kTEuATqhyW628PyPBht4n/q?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c99fefe8-8c68-4391-c3df-08ddeaeae7c5 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7779.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 13:07:59.1150 (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: vjypcJFTCPeTo50+2iCPRxNDMjjieFBV+kHgkNth54cSM564OOJzxWA7m4vgvLZ92SnM8FGrOyCx9wJlCE9QxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10420 Content-Type: text/plain; charset="utf-8" The Global System Configuration registers for each media side link speed have bit 3 which controls auto-negotiation for the system interface. Since bits 2:0 of the same register indicate the SerDes protocol for the same system interface, it makes sense to filter these registers for the SerDes protocol matching phydev->interface, and to read/write the auto-negotiation bit. However, experimentally, USXGMII in-band auto-negotiation is unaffected by this bit, and instead reacts to bit 3 of register 4.C441 (PHY XS Transmit Reserved Vendor Provisioning 2). Both the Global System Configuration as well as the aforementioned register 4.C441 are documented as PD (Provisioning Defaults), i.e. each PHY firmware may provision its own values. I was initially planning to only read these values and not support changing them (instead just the MAC PCS reconfigures itself, if it can). But there is one problem: Linux expects that the in-band capability is configured the same for all speeds where a given SerDes protocol is used. I was going to add logic that detects mismatched vendor provisioning (in-band autoneg enabled for speed X, disabled for speed Y) and warn about it and return 0 (unknown capabilities). Funnily enough, there is already a known instance where speed 2500 has "autoneg 1" and the lower speeds have "autoneg 0": https://lore.kernel.org/netdev/aJH8n0zheqB8tWzb@FUE-ALEWI-WINX/ I don't think it's worth fighting the battle with inconsistent firmware images built by Aquantia/Marvell, and reporting that to the user, when we have the ability to modify these fields to values that make sense to us. We see the same situation with all the aqr*_get_features() functions which fix up nonsensical supported link modes. Furthermore, altering the in-band auto-negotiation setting can be considered a minor change, compared to changing the SerDes protocol in its entirety, for which we are still not prepared. Testing was done on: - AQR107 (Gen2) in USXGMII mode, as found on the NXP LX2160A-RDB. - AQR112 (Gen3) in USXGMII mode, as found on the NXP SCH-30842 riser card, plugged into LS1028A-QDS. - AQR412C (Gen3) in 10G-QXGMII mode, as found on the NXP SCH-30841 riser card, plugged into the LS1028A-QDS. - AQR115 (Gen4) in SGMII mode, as found on the NXP LS1046A-RDB rev E. Signed-off-by: Vladimir Oltean --- drivers/net/phy/aquantia/aquantia.h | 1 + drivers/net/phy/aquantia/aquantia_main.c | 77 ++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/drivers/net/phy/aquantia/aquantia.h b/drivers/net/phy/aquantia= /aquantia.h index 492052cf1e6e..3fc7044bcdc7 100644 --- a/drivers/net/phy/aquantia/aquantia.h +++ b/drivers/net/phy/aquantia/aquantia.h @@ -55,6 +55,7 @@ #define VEND1_GLOBAL_CFG_SERDES_MODE_SGMII 3 #define VEND1_GLOBAL_CFG_SERDES_MODE_OCSGMII 4 #define VEND1_GLOBAL_CFG_SERDES_MODE_XFI5G 6 +#define VEND1_GLOBAL_CFG_AUTONEG_ENA BIT(3) #define VEND1_GLOBAL_CFG_RATE_ADAPT GENMASK(8, 7) #define VEND1_GLOBAL_CFG_RATE_ADAPT_NONE 0 #define VEND1_GLOBAL_CFG_RATE_ADAPT_USX 1 diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aqu= antia/aquantia_main.c index 309eecbf71f1..a9bd35b3be4b 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -35,6 +35,9 @@ #define PHY_ID_AQR115C 0x31c31c33 #define PHY_ID_AQR813 0x31c31cb2 =20 +#define MDIO_PHYXS_VEND_PROV2 0xc441 +#define MDIO_PHYXS_VEND_PROV2_USX_AN BIT(3) + #define MDIO_PHYXS_VEND_IF_STATUS 0xe812 #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3) #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_KR 0 @@ -1056,6 +1059,52 @@ static int aqr_gen4_config_init(struct phy_device *p= hydev) return aqr_gen1_wait_processor_intensive_op(phydev); } =20 +static unsigned int aqr_gen2_inband_caps(struct phy_device *phydev, + phy_interface_t interface) +{ + if (interface =3D=3D PHY_INTERFACE_MODE_SGMII || + interface =3D=3D PHY_INTERFACE_MODE_USXGMII) + return LINK_INBAND_ENABLE | LINK_INBAND_DISABLE; + + return 0; +} + +static int aqr_gen2_config_inband(struct phy_device *phydev, unsigned int = modes) +{ + struct aqr107_priv *priv =3D phydev->priv; + + if (phydev->interface =3D=3D PHY_INTERFACE_MODE_USXGMII) { + u16 set =3D 0; + + if (modes =3D=3D LINK_INBAND_ENABLE) + set =3D MDIO_PHYXS_VEND_PROV2_USX_AN; + + return phy_modify_mmd(phydev, MDIO_MMD_PHYXS, + MDIO_PHYXS_VEND_PROV2, + MDIO_PHYXS_VEND_PROV2_USX_AN, set); + } + + for (int i =3D 0; i < AQR_NUM_GLOBAL_CFG; i++) { + struct aqr_global_syscfg *syscfg =3D &priv->global_cfg[i]; + u16 set =3D 0; + int err; + + if (syscfg->interface !=3D phydev->interface) + continue; + + if (modes =3D=3D LINK_INBAND_ENABLE) + set =3D VEND1_GLOBAL_CFG_AUTONEG_ENA; + + err =3D phy_modify_mmd(phydev, MDIO_MMD_VEND1, + aqr_global_cfg_regs[i].reg, + VEND1_GLOBAL_CFG_AUTONEG_ENA, set); + if (err) + return err; + } + + return 0; +} + static int aqr107_probe(struct phy_device *phydev) { int ret; @@ -1134,6 +1183,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQCS109), @@ -1159,6 +1210,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR111), @@ -1184,6 +1237,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0), @@ -1209,6 +1264,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR405), @@ -1217,6 +1274,8 @@ static struct phy_driver aqr_driver[] =3D { .config_intr =3D aqr_config_intr, .handle_interrupt =3D aqr_handle_interrupt, .read_status =3D aqr_read_status, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR112), @@ -1241,6 +1300,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR412), @@ -1260,6 +1321,8 @@ static struct phy_driver aqr_driver[] =3D { .get_strings =3D aqr107_get_strings, .get_stats =3D aqr107_get_stats, .link_change_notify =3D aqr107_link_change_notify, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR412C), @@ -1279,6 +1342,8 @@ static struct phy_driver aqr_driver[] =3D { .get_strings =3D aqr107_get_strings, .get_stats =3D aqr107_get_stats, .link_change_notify =3D aqr107_link_change_notify, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR113), @@ -1303,6 +1368,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR113C), @@ -1327,6 +1394,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR114C), @@ -1352,6 +1421,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR115), @@ -1377,6 +1448,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR115C), @@ -1402,6 +1475,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, { PHY_ID_MATCH_MODEL(PHY_ID_AQR813), @@ -1426,6 +1501,8 @@ static struct phy_driver aqr_driver[] =3D { .led_hw_control_set =3D aqr_phy_led_hw_control_set, .led_hw_control_get =3D aqr_phy_led_hw_control_get, .led_polarity_set =3D aqr_phy_led_polarity_set, + .inband_caps =3D aqr_gen2_inband_caps, + .config_inband =3D aqr_gen2_config_inband, }, }; =20 --=20 2.34.1 From nobody Fri Oct 3 07:43:38 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013051.outbound.protection.outlook.com [40.107.159.51]) (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 B5E1F302CDC; Wed, 3 Sep 2025 13:08:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904893; cv=fail; b=QbJq57wmKgWy2TtpiqQF6wkXD1mRyhah7CBkUNBrOcGJRnvrCFRHZ7wMz5rZrjSvmgwm3Hzy5mwf961E5nmJdrUbUIIp4uKxF4fkzuKTv3DpxisHOHjy1JMiWdCwBbpcVPYfWz9tGD4H+Dhl9RPqwVN5LPdOHPU/FQU22bRcP74= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904893; c=relaxed/simple; bh=yg+HjEe/IABl83n0z+V8ZKF8/QGGwd8WAVd8DpvNbVg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=DCxZVTqoj33rZYMBmxfpF5CmzVdNxxrI1tzOLO8zahfjjMzBwpWUqG1OTcJAAfEWmRZJ84U+AgY1gnQxbEDHqykaEYAwkWXeHih9wKq8tuR0fWrw2q3ZqwaKE/ygJTSab2z1HY0i1zsJ3qyNINkI9sDj1ddtqfzT9LPIDllYWtc= 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=YYM1WWB3; arc=fail smtp.client-ip=40.107.159.51 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="YYM1WWB3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Nzji+IymRRlqR7H8sryycT6W0LG+8C2DK+yTE4Ad3VlwOoWE8k94ir32nyXsebZ3Nw/FW2oTo+qgxN5589slsKa647fWKxZtv4R9tTNqubqAtgftSNY6qCmsczw7tmlV39v4SEeJNYTjboMElpqIAsbhGBOwG+xBuTtkP6I6MSKnRwGqS7LiY9u5kTZWyy89NTKwcoit3AwxaEbpQLBucRl1ey9e4GuJ6QT6Ww6ytzXNFfz7hc01qwXD47q35cG2ulFZJ+rx1WnYzWtQahda8lnimBOR3lgP4XuyRm0COH9no/8CS+ZZPb9WyJkDtTF8AL8uAyuC3RzE8tVeIHdZlw== 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=/h+EZQ06yPwEDBK6OttNNTqQz9r7LzBnBWIz+0Gflqc=; b=NkjEcVsPFDL0A138DwfkKbgN5AB5hL38TayNq4MiifFTD5gNTBW0h5kid7zmEah5QS7clgs8tKbHBPW04hldaI3hzaJUyi75UcLanp31b9HSBMdLSgEY4eqr98pe6FSqHp4JMc4cFf13ctRGckxFutiUv02MJKW/+oIdFA7ZcjYqXGq0Bxwz0MGysRBUfMgKjYK6gn6uVCtH09x5XBkDX02m9NwzMwq+j6v/r23rvYNw815l0d/Bq6IdxsFEvwitQx2VFw2Jw8aJb/M07cFfWGRIzqUk242y3N0ELD0NxTkUxIUFvzDL+FJbUgekUcfEBQcN1Wc3XakXhKRtASKkYw== 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=/h+EZQ06yPwEDBK6OttNNTqQz9r7LzBnBWIz+0Gflqc=; b=YYM1WWB3iwEhRI1YuSYwHCtOWRNxQNhNfgWOfqIEtoP+ZWbXAVzX/BMGjS1zPk2Qdq3NBvQfGUY0rMn64INyCAGbMxfclEy24iXG8uiFzlqOvrhxs/TirvfdHAtNGzflPZRPApcu8vYpD5suzJuU5IFVwblHJ+KNJ9hXB7M+Fas80w1ayNXzpMImuM9vw+j7all78CoAxfVvKyoFnkn03lVDFFqEQZDI0tRz5BexCvb6Wq51l3jkABR+MBvTAFg9zB0vi0DwXohQbg/Hky9pHU3BHWKGciYmlcx4EeIbshX04bYw8dyzRncjsQIrxu2/7JLW4yD0qcXqPQNdQ+eorQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) by VI0PR04MB10420.eurprd04.prod.outlook.com (2603:10a6:800:21a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.16; Wed, 3 Sep 2025 13:08:02 +0000 Received: from AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2]) by AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2%7]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 13:08:01 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ioana Ciornei , Heiner Kallweit , Russell King , Daniel Golle , Luo Jie , linux-kernel@vger.kernel.org Subject: [PATCH net-next 5/6] net: phy: aquantia: create and store a 64-bit firmware image fingerprint Date: Wed, 3 Sep 2025 16:07:29 +0300 Message-Id: <20250903130730.2836022-6-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903130730.2836022-1-vladimir.oltean@nxp.com> References: <20250903130730.2836022-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0245.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f5::9) To AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) 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: AM8PR04MB7779:EE_|VI0PR04MB10420:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f6f25b4-183d-4472-4917-08ddeaeae8d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|1800799024|52116014|376014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3XnRBCAmtPnxdd9bTBboq+45c0XkUUfBYqkScFHA1/h8gfnwF94bfI/jFzQh?= =?us-ascii?Q?nEJPJY44yE64MJaL7r01U4lcvvjZT5d71q0u3D+G9f72HiJMGdgUoFXihn8l?= =?us-ascii?Q?AhqPAdJV808aSecFDsHMLDMvv8VQBsdtDHwpVY7nRTOQi3q8tACt9CV2fbdV?= =?us-ascii?Q?IIXZU38b4sj62Zj2rJyFirlsF2nTuOlfyhiWzi6rNMR7zkKhQL4NcmsEpid9?= =?us-ascii?Q?WUbnF4Jv/dLQiLUP3bux53yne9UxWCGCFaXxVrPb0Z86/mkA9IypTXQZveP4?= =?us-ascii?Q?IAJre+09HMqA1uF5fiKmKVS+8+dBgsvv5+lZBHfMGxqtagJQjIPwgT0ONs1b?= =?us-ascii?Q?WTmvUYDMGuYEFLGYBFvE19JslUJLRwbJwch2Bf7NjMtozTnEAiiJRg9m6MI9?= =?us-ascii?Q?bQ7FHr6MTzu/D/XWzJ9AeaONOLy+LT9PtdU5i9Re6HS/LWnaGK1GbAKzjQIE?= =?us-ascii?Q?7/0iKcNiqigyBZQ8rr3lNl+7cQOM+KtoPJo3JDQAf7SM1+iaRs/RC/VsWnLh?= =?us-ascii?Q?EgRPpyrleovmLb0HZgRaKhIXZWKG7eGJDwepX18CxySFFVWpS8r/nIvmuvlh?= =?us-ascii?Q?T4i36zC1RDWp6g+enLQV8ntsoW9nMs3t5oZtPPdps4Gv6KkJbPJpPxkdk+Lv?= =?us-ascii?Q?ExowkYxxeUnbHTgP8rwP9knS0B5j53IXZaGlYCQfu1qqgIGYO1hMV7aRo92H?= =?us-ascii?Q?AmYznmK+PYfzPuTl5eXdJ1Dy2BD1qF+kJACixfsCaG4NEAVuj+2RLuBvEJJW?= =?us-ascii?Q?E0orfuc1baAigLT78p6bJo2qIOqb8tWR/pTDIb2S0zFEbR3DTOSwg0ODxonk?= =?us-ascii?Q?OUiM0RBReDfEeyDuxCqmQ4tsoKoTICa6bFqhwaps09B173VqTb7vwP3ys4fK?= =?us-ascii?Q?ryMvWVbgodImMvHkYP0Z9BGmrsAfC7W6DQgbcO9AeMQZPDj9J2LUaLCN8OPu?= =?us-ascii?Q?tUvIg/8leCzpkOHNi7kD/iY+ZxWE7KsKo4WOiIY/ngo1NgUsb4h/5+X0Qk//?= =?us-ascii?Q?c3acn/49IBSMWlq5Lmk6zVs0jWqUxB9FIvKNUN4WkGUkDmKwSffVpietSh/I?= =?us-ascii?Q?BQjNBCy1LQioNopoQ5EnoQZkNSAFL0sEHsq9ex+P7hl+DTrPYmBG8LYeAur6?= =?us-ascii?Q?LaJInAOCjzg4jTvklSLQMmX18HAUDhEWLMUwvUpA4cu8bSmHdf4CBQ/QhXdB?= =?us-ascii?Q?dCE4q+88GmOmMFjgqNRtLlwbDi4GXO/U5fdMiAaV9fR84r4m45WCC/7e/kLR?= =?us-ascii?Q?6TbatBXOLDp1aHCmcJBk/fZ9tIckJXhhvdxwiQON1IhNyI4rL5MsS9uHDF9x?= =?us-ascii?Q?A9/D072vrVNNPoteT3Y9ufbv6BDD6cLhZv01awkUb0lOsOyiA0ug4tap253Y?= =?us-ascii?Q?WtzbuezXjxLY+0dITHW0KDSn/h1cZOwUUSShH7xqrlEG0qijcu68Rz4OdW7G?= =?us-ascii?Q?cMqm5Z/u1W2slvp9o/ESJw7JmmbLsccY8Z/BQm8pZguqR3yawkoCo9IS0A2Y?= =?us-ascii?Q?hm7R+PaBGG/ajE4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7779.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(1800799024)(52116014)(376014)(7416014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?128FOB/+uXy7hAJ1d0qLkT/HGPcPCNUkjSie0Ps90+t362PbodyLQ38iPDTc?= =?us-ascii?Q?W1D7d8zL/H1wh7OH358+X0DwAmSO1vAspvxt7oN7D3s4mDgVrut14QsKszmy?= =?us-ascii?Q?s1V9FMp6FkKWx5uuYxfcIlDiHfw9lFPvkIXFIcQ4FqYsN+gO3tna7FiukqLG?= =?us-ascii?Q?vv0TTDWSvPkWjDxKnRprcxnJ1HXeA8F363YRiRNm8ODW7oI0WBKt/SHxsERO?= =?us-ascii?Q?I/bE+cjgaThqeczc9y97WgaB48No/unJNkyZqf9i7h728n2NcIr5+eGqw06O?= =?us-ascii?Q?J27UC9nDGzaTDVF3fMN8UVBzYxLYM3AXa6Nf+nk7dJNjDejE5pbnjlCVq6p4?= =?us-ascii?Q?Ub0E7Xcwt/zlTnI7fBzVHCgfk28PJTMnl6ZjY25nilgerTcAuEFbumdSdMvN?= =?us-ascii?Q?kkrlH/wOR3e2q1ceSyUW6ghIbzlLu8dMv6vo//b4q7wVhuBtWKOqSGbq/11w?= =?us-ascii?Q?l0MBG6eWyqCjsQXhsiWs/RKaYzWKkby8ny45VUlyoMCdYvLdWh2ZEJ7GU9sl?= =?us-ascii?Q?FHRIZBpk8rRWsmA9bCBEf3lwNhGEgQZ1k8Er7J6MfKrL9tDgeDysfpNnUmpW?= =?us-ascii?Q?J27svotCJTqXIIWvyNLhu/7HVzwOQp1+Qs5BJKKOdK2ySR0xHF93vRLF5b1S?= =?us-ascii?Q?U6nbuMBwg4QuXPyWEMHIZiCWUqQsY8S19+2anrWYp8laUvg8o0yekSOhmTkH?= =?us-ascii?Q?PwpYp/iOrKLIUljqiJKl5gHrH7eyJRN7YKCcC4RN7vxdbih/9rMXHvrxnp0v?= =?us-ascii?Q?ozisKmVYafE+rWVyJ8iN2ozLVjatKmdU1PekR0FF1ikNQlTeRWDUFe4wbqwR?= =?us-ascii?Q?TLmw7w99s/RiLxg2EvEwNCaJvNxaiEzk2l+2hV9lg5r/Ps29U72kFtfVblzM?= =?us-ascii?Q?qyeYkbnGqiO/tAS+PlCn05JGVlVHFr8v55qHOLXof4M8ugGqu+RHz0bbueNv?= =?us-ascii?Q?bdDdrytYpUbAd34TbJKiY85avRzQIcaiRPrkeu0Qbpkg/xeiFtCDimqaCtWC?= =?us-ascii?Q?sAx/6LPXRo0hkXE7mKyuuJzwccr8RLj7qRdnJdxF5x4FT8+LYutt2GYoOg90?= =?us-ascii?Q?QPcQ9Y2apLMud3qt8UA6aO91NLZaq2eSnImpbj+jpTnWEvvWmzPfvuXBNMFG?= =?us-ascii?Q?CqfDeSGCfjkJpNmhjFJYiHIlXL2dUR9BRgrbtV4PsA+JLoqzrPT44uxJeY6q?= =?us-ascii?Q?RthizdK8kORYV1qGvikP5NXLyrntnGeRnwQkxiPuoKe4EEJw5Pe3A/XumVgx?= =?us-ascii?Q?QwiK9WxCFlKxUroC0E/HpaEygI5v0lme8IYZKQz8T9oFUtbxlwzvERruvdHW?= =?us-ascii?Q?w7BQZCgQ/zL5l9klcEPh+BCPDaD4OnpLSa0SnlXXx88PKELqshT7acqf/Bg7?= =?us-ascii?Q?C/m9p8Z6KD3ID7yGH6ygy+LlMM8HHn9JbNwdK7uL3xKoXexFAeDRqWHyemtq?= =?us-ascii?Q?blCbw+Id+OwoJLASZRV73ynAc2ewhxvC+pfbhPpfvyTrdZMeG2YqkdHJUd0w?= =?us-ascii?Q?7NALAzXHTPPBtlEhdXCBbLShB8JOOcFpfRSk8ai1YtDlIhN5sm6YDCgXn3+U?= =?us-ascii?Q?9f0EW75HtAtL1Rw/XP57pYbIfWyJDQBZKkkRccAo?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f6f25b4-183d-4472-4917-08ddeaeae8d8 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7779.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 13:08:00.9364 (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: hNEa5pa/1WEjvHGz38I409t1s2r5jOTaBAM8CESpZKYYcRcgAJq+jPLPnbpMztYsIdTSjj082HZee2W1wpfFHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10420 Content-Type: text/plain; charset="utf-8" Some PHY features cannot be queried through MDIO registers and require alternative driver detection methods. One such feature is 10G-QXGMII (4 ports of up to 2.5G multiplexed over a single SerDes lane), or "MUSX" as it is called by Aquantia/Marvell. The firmware has provisioning to modify some registers which seem inaccessible for read or write over MDIO, which configure an internal mux for MUSX. To the host, over MDIO, the system interface appears indistinguishable from single-port-per-lane USXGMII. Marvell FAE Ziang You recommended a detection method for this feature based on a tuple which should hopefully identify the firmware build uniquely. Most of the tuple items are already printed by aqr107_chip_info(), and an extra set is the misc ID (reg 1.c41d) and the misc version (reg 1.c41e). These are auto-generated by the Marvell firmware tool for formal builds, and should be unique (not my claim). In addition, at least for the builds provided to NXP and redistributed here: https://github.com/nxp-qoriq/qoriq-firmware-aquantia/tree/master these registers are part of the name, for example in AQR-G3_v4.3.C-AQR_NXP_SPF-30841_MUSX_ID40019_VER1198.cld, reg 1.c41d will contain 40019 and reg 1.c41e will contain 1198. Note that according to commit 43429a0353af ("net: phy: aquantia: report PHY details like firmware version"), the "chip may be functional even w/o firmware image." In that case, we can't construct a fingerprint and it will remain zero. That shouldn't imact the use case though. Dereferencing phydev->priv should be ok in all cases: all aqr_gen1_config_init() callers have also previously called aqr107_probe(). Signed-off-by: Vladimir Oltean --- drivers/net/phy/aquantia/aquantia.h | 20 +++++++++++ drivers/net/phy/aquantia/aquantia_main.c | 42 ++++++++++++++++++++---- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/drivers/net/phy/aquantia/aquantia.h b/drivers/net/phy/aquantia= /aquantia.h index 3fc7044bcdc7..2911965f0868 100644 --- a/drivers/net/phy/aquantia/aquantia.h +++ b/drivers/net/phy/aquantia/aquantia.h @@ -153,6 +153,24 @@ =20 #define AQR_MAX_LEDS 3 =20 +/* Custom driver definitions for constructing a single variable out of + * aggregate firmware build information. These do not represent hardware + * fields. + */ +#define AQR_FW_FINGERPRINT_MAJOR GENMASK_ULL(63, 56) +#define AQR_FW_FINGERPRINT_MINOR GENMASK_ULL(55, 48) +#define AQR_FW_FINGERPRINT_BUILD_ID GENMASK_ULL(47, 40) +#define AQR_FW_FINGERPRINT_PROV_ID GENMASK_ULL(39, 32) +#define AQR_FW_FINGERPRINT_MISC_ID GENMASK_ULL(31, 16) +#define AQR_FW_FINGERPRINT_MISC_VER GENMASK_ULL(15, 0) +#define AQR_FW_FINGERPRINT(major, minor, build_id, prov_id, misc_id, misc_= ver) \ + (FIELD_PREP(AQR_FW_FINGERPRINT_MAJOR, major) | \ + FIELD_PREP(AQR_FW_FINGERPRINT_MINOR, minor) | \ + FIELD_PREP(AQR_FW_FINGERPRINT_BUILD_ID, build_id) | \ + FIELD_PREP(AQR_FW_FINGERPRINT_PROV_ID, prov_id) | \ + FIELD_PREP(AQR_FW_FINGERPRINT_MISC_ID, misc_id) | \ + FIELD_PREP(AQR_FW_FINGERPRINT_MISC_VER, misc_ver)) + struct aqr107_hw_stat { const char *name; int reg; @@ -203,6 +221,7 @@ struct aqr_global_syscfg { =20 struct aqr107_priv { u64 sgmii_stats[AQR107_SGMII_STAT_SZ]; + u64 fingerprint; unsigned long leds_active_low; unsigned long leds_active_high; bool wait_on_global_cfg; @@ -216,6 +235,7 @@ static inline int aqr_hwmon_probe(struct phy_device *ph= ydev) { return 0; } #endif =20 int aqr_firmware_load(struct phy_device *phydev); +int aqr_firmware_read_fingerprint(struct phy_device *phydev); =20 int aqr_phy_led_blink_set(struct phy_device *phydev, u8 index, unsigned long *delay_on, diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aqu= antia/aquantia_main.c index a9bd35b3be4b..5fbf392a84b2 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -88,6 +88,9 @@ #define MDIO_AN_TX_VEND_INT_MASK2 0xd401 #define MDIO_AN_TX_VEND_INT_MASK2_LINK BIT(0) =20 +#define PMAPMD_FW_MISC_ID 0xc41d +#define PMAPMD_FW_MISC_VER 0xc41e + #define PMAPMD_RSVD_VEND_PROV 0xe400 #define PMAPMD_RSVD_VEND_PROV_MDI_CONF GENMASK(1, 0) #define PMAPMD_RSVD_VEND_PROV_MDI_REVERSE BIT(0) @@ -677,27 +680,46 @@ int aqr_wait_reset_complete(struct phy_device *phydev) return ret; } =20 -static void aqr107_chip_info(struct phy_device *phydev) +static int aqr_build_fingerprint(struct phy_device *phydev) { u8 fw_major, fw_minor, build_id, prov_id; + struct aqr107_priv *priv =3D phydev->priv; + u16 misc_id, misc_ver; int val; =20 val =3D phy_read_mmd(phydev, MDIO_MMD_VEND1, VEND1_GLOBAL_FW_ID); if (val < 0) - return; + return val; =20 fw_major =3D FIELD_GET(VEND1_GLOBAL_FW_ID_MAJOR, val); fw_minor =3D FIELD_GET(VEND1_GLOBAL_FW_ID_MINOR, val); =20 val =3D phy_read_mmd(phydev, MDIO_MMD_VEND1, VEND1_GLOBAL_RSVD_STAT1); if (val < 0) - return; + return val; =20 build_id =3D FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_FW_BUILD_ID, val); prov_id =3D FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_PROV_ID, val); =20 - phydev_dbg(phydev, "FW %u.%u, Build %u, Provisioning %u\n", - fw_major, fw_minor, build_id, prov_id); + val =3D phy_read_mmd(phydev, MDIO_MMD_PMAPMD, PMAPMD_FW_MISC_ID); + if (val < 0) + return val; + + misc_id =3D val; + + val =3D phy_read_mmd(phydev, MDIO_MMD_PMAPMD, PMAPMD_FW_MISC_VER); + if (val < 0) + return val; + + misc_ver =3D val; + + priv->fingerprint =3D AQR_FW_FINGERPRINT(fw_major, fw_minor, build_id, + prov_id, misc_id, misc_ver); + + phydev_dbg(phydev, "FW %u.%u, Build %u, Provisioning %u, Misc ID %u, Vers= ion %u\n", + fw_major, fw_minor, build_id, prov_id, misc_id, misc_ver); + + return 0; } =20 static int aqr107_config_mdi(struct phy_device *phydev) @@ -745,8 +767,14 @@ static int aqr_gen1_config_init(struct phy_device *phy= dev) "Your devicetree is out of date, please update it. The AQR107 family= doesn't support XGMII, maybe you mean USXGMII.\n"); =20 ret =3D aqr_wait_reset_complete(phydev); - if (!ret) - aqr107_chip_info(phydev); + if (!ret) { + /* The PHY might work without a firmware image, so only build a + * fingerprint if the firmware was initialized. + */ + ret =3D aqr_build_fingerprint(phydev); + if (ret) + return ret; + } =20 ret =3D aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT); if (ret) --=20 2.34.1 From nobody Fri Oct 3 07:43:38 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011019.outbound.protection.outlook.com [52.101.65.19]) (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 5A496302CDA; Wed, 3 Sep 2025 13:08:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904890; cv=fail; b=PjXvdZJp9ULIbso3MPA6vWUpnBNbWgCz7RIwD4RYgfcYgajhYgg1pxdvJavlzYKQWmwC+kwembvksrdYCCmzToV18pz6x1rEnJ3TTXX2PcL9KnlNz63qaALGMHKcP3JhH6/nWKFx6BsaiIFCST9puZMBSfbZdk4KT1MuIE+UMvA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756904890; c=relaxed/simple; bh=wYYD7dZs6cWfWFnzMiEZG0ZbZy+ZNcVuFT/lY5eDyjg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=eUSgwRse99Os2ODbo+vTJ2r+6UBSgwCV3CAg69vgMCuINfpeN6rqeSQYqYScN1MA/qYNwCuJbLuBaF9k6ouJOTwsMNWDUkAxsWxnpjMP78XUV3i5AyJlbhUQWC3vkGus0Sp4ewzST6JO/X5eNE6AbA96gtwP5QOIDixgP3rAsaA= 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=lBR8ji4x; arc=fail smtp.client-ip=52.101.65.19 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="lBR8ji4x" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X5dFe2ZZipRlHBHqIPaQvHKizUi8XbYEKssULJ/UjM7WaNcGckOWfUiZYFG3lTJW2u7dEstxDiT3TE8GyQQ4WOuB+lYt+yTyaTcb0H9f3pQ/bIvh2abaJlbxH8+FXrXcDHaQ7AU2TC5iGWAWR/CnJlaX/PN93gpvCkt2s5JwFGpsFYDeaYCo4dcz4sdEtQPFYL0N8yEsWFrtAP5E51V+0y7o/PCVOtVHgmvA0tvEaI64+iA0JdZQkv5ToFmLpLAJSCurZKcv2JvHuzuGQYgeOWIOf7qZJvAgrtkXF8Sac8+rO89iEXZWLM9RS7F5ZHr5jAPVcwqOOHGg/MFuhxr8lg== 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=sRxR2sTpD8jSOCewme9oT5sImhXHVE9GxU/g2KKbdec=; b=jDSPQVjomZgCm6Msf8euc/HuR1Lf0+LmyVVUFeq4VmhgIm9O3MIS4Jh6VLFOjaxjBvZfnfyRhMH3dKET+2Wk2f8Ypcwv1Z/JwyZDb7j37ENbWGwIecRfoFlNBvQCjrWooufRdxKvKeLYnrcBFH+b5yB7p3Tg/57b679DTFFtLx3NCIY9am1cmDH8YRO5g7lalTupmK0TYxpiu3XRVtt2hqwCNIpymiYmwg02em8WyWkvnIC6KXV40fIkS+xB+PvlRq46y0ns7dKCes8UGTzrSX6evIsHIXpDdF2UecQwYPDooZ33qbdbPL0K3r3AYimC4RnpRvBhhkRKnB4SA/cEoQ== 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=sRxR2sTpD8jSOCewme9oT5sImhXHVE9GxU/g2KKbdec=; b=lBR8ji4x4tv/cR1qtvQ56L4dROMJ1SjsuE6G8Ije1sACN6B+7p9florqVGOwdRsgNtD6GN26FcekhsbWOaecqYF5nQuu475tZa+wxnY4s6G5yXYkfQmbRhNE188ZxlkZib+V6mQV8UDF720X7SLLKhz4LROjzGp9fMZeCmoCs6FRmg+BT6C7tKYRT+Z8A2743xbcJUi7hR48dP3t4DrDgLKuDsrkQv3N5NQh/dV1yd9y4EIau7RfPraUN/cD8c9gcO1ARbvHSXjoXWRxXZ/a2OPNwvdGMWaDIBoH7a9TySHvvimtz0dBH6lxWcm7bL17Juf/i5H4NwtOVsz8oPrD2Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) by PR3PR04MB7420.eurprd04.prod.outlook.com (2603:10a6:102:93::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.16; Wed, 3 Sep 2025 13:08:05 +0000 Received: from AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2]) by AM8PR04MB7779.eurprd04.prod.outlook.com ([fe80::7417:d17f:8d97:44d2%7]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 13:08:05 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org Cc: Claudiu Manoil , Alexandre Belloni , UNGLinuxDriver@microchip.com, Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ioana Ciornei , Heiner Kallweit , Russell King , Daniel Golle , Luo Jie , linux-kernel@vger.kernel.org Subject: [PATCH net-next 6/6] net: phy: aquantia: support phy-mode = "10g-qxgmii" on NXP SPF-30841 (AQR412C) Date: Wed, 3 Sep 2025 16:07:30 +0300 Message-Id: <20250903130730.2836022-7-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903130730.2836022-1-vladimir.oltean@nxp.com> References: <20250903130730.2836022-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0245.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f5::9) To AM8PR04MB7779.eurprd04.prod.outlook.com (2603:10a6:20b:24b::14) 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: AM8PR04MB7779:EE_|PR3PR04MB7420:EE_ X-MS-Office365-Filtering-Correlation-Id: 34647a51-3732-4eec-9353-08ddeaeae9c4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|52116014|376014|366016|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1rUzHGBzG5e5mATo26GBJUBnOmF+vBzba9HudpmyYNuBiMBx8NFfuRhYylpt?= =?us-ascii?Q?VtBUNyRakuaioKZyB+bpUpLppWfTduoXUAc2tXO7xsgR+7DWgn/oT1xs6v8b?= =?us-ascii?Q?gU0OE/L91dXwzNQmwtOeb/Y+Fxl5J/Q9RB84xCuqLdC1ROr1bDA2beZNhzsK?= =?us-ascii?Q?5yngIVwPgEOcRhdZsd8Mhy1wf8cuMQ+YBSPhR98vqQPbfNaMVa6RWlonOSgu?= =?us-ascii?Q?otJSPd5Dzzrho//cIZiRJuxRZf9vdC/0O6prqn7HYt7h6W6okJu6KlT2hQvn?= =?us-ascii?Q?fb2H+iKVkXCbM9++dB7mETY+kDBFKFG27ps0GcDfZ3suMh4xnOyrIb+bLZLf?= =?us-ascii?Q?aeG0PNTRynIM6QGW2PlCM4T+ySM6jW8zuHjrXU72eTAknv6y1swOKUKnXJAt?= =?us-ascii?Q?MXdli85cqM4DnTxhLjaNnPhk1ej/arj37vusyt+J1MT7GqAYGjpdt3rfSRLl?= =?us-ascii?Q?xIyUgBbO3pN/KS+mu5HmkNOCuaU8ioNt4UWhosnEEsXVeVB9qole3jxJVJvc?= =?us-ascii?Q?4y16MLFa3bNLQtQIZXCplDE6oGX+5rspWSxbimTP1jhEe2+FARm3NbRvSCM5?= =?us-ascii?Q?bAdeV7+zcVaAE5Qxa3k0VlqAVWgtiJWTia7qjj1EC2n39rJHEORgwO+4YR1v?= =?us-ascii?Q?Kh57HLIOMJUK6zZwdkgdbtBc7P/YB80YFyaaDuhHp23MZOd3ZQBxrTgJFYCH?= =?us-ascii?Q?1Xv1ri+uoKbWR2yg7yPDDt3+WZbpbNttnJrcTr6T6POC1ksle2XEtjKYfgDR?= =?us-ascii?Q?BcO6D7eDWmuPvb+lWP3RZhWn/vRwYddX8dGtUOCTUm2gBAt53jkDgy8IJYzj?= =?us-ascii?Q?ABEUPl5QhdZv3zsRpvYW5s0Q+nzH2AVLQMVctrfHe2qmYg8Ol28kcPWulUUG?= =?us-ascii?Q?G/nq+rRDG5Azfe1mRjOP6MD9KeJSm3e7mfzLAwo9R2IlbHtaqyHf4sSsORXR?= =?us-ascii?Q?E190DQwV7tmjn47El1Swx/AycfRQiwHRyk7PsfVDqmpInQcqao8GqzyPyAbE?= =?us-ascii?Q?+TnDrVnjWJWziX38LmlFya3jeyors6OfPyUsGXkic/FfM+hPRcgBdqTlwnH4?= =?us-ascii?Q?E5zhOKQ/ZEErIqhBn3+/v9rPCehQsMLccJpveQWR1LBKj6WwWfe4Ao/c+yqq?= =?us-ascii?Q?3c91XUOqKug6mJCqAzTsk6QDEEulZJiPIDyqzxKCpHIRkhlT8FJYafLaMgwb?= =?us-ascii?Q?VUIPq9fmFwk7SR8m3hUGFeRMG9p2d1tLl9MHQ4rJS/5DnfRG2qhl4EFmTZuu?= =?us-ascii?Q?m1xCksAVYmLXEUvOxJZZFWiBts2Hl2F9eJYDQmODn4QMb42uTjMMRmwX9CCT?= =?us-ascii?Q?N0d4EjumKw4lsc0wTVV9kj9dtn3NugkrxQ5tH4OjtP2g8ox88W6dt1Z/m2nO?= =?us-ascii?Q?RaxJXVi1XogLiuMF3qFFcwooDeqeynGgt0VJFO1ftRDUgYQjDhR2ZtotJKDN?= =?us-ascii?Q?bnYtUCUIbx8FfhyZQ7OifXWJZR7TZyskxRafWK3BzAtvWr7NmvQ1wG+h7BlC?= =?us-ascii?Q?XMyKmoIPXhkVzp8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7779.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(52116014)(376014)(366016)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r+gofYVM7DxZIYOoSfSzQPCow1H4kLRgpug8MncOX4B9TbTUNZOJHS+cflJ8?= =?us-ascii?Q?Ithz8H/MAFyao5fiwXAwGNT9BveL1narN9+vEUM0kaEKzKaPRHsQJ25lB8G3?= =?us-ascii?Q?92FTN36EvAzOjG1xDmIpWleJxsMza4GhgwGbkwnIrJ7ir9E7KWwzFwsp5LqS?= =?us-ascii?Q?t08srKwac4phXuNc94dv5y+sMfJqGU10ePHRJDaGwQSomer0eGO2hMimdw+R?= =?us-ascii?Q?QY1yaUiGgmGJCa1GeGTk5BGBmICdVpT9K32AU6KnpCRpaVJuzdDmclZQGkY2?= =?us-ascii?Q?JtBQgpld/3kFiS+LSDoGtnhbDwZt1xgZmaBBHs69xP4MBK7iyQ6RqdyUgcOh?= =?us-ascii?Q?Dep52WVHe5Yh+ScJn7RiV71EU8ZFaa9PkZwzXYEPr0Vp8Od3l6uSGkMzl4Mc?= =?us-ascii?Q?akmu2pNKLgsro68ivzgIxyl2RbPmRQNS9Ykd6L2lLPY+5hODykgVkv4NKWKf?= =?us-ascii?Q?qcZETT3VCaR3wsoant5ILTArFnqddZUvzJMv9HDEQcKwcLLfAsow/7E18vwu?= =?us-ascii?Q?j+/gX4chWf+uqNoMos1FOUSkGRNqxViho72DYnafDypcaQLoQwMfoLfwVERW?= =?us-ascii?Q?QH4C1OpEFfGmbVZ2oHiOLXK+zUTtvSeeXi17a1u+Yl4rp1C17DXt/S89cyxS?= =?us-ascii?Q?W8AF+8Ne6dDC6m5VnL14JPxQlsZ/j2xyTygHzOoI7FwxgKyFRakUVK1360GC?= =?us-ascii?Q?aHKN2FMDaG2AfKB4cDaUIkvMxXzhowUhSLI6isZ5btbSDIzSZYtUci9ir1cK?= =?us-ascii?Q?3tpv/c6+KNvKaF/PJTUVTftKexHXD4DEZmxMt6++swZD564UYTYBlrTDL2Eq?= =?us-ascii?Q?imcgPTsYK64WokBdZHKwU/risNuqitmiwbFR3uk3UqbeuMZwLYWjYQtuFCef?= =?us-ascii?Q?CgLlRGRvauIQOLdYzG3S6iBnj99Z2CLy6ZVW2vgeGnlTgsVMQiBMTGKcqAk+?= =?us-ascii?Q?13OXnnnKitq2bsBM8SqbvH7o3WkR70C5l+CcEhRmSq3syuxjZhj/yzNIsKiV?= =?us-ascii?Q?Yc6YkgA0ZHJHJ5ghzEGUNmsayb4hzkH5zDPXNTV6iAdU5To48iQjJUeTvu6H?= =?us-ascii?Q?aQtJlY9J3vVSMUhylu2FoncGnqOo9IrQPLs/fbuwJi+VriDRUugQOA8Ft9k2?= =?us-ascii?Q?Hn2YFew4LWy4PxwJNa9KpUcHnFVl1Jtmw+2xsIEUW9SM2h86gTUuiNnKkjwn?= =?us-ascii?Q?2crVnn8ePalfBeq1MmUX+1VTsbboNf0PimZ/BnEyPNHGTy8Zur49Mn5VVWCE?= =?us-ascii?Q?XTGFVl1X0PMzmtU1rB5T9ZLilBbe/a7dXms4rUa+39MsNpslSUhVM7bIJjHb?= =?us-ascii?Q?pZjm+q7tn2KdTCBi7ZDVMwl9ae9cJpdtGZme+NkKdGHpvRZT5Yvk4Flh7K7/?= =?us-ascii?Q?Y7duMkfOLPBCRI5X+5DVdA2bk9qevihUs5RFZYg87uM0pswcR1JX0IABvuUs?= =?us-ascii?Q?/tidx2Ww+/WZ/+s6dn66McvC7ULyRVOjkeiLYka0EYfp+kRzz0BH1AIpPmW2?= =?us-ascii?Q?EMIz6GXXDjDjnYLyrRh0Nk0CJCgULVmD/AcxmUJtUAE//o6CtJgt8EWu4TIK?= =?us-ascii?Q?BXKv+EtuYfL4deBLGLl6OAWBQi+E1IfXv+iDO4Hn?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34647a51-3732-4eec-9353-08ddeaeae9c4 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7779.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 13:08:02.4034 (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: EGMDV0PPHDN5feP4/vkE+PB3ikSSH5vh+qqaVBf3J1+t3Z6VdOVmL6Ea0jAJOG45Jo1X/4C/9sBTlIJWQOFIpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7420 Content-Type: text/plain; charset="utf-8" The quad port PHYs (AQR4*) have 4 system interfaces, and some of them, like AQR412C, can be used with a special firmware provisioning which multiplexes all ports over a single host-side SerDes lane. The protocol used over this lane is Cisco 10G-QXGMII feature, or "MUSX", as Aquantia seems to call it. One such example is the AQR412C PHY from the NXP SPF-30841 10G-QXGMII add-in card, which uses this firmware file: https://github.com/nxp-qoriq/qoriq-firmware-aquantia/blob/master/AQR-G3_v4.= 3.C-AQR_NXP_SPF-30841_MUSX_ID40019_VER1198.cld There seems to be no disagreement, including from Marvell FAE, that 10G-QXGMII is reported to the host over MDIO as USXGMII and indistinguishable from it. This includes the registers from the provisioning based on which the firmware configures a single system interface (lane C in the case of SPF-30841) to multiplex all ports - they are also only accessible from the firmware, or over I2C (?!). However, the Linux MAC and especially SerDes drivers may need to know if it is using 1 port per lane (USXGMII) or 4 ports per lane (10G-QXGMII). In the downstream Layerscape SDK we have previously implemented a simpler scheme where for certain PHY interface modes, we trust the device tree and never let the PHY driver overwrite phydev->interface: https://github.com/nxp-qoriq/linux/commit/862694a4961db590c4d8a5590b8479136= 1ca773d but for upstream, a nicer detection method is implemented, where although we can not distinguish USXGMII from 10G-QXGMII per se, we create a whitelist of firmware fingerprints for which USXGMII is translated into 10G-QXGMII. At the time of writing, it is expected that this should only happen for the NXP SPF-30841 card, although extending for more is trivial - just uncomment the phydev_dbg() in aqr_build_fingerprint(). An advantage of this method is that it doesn't strictly require updates to arch/arm64/boot/dts/freescale/fsl-ls1028a-qds-13bb.dtso, since the PHY driver will transition from "usxgmii" to "10g-qxgmii". All aqr_translate_interface() callers have also previously called aqr107_probe(), so dereferencing phydev->priv is safe. Signed-off-by: Vladimir Oltean --- drivers/net/phy/aquantia/aquantia.h | 4 ++ drivers/net/phy/aquantia/aquantia_main.c | 52 ++++++++++++++++++------ 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/drivers/net/phy/aquantia/aquantia.h b/drivers/net/phy/aquantia= /aquantia.h index 2911965f0868..a70c1b241827 100644 --- a/drivers/net/phy/aquantia/aquantia.h +++ b/drivers/net/phy/aquantia/aquantia.h @@ -171,6 +171,10 @@ FIELD_PREP(AQR_FW_FINGERPRINT_MISC_ID, misc_id) | \ FIELD_PREP(AQR_FW_FINGERPRINT_MISC_VER, misc_ver)) =20 +/* 10G-QXGMII firmware for NXP SPF-30841 riser board (AQR412C) */ +#define AQR_G3_V4_3_C_AQR_NXP_SPF_30841_MUSX_ID40019_VER1198 \ + AQR_FW_FINGERPRINT(4, 3, 0xc, 1, 40019, 1198) + struct aqr107_hw_stat { const char *name; int reg; diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aqu= antia/aquantia_main.c index 5fbf392a84b2..41f3676c7f1e 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -512,8 +512,31 @@ static int aqr_gen1_read_rate(struct phy_device *phyde= v) return 0; } =20 +/* Quad port PHYs like AQR412(C) have 4 system interfaces, but they can al= so be + * used with a single system interface over which all 4 ports are multiple= xed + * (10G-QXGMII). To the MDIO registers, this mode is indistinguishable from + * USXGMII (which implies a single 10G port). + * + * To not rely solely on the device tree, we allow the regular system inte= rface + * detection to work as usual, but we replace USXGMII with 10G-QXGMII base= d on + * the specific fingerprint of firmware images that are known to be for MU= SX. + */ +static phy_interface_t aqr_translate_interface(struct phy_device *phydev, + phy_interface_t interface) +{ + struct aqr107_priv *priv =3D phydev->priv; + + if (phy_id_compare(phydev->drv->phy_id, PHY_ID_AQR412C, phydev->drv->phy_= id_mask) && + priv->fingerprint =3D=3D AQR_G3_V4_3_C_AQR_NXP_SPF_30841_MUSX_ID40019= _VER1198 && + interface =3D=3D PHY_INTERFACE_MODE_USXGMII) + return PHY_INTERFACE_MODE_10G_QXGMII; + + return interface; +} + static int aqr_gen1_read_status(struct phy_device *phydev) { + phy_interface_t interface; int ret; int val; =20 @@ -539,36 +562,38 @@ static int aqr_gen1_read_status(struct phy_device *ph= ydev) =20 switch (FIELD_GET(MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK, val)) { case MDIO_PHYXS_VEND_IF_STATUS_TYPE_KR: - phydev->interface =3D PHY_INTERFACE_MODE_10GKR; + interface =3D PHY_INTERFACE_MODE_10GKR; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_KX: - phydev->interface =3D PHY_INTERFACE_MODE_1000BASEKX; + interface =3D PHY_INTERFACE_MODE_1000BASEKX; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_XFI: - phydev->interface =3D PHY_INTERFACE_MODE_10GBASER; + interface =3D PHY_INTERFACE_MODE_10GBASER; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_USXGMII: - phydev->interface =3D PHY_INTERFACE_MODE_USXGMII; + interface =3D PHY_INTERFACE_MODE_USXGMII; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_XAUI: - phydev->interface =3D PHY_INTERFACE_MODE_XAUI; + interface =3D PHY_INTERFACE_MODE_XAUI; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_SGMII: - phydev->interface =3D PHY_INTERFACE_MODE_SGMII; + interface =3D PHY_INTERFACE_MODE_SGMII; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_RXAUI: - phydev->interface =3D PHY_INTERFACE_MODE_RXAUI; + interface =3D PHY_INTERFACE_MODE_RXAUI; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_OCSGMII: - phydev->interface =3D PHY_INTERFACE_MODE_2500BASEX; + interface =3D PHY_INTERFACE_MODE_2500BASEX; break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_OFF: default: phydev->link =3D false; - phydev->interface =3D PHY_INTERFACE_MODE_NA; + interface =3D PHY_INTERFACE_MODE_NA; break; } =20 + phydev->interface =3D aqr_translate_interface(phydev, interface); + /* Read rate from vendor register */ return aqr_gen1_read_rate(phydev); } @@ -757,6 +782,7 @@ static int aqr_gen1_config_init(struct phy_device *phyd= ev) phydev->interface !=3D PHY_INTERFACE_MODE_2500BASEX && phydev->interface !=3D PHY_INTERFACE_MODE_XGMII && phydev->interface !=3D PHY_INTERFACE_MODE_USXGMII && + phydev->interface !=3D PHY_INTERFACE_MODE_10G_QXGMII && phydev->interface !=3D PHY_INTERFACE_MODE_10GKR && phydev->interface !=3D PHY_INTERFACE_MODE_10GBASER && phydev->interface !=3D PHY_INTERFACE_MODE_XAUI && @@ -851,7 +877,7 @@ static int aqr_gen2_read_global_syscfg(struct phy_devic= e *phydev) break; } =20 - syscfg->interface =3D interface; + syscfg->interface =3D aqr_translate_interface(phydev, interface); =20 switch (rate_adapt) { case VEND1_GLOBAL_CFG_RATE_ADAPT_NONE: @@ -1091,7 +1117,8 @@ static unsigned int aqr_gen2_inband_caps(struct phy_d= evice *phydev, phy_interface_t interface) { if (interface =3D=3D PHY_INTERFACE_MODE_SGMII || - interface =3D=3D PHY_INTERFACE_MODE_USXGMII) + interface =3D=3D PHY_INTERFACE_MODE_USXGMII || + interface =3D=3D PHY_INTERFACE_MODE_10G_QXGMII) return LINK_INBAND_ENABLE | LINK_INBAND_DISABLE; =20 return 0; @@ -1101,7 +1128,8 @@ static int aqr_gen2_config_inband(struct phy_device *= phydev, unsigned int modes) { struct aqr107_priv *priv =3D phydev->priv; =20 - if (phydev->interface =3D=3D PHY_INTERFACE_MODE_USXGMII) { + if (phydev->interface =3D=3D PHY_INTERFACE_MODE_USXGMII || + phydev->interface =3D=3D PHY_INTERFACE_MODE_10G_QXGMII) { u16 set =3D 0; =20 if (modes =3D=3D LINK_INBAND_ENABLE) --=20 2.34.1