From nobody Thu Sep 24 13:44:07 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 263EE3DDB1C; Wed, 23 Sep 2026 08:49:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790153393; cv=none; b=sIXE+hDF21MMa+dILx2cIa2gA1O9W4Tap/sB430PJUwrNZ/XuhhWNiBZLvXN/fk/DN5v+CIgbd6dfgFtCzqUcGykO/gem4t60k+Fm1NYz/xwLc6RJen+EimZKd5Il4nDxphhKga8pmjGIxt+VxZTPvU4LtLhEMoZNn5cwg5nX0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790153393; c=relaxed/simple; bh=NtNxLmA6K4ifpOdVd29KbZr+0WIEXnqCTEZoUKcKGs4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bmnpTy2eKaqRlLpos/u0Q7CilVszi7vU/1zvl892QQqwoq3Es93yLj2Ny7GHo5P+A5ga2MYcQqRZ2NOP7TGFJtXdvxRu20V0FxJgzN+BZltep1tWJl/KlX65G3QOUym5Kx5+SCPB/bo2+qhqhgBotXeYp+8tubZUjTn1n9s0NkM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=n5Sg8y4c; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="n5Sg8y4c" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8JxQk3178826; Wed, 23 Sep 2026 08:49:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Y3PPdjveOB8 sMUd/KileNd2kAhFBCiW/gKjzWwwsET0=; b=n5Sg8y4cuXZLDAVEVryCzZccbMN 16bVJnE85v/chWZ+/GwIqwzYbm7VsfXjUKumvhqcxDrnk5QK1Ga5GAZrGS3l8626 irVUIGrFLtYQmhLIZqMpIEp4ZQhsIr3Gmi4WBDON2SXdZO3zmFpI9cW2lKNXDih6 OV4ReAETjp4d6ErsY9xTxiikiR6UrT38LlrO4iLGecLLSXqNFYsQDt2Y91PoRdAH pysjbTytU4b0PWkKJfwMUjBNvIcV2nROxgBqrjSHfqPGK0uBJglKUukYkNf1y2tP oN6E94kuyRoVG8chlEZve7dOqW9Z2nt/VLHnLYbM+Y+lGRE8VzC7Xwgj8Ww== Received: from aptaippmta01.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com [103.229.16.4]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gux863f8h-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 08:49:29 +0000 (GMT) Received: from pps.filterd (aptaippmta01.qualcomm.com [127.0.0.1]) by APTAIPPMTA01.qualcomm.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8nRTX687571; Wed, 23 Sep 2026 08:49:27 GMT Received: from ap-kernel-sh03-lnx.qualcomm.com (smtphost-taiwan.qualcomm.com [10.249.136.33]) by APTAIPPMTA01.qualcomm.com (PPS) with ESMTPS id 68N8nRYM687556 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 08:49:27 +0000 (GMT) Received: from ap-kernel-sh03-lnx.qualcomm.com (localhost [127.0.0.1]) by ap-kernel-sh03-lnx.qualcomm.com (Postfix) with ESMTP id 108DF40C15; Wed, 23 Sep 2026 16:49:26 +0800 (CST) From: Zhangfei Gao To: shengchao.guo@oss.qualcomm.com, bartosz.golaszewski@oss.qualcomm.com, mohd.anwar@oss.qualcomm.com Cc: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, hkallweit1@gmail.com, linux@armlinux.org.uk, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Zhangfei Gao Subject: [PATCH 1/3] net: stmmac: support low-speed USXGMII validation Date: Wed, 23 Sep 2026 16:49:19 +0800 Message-ID: <20260923084921.3942100-2-zhangfei.gao@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260923084921.3942100-1-zhangfei.gao@oss.qualcomm.com> References: <20260923-qcom_xpcs_nord_emac-v1-0-4b1c682af70f@oss.qualcomm.com> <20260923084921.3942100-1-zhangfei.gao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Reinject: loops=2 maxloops=12 X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-GUID: G_eKTwn7ZLLxVxz27SSyVeVvwobJQ4zB X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDAzNSBTYWx0ZWRfXzwIzRbm68iyu Q7EvoC47hLgFrxgNteVXq0MM8gbz/zoyRtdrn5CUlxWssFYHvX+bAnyHSeOw9zAV+dS+MX3ZeuR cDwvBw3UWazLdECJY904vFFp+1kI598= X-Proofpoint-ORIG-GUID: G_eKTwn7ZLLxVxz27SSyVeVvwobJQ4zB X-Authority-Analysis: v=2.4 cv=eIOGH3p1 c=1 sm=1 tr=0 ts=6ab39299 cx=c_pps a=nuhDOHQX5FNHPW3J6Bj6AA==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=qk3Z9dr5LKe28F2BLMUA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDAzNSBTYWx0ZWRfX7Ras9iBMjxkT /G1rJPXbECp6PDjErbbBG2/sK7JVZrLxVr2KI+IbBL6ZUwr81cnN/bxjKTp88s7zsbAmK/ojOMO 0sBB9G8gF+DCInty/uL2xrL1mhdQFT98SxWVFdVyVetyhnoN8jLCX5+d+mUjLBiYrQ9uiaj3gg3 0ntxPCGNdNAFsERvUhBjdrcXey6iFqpeTVsXCStiO7cSW63o5Ui5X/D+0WYWmRlLmYBxlNArGOm +1IpAs7DTwitWnFkEprKVHE+ShU+LUbdCkxZSOiGmSU55MwFgjCJdy7SqWblEwCzdhJleo17Ibw c4WrRd/QIZanSzmyTtraCKgf/JtqEkHKFoyJuk5mjhe2zhOyKovlAnzHSmKqpcVKvl8nkGJvxMI V7Oa6oMb6loUDo9eEksl0sxHCQko/I3KOTLqU757PpcihVFrpMFVnQXb3mfY9G8nLUjhzpaS5En rfAiqKpn5SuxaoMRx6g== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 clxscore=1011 priorityscore=1501 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230035 Content-Type: text/plain; charset="utf-8" USXGMII transports the negotiated copper media rate over a fixed-rate serial link. The PCS and MAC must retain the corresponding 10/100/1000/2500/5000/10000M full-duplex capabilities. Advertise the media-rate link modes from the XPCS and allow the stmmac MAC to validate 10M and 100M USXGMII links. This keeps phylink from rejecting an AQR113C PHY whose advertisement contains base-T modes. The XPCS also consumes the PHY-generated Clause 37 in-band link and speed status, so USXGMII must use in-band signalling. Signed-off-by: Zhangfei Gao --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++ drivers/net/pcs/pcs-xpcs.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index 2dc0cb2916daf..5954048a9f7fc 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1045,6 +1045,8 @@ static unsigned long stmmac_mac_get_caps(struct phyli= nk_config *config, priv->hw->link.caps &=3D ~(MAC_1000HD | MAC_100HD | MAC_10HD); =20 config->mac_capabilities =3D priv->hw->link.caps; + if (interface =3D=3D PHY_INTERFACE_MODE_USXGMII) + config->mac_capabilities |=3D MAC_10FD | MAC_100FD; =20 if (priv->plat->max_speed) phylink_limit_mac_speed(config, priv->plat->max_speed); diff --git a/drivers/net/pcs/pcs-xpcs.c b/drivers/net/pcs/pcs-xpcs.c index 091c9b57388fa..58ca296fc4420 100644 --- a/drivers/net/pcs/pcs-xpcs.c +++ b/drivers/net/pcs/pcs-xpcs.c @@ -23,6 +23,12 @@ static const int xpcs_usxgmii_features[] =3D { ETHTOOL_LINK_MODE_Pause_BIT, ETHTOOL_LINK_MODE_Asym_Pause_BIT, ETHTOOL_LINK_MODE_Autoneg_BIT, + ETHTOOL_LINK_MODE_10baseT_Full_BIT, + ETHTOOL_LINK_MODE_100baseT_Full_BIT, + ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + ETHTOOL_LINK_MODE_2500baseT_Full_BIT, + ETHTOOL_LINK_MODE_5000baseT_Full_BIT, + ETHTOOL_LINK_MODE_10000baseT_Full_BIT, ETHTOOL_LINK_MODE_1000baseKX_Full_BIT, ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT, ETHTOOL_LINK_MODE_10000baseKR_Full_BIT, @@ -737,7 +743,8 @@ static unsigned int xpcs_inband_caps(struct phylink_pcs= *pcs, case DW_10GBASER: case DW_2500BASEX: case DW_AN_C37_USXGMII: - return LINK_INBAND_DISABLE; + /* The PCS consumes the PHY's CL37 in-band link and speed status. */ + return LINK_INBAND_ENABLE; =20 default: return 0; --=20 2.43.0 From nobody Thu Sep 24 13:44:07 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 D6E1940A93E; Wed, 23 Sep 2026 08:49:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790153392; cv=none; b=No6Vp2aeLmIkt+DkwmWZdNygp9bbyu9IMh+4/PHoTBPzFVQW5CpJ+/Mzfijl9NR8pQwN4VO4UsmnMe3CxyHF69ps0EBo6+t0ey0vedV794LHkltK/uZ2my3ELeTXRkNf1wwyHoidGoNNyKFkCect1tIuS11Xk/Y8zJTqL3L6XG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790153392; c=relaxed/simple; bh=NWujPebOfm9VlDuYCV5jz6AGj70/+v/+iOal+oE87Ek=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dxvfv1ta61vOwL3LQcplmXQYfA2cJcYS2Jzp+794ZsGK1hjipbyYPE686AgHgGSqcDCo5xL72MRAEbQpaSlQBqki5DuwkO1y4QjXKFT99sgpqI0Pn0LBFWzA92Ymaq9dEW2f6W7XlTI6HuiP9MXpwtKEpXTjEex6AhAOVjABzyQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=CQf366bi; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="CQf366bi" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8Jag11387435; Wed, 23 Sep 2026 08:49:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=jD9mAlSr3VR LPuSsE82mFzwrZID/Qz8z5Rc5Jaz3hUE=; b=CQf366bilkqjNwhZxvAPH0ozalM 1RuqGMZ5aq51+rxV+/37MTtZ8VZV/h1CQ6wl/FOjcLH70xV3KJB1abOqFHoMfifi c3D0CfF4tVAOEwYfn6x7mSYlmaeNx/zsRjussZEDhfPTC4E8zTrgag/RFn2sXrTI L8NweHRq6/2kwkIANq/Yuz3lBgaaBiHZzCahFsx+wBWmvt4PKqpX64Wk7DDDJcVf qR5Zt1DA0BqJnLbY+MOo+QBDs11Jh+DcRlUiDUWsanC/5sXdq68z/kx3jfm51RiZ tgigCbF0gfKgzcoyyci/62ftoZyC8bOodhhx5xuiejS7HkZKCqGISlBXBaQ== Received: from aptaippmta02.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com [103.229.16.4]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4guyma2y6j-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 08:49:29 +0000 (GMT) Received: from pps.filterd (aptaippmta02.qualcomm.com [127.0.0.1]) by APTAIPPMTA02.qualcomm.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8nRXx677494; Wed, 23 Sep 2026 08:49:27 GMT Received: from ap-kernel-sh03-lnx.qualcomm.com (smtphost-taiwan.qualcomm.com [10.249.136.33]) by APTAIPPMTA02.qualcomm.com (PPS) with ESMTPS id 68N8nRvR677478 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 08:49:27 +0000 (GMT) Received: from ap-kernel-sh03-lnx.qualcomm.com (localhost [127.0.0.1]) by ap-kernel-sh03-lnx.qualcomm.com (Postfix) with ESMTP id 1C58B40C94; Wed, 23 Sep 2026 16:49:26 +0800 (CST) From: Zhangfei Gao To: shengchao.guo@oss.qualcomm.com, bartosz.golaszewski@oss.qualcomm.com, mohd.anwar@oss.qualcomm.com Cc: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, hkallweit1@gmail.com, linux@armlinux.org.uk, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Zhangfei Gao Subject: [PATCH 2/3] net: stmmac: qcom-ethqos: configure USXGMII rates Date: Wed, 23 Sep 2026 16:49:20 +0800 Message-ID: <20260923084921.3942100-3-zhangfei.gao@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260923084921.3942100-1-zhangfei.gao@oss.qualcomm.com> References: <20260923-qcom_xpcs_nord_emac-v1-0-4b1c682af70f@oss.qualcomm.com> <20260923084921.3942100-1-zhangfei.gao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Reinject: loops=2 maxloops=12 X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-ORIG-GUID: nDrjff_ieJq5-ZnhL9nlZNZrAaEBY2dL X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDAzNSBTYWx0ZWRfX3tRQWAWh82DR 1wbs7VvoxzROOFDkUfirmmjj8b8jBzzeL5vbFGJi1j2cHALF4pcwARnvoMTtt4XVkGoEJ+M6VXq +at+G/nhG9sDHZqDo4F+hphCCgefkXA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDAzNSBTYWx0ZWRfXxKNbu0bhoPdy Azlk4RFO+TmAlykelu9cCz34c8uDZ4l1Dpv6xDa1QnF4NG0HtcFApBbNTw9ldvzjw1Iyw3tQJhs k2wnXeo+HZP6ppNRhB9xLsdOrA/6zUZHmNIJeB9FwPbVlL3lDEYWmDxEDHi0w6JECww/O8qD6yl D2TGbqr9mUK0u60aTR7fLfekv4qZAD4t1uTqndb0gL202B9kF2qqCTxuaZABiIlP4WI5CtRDauS GVUYVLpADDXsfVGMCBnkB8rX2cZVY/IX7fZhE6s8QOKmMGbQFjBeseUzGga3CwlKgzftV/zhiRl khn8bQ8+OXK6usYRBcEVC1sNmxsRzCBgEHAUdP7FWKBT9hHxm4BQsDbcLY2w2v3jHd80dAHkg4+ 5npYKrTYqm+KQldHXB+d3OrA5ooiMDOMn8cCFsazvB9fBl5VjXECGeXXa/bU/e9tspCqpXs5YCF +q27CQyKaKM5n0RdO7A== X-Authority-Analysis: v=2.4 cv=N828hG9B c=1 sm=1 tr=0 ts=6ab39299 cx=c_pps a=nuhDOHQX5FNHPW3J6Bj6AA==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=FE7BbxJiXtYwFh3iQH0A:9 X-Proofpoint-GUID: nDrjff_ieJq5-ZnhL9nlZNZrAaEBY2dL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1011 malwarescore=0 adultscore=0 spamscore=0 impostorscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230035 Content-Type: text/plain; charset="utf-8" Program the Qualcomm EMAC wrapper for the negotiated USXGMII media rate. The serial SerDes lane remains at the USXGMII rate, while the wrapper clock and IO macro settings follow the 10/100/1000/2500/5000/10000M MAC rate. Without the low-speed settings, a 100M link is reported by the PHY but the wrapper rejects it as an unsupported USXGMII speed. USXGMII also defaults to phylink in-band mode because the QCOM host requires the PHY-generated in-band link status. Signed-off-by: Zhangfei Gao --- .../stmicro/stmmac/dwmac-qcom-ethqos.c | 65 ++++++++++++++++++- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/driv= ers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index 280f9289753da..54a6c98e42057 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -38,6 +38,7 @@ #define RGMII_CONFIG_GPIO_CFG_TX_INT GENMASK(19, 17) #define RGMII_CONFIG_MAX_SPD_PRG_9 GENMASK(16, 8) #define RGMII_CONFIG_MAX_SPD_PRG_2 GENMASK(7, 6) +#define RGMII_CONFIG_MAX_SPD_PRG_2_V4 GENMASK(9, 6) #define RGMII_CONFIG_INTF_SEL GENMASK(5, 4) #define RGMII_CONFIG_BYPASS_TX_ID_EN BIT(3) #define RGMII_CONFIG_LOOPBACK_EN BIT(2) @@ -84,6 +85,12 @@ #define RGMII_CONFIG2_DATA_DIVIDE_CLK_SEL BIT(6) #define RGMII_CONFIG2_TX_CLK_PHASE_SHIFT_EN BIT(5) #define RGMII_CONFIG2_MODE_EN_VIA_GMII BIT(21) +#define RGMII_CONFIG2_MAX_SPD_PRG_3 GENMASK(20, 17) + +/* RGMII_IO_MACRO_SCRATCH_2 fields */ +#define RGMII_SCRATCH2_MAX_SPD_PRG_4 GENMASK(5, 2) +#define RGMII_SCRATCH2_MAX_SPD_PRG_5 GENMASK(9, 6) +#define RGMII_SCRATCH2_MAX_SPD_PRG_6 GENMASK(13, 10) =20 /* EMAC_WRAPPER_SGMII_PHY_CNTRL0 fields */ #define SGMII_PHY_CNTRL0_2P5G_1G_CLK_SEL GENMASK(6, 5) @@ -135,6 +142,7 @@ struct qcom_ethqos { struct clk *eee_clk; struct phy *serdes_phy; phy_interface_t phy_mode; + int speed; =20 const struct ethqos_emac_por *rgmii_por; unsigned int num_rgmii_por; @@ -557,9 +565,56 @@ static void ethqos_configure_usxgmii(struct qcom_ethqo= s *ethqos) rgmii_updatel(ethqos, USXGMII_CLK_BLK_CLK_EN, 0, EMAC_WRAPPER_USXGMII_MUX_SEL); =20 - rgmii_updatel(ethqos, USXGMII_CLK_BLK_GMII_CLK_BLK_SEL, - USXGMII_CLK_BLK_GMII_CLK_BLK_SEL, - EMAC_WRAPPER_USXGMII_MUX_SEL); + switch (ethqos->speed) { + case SPEED_10000: + rgmii_updatel(ethqos, USXGMII_CLK_BLK_GMII_CLK_BLK_SEL, + USXGMII_CLK_BLK_GMII_CLK_BLK_SEL, + EMAC_WRAPPER_USXGMII_MUX_SEL); + break; + case SPEED_5000: + rgmii_updatel(ethqos, SGMII_PHY_CNTRL0_2P5G_1G_CLK_SEL, 0, + EMAC_WRAPPER_SGMII_PHY_CNTRL0); + rgmii_updatel(ethqos, RGMII_CONFIG_MAX_SPD_PRG_2_V4, + BIT(6) | BIT(7), RGMII_IO_MACRO_CONFIG); + rgmii_updatel(ethqos, RGMII_CONFIG2_MAX_SPD_PRG_3, + BIT(17) | BIT(18), RGMII_IO_MACRO_CONFIG2); + break; + case SPEED_2500: + rgmii_updatel(ethqos, SGMII_PHY_CNTRL0_2P5G_1G_CLK_SEL, 0, + EMAC_WRAPPER_SGMII_PHY_CNTRL0); + rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR, + BIT(10) | BIT(11), RGMII_IO_MACRO_CONFIG); + rgmii_updatel(ethqos, RGMII_SCRATCH2_MAX_SPD_PRG_4, + BIT(2) | BIT(3), RGMII_IO_MACRO_SCRATCH_2); + rgmii_updatel(ethqos, RGMII_SCRATCH2_MAX_SPD_PRG_5, 0, + RGMII_IO_MACRO_SCRATCH_2); + break; + case SPEED_1000: + case SPEED_100: + rgmii_updatel(ethqos, RGMII_CONFIG2_RGMII_CLK_SEL_CFG, + RGMII_CONFIG2_RGMII_CLK_SEL_CFG, + RGMII_IO_MACRO_CONFIG2); + if (ethqos->speed =3D=3D SPEED_100) { + rgmii_updatel(ethqos, RGMII_CONFIG_MAX_SPD_PRG_2_V4, + BIT(9), RGMII_IO_MACRO_CONFIG); + rgmii_updatel(ethqos, RGMII_CONFIG2_MAX_SPD_PRG_3, + BIT(20), RGMII_IO_MACRO_CONFIG2); + rgmii_updatel(ethqos, RGMII_SCRATCH2_MAX_SPD_PRG_6, + BIT(10), RGMII_IO_MACRO_SCRATCH_2); + } + break; + case SPEED_10: + rgmii_updatel(ethqos, RGMII_CONFIG2_RGMII_CLK_SEL_CFG, + RGMII_CONFIG2_RGMII_CLK_SEL_CFG, + RGMII_IO_MACRO_CONFIG2); + break; + default: + dev_err(ðqos->pdev->dev, + "unsupported USXGMII speed %d\n", ethqos->speed); + return; + } + + return; } =20 static void @@ -568,6 +623,7 @@ ethqos_fix_mac_speed_usxgmii(void *bsp_priv, phy_interf= ace_t interface, { struct qcom_ethqos *ethqos =3D bsp_priv; =20 + ethqos->speed =3D speed; ethqos_configure_usxgmii(ethqos); } =20 @@ -836,6 +892,9 @@ static int qcom_ethqos_probe(struct platform_device *pd= ev) plat_dat->mac_finish =3D ethqos_mac_finish_serdes; break; case PHY_INTERFACE_MODE_USXGMII: + plat_dat->default_an_inband =3D true; + fallthrough; + case PHY_INTERFACE_MODE_10GBASER: plat_dat->fix_mac_speed =3D ethqos_fix_mac_speed_usxgmii; plat_dat->mac_finish =3D ethqos_mac_finish_serdes; break; --=20 2.43.0 From nobody Thu Sep 24 13:44:07 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 3F780418348; Wed, 23 Sep 2026 08:49:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790153398; cv=none; b=U4SEsRXeE+S+9LTj/Tmfm2oaQYo6kjnshCBgRNxZMBbEh5PxiuGdI2vgaT85rYSSNB/dwlAz8OSX+MiS0kBk+z5mW7R50wK4fWwPJ7djlAuDqAvp0zfTDeceBlmZWrrPNkcUhOOOyvb1IG5jt890a3bHmqSCD6Xc0nztkXqRPds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790153398; c=relaxed/simple; bh=L/gHMxo/4b6dvcTwhAyrMVfJeFHSnXMl0pZtYMPx7j0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qkzXQYdciRkW0ovz818Ymm3E1mO34UmpdT1BBhSrcso11XK3hdVtJ2JiWLQRFE/eDNCvD20/AKXcXLKUa5xFevqGZVHlZgOa3sSW/gH37dhoaJtvttmN3jDWhsysreom0IrtLbqTe1F1+IbObxLPusB0UxwkT5QLOFH8f3+wbww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=V0VIiK05; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="V0VIiK05" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8JXLk3853652; Wed, 23 Sep 2026 08:49:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=ktcbp+Pd2XS 6MSuzMxTirzvVqbEMHXkXNOon6j2cdWg=; b=V0VIiK05iX+cXAkGiB4emncZAAd Jtt27wXbqNJo20QxNnzM+vwixavGq+jVa60LvWRTpmFZCERwZ982m8/2YInIHmW7 6aHf/t6lyt8OFFVIAvXG4g0tTFX/G33romrKh8HeCXWtK/SXiu5Dh96PA6RRuqOu h/dStjLRziWSSIIgKN+f6qmfoyI5X6rsDwqsnTlw7r4xJPpHDGEAvTovuUdA5KeR tZaGwWyriVqnHLkF6obOboX51fhjZe7QQWunT0GlxPSmwmlWBIRF7se/3JXxpp7+ /nNEH9IWcCWgbq/N6Fp7s5MdGeSIgheQHuXP93MfqRRJB5mCBtXGC0TxhPQ== Received: from aptaippmta01.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com [103.229.16.4]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gux8c3ets-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 08:49:29 +0000 (GMT) Received: from pps.filterd (aptaippmta01.qualcomm.com [127.0.0.1]) by APTAIPPMTA01.qualcomm.com (8.18.1.11/8.18.1.11) with ESMTP id 68N8nR6f687572; Wed, 23 Sep 2026 08:49:27 GMT Received: from ap-kernel-sh03-lnx.qualcomm.com (smtphost-taiwan.qualcomm.com [10.249.136.33]) by APTAIPPMTA01.qualcomm.com (PPS) with ESMTPS id 68N8nRFQ687557 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 23 Sep 2026 08:49:27 +0000 (GMT) Received: from ap-kernel-sh03-lnx.qualcomm.com (localhost [127.0.0.1]) by ap-kernel-sh03-lnx.qualcomm.com (Postfix) with ESMTP id 280FC41241; Wed, 23 Sep 2026 16:49:26 +0800 (CST) From: Zhangfei Gao To: shengchao.guo@oss.qualcomm.com, bartosz.golaszewski@oss.qualcomm.com, mohd.anwar@oss.qualcomm.com Cc: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, hkallweit1@gmail.com, linux@armlinux.org.uk, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Zhangfei Gao Subject: [PATCH 3/3] net: stmmac: fix 10/100 support and MDIO for DW25GMAC Date: Wed, 23 Sep 2026 16:49:21 +0800 Message-ID: <20260923084921.3942100-4-zhangfei.gao@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260923084921.3942100-1-zhangfei.gao@oss.qualcomm.com> References: <20260923-qcom_xpcs_nord_emac-v1-0-4b1c682af70f@oss.qualcomm.com> <20260923084921.3942100-1-zhangfei.gao@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Reinject: loops=2 maxloops=12 X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTIzMDAzNSBTYWx0ZWRfX80vBIfE+dbF5 8JDxdnkir0QrmzfHjr1foxz/L50wneK0VgWTii25nXAirNHf1IFCL5Q2wHcFHaG5rlb3qiNDDr2 /HYl6Dhvm7rfsuSsLFHCgqNd67eFL5yFokQ95Grued5eh2/VTZAqpEUxViA1AEcBKRaY2sRW8mr yb6rGcQ0WBmQiZ12hHh9aP1F3EySYlyus4Et3XkiqaaH/J9KXSnI65zq0mHOAB0+8dEG2y3PLud /UXumnpp7NpBWc5Hmk6FMulYwBUcocijXL3Xl7OZynzz5ZMu6gs12wqtCHZcMXARK37tg5gioh3 /jFoigpYamFou6qNOyu+akBm5XsJwkUCCDw2uPM4I2o8mrbFFMzJPP+3pMlMhGKQ/8GC+c2P0Fs ed+G+R7hnAusK2GdxcE+0o5ghVERdNc/J2xujKO5NM2GoLPVJzkqyI4D6N8j1eRsa3LljAYyY7e 1Lmim+Zk+AeXFGk5acg== X-Authority-Analysis: v=2.4 cv=P9evFSAu c=1 sm=1 tr=0 ts=6ab39299 cx=c_pps a=nuhDOHQX5FNHPW3J6Bj6AA==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=VdqzKS8jKosA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=AZWUV-QvOJebNs4wEXYA:9 X-Proofpoint-ORIG-GUID: YLCcAeYK7KFESdp1j8xNUvTit2KwreNq X-Proofpoint-GUID: YLCcAeYK7KFESdp1j8xNUvTit2KwreNq X-Proofpoint-Spam-Info: AW1haW4tMjYwOTIzMDAzNSBTYWx0ZWRfX7X4e3iGQZEqd KnwfNbho7qTUOdMHjsQnDwYXu4eNvaKU+7OcKqrjNH3vVUA+RmfxGCopl0pTzoAwsXwbPxdH+oL dSiOd7MHWxyiTX5GIYqDgXKgpco/aiM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-23_04,2026-09-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 phishscore=0 clxscore=1011 bulkscore=0 suspectscore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609230035 Content-Type: text/plain; charset="utf-8" DW25GMAC currently advertises link modes starting at 1Gbps and does not provide the MAC speed encodings for 10Mbps and 100Mbps. This leaves the MAC speed field incorrectly configured when a USXGMII PHY negotiates a legacy speed. The MDIO setup also selects the XGMAC clock divider table and MDIO accessors only for DWMAC_CORE_XGMAC. DW25GMAC uses the same MDIO interface, so falling back to the generic path can cause PHY register accesses to time out and prevent the PHY from probing. Add the missing 10/100 capabilities and speed encodings, and handle DWMAC_CORE_25GMAC through the XGMAC MDIO paths. Fixes: 4975cb3b1b66 ("net: stmmac: Add DW25GMAC support in stmmac core driv= er") Signed-off-by: Zhangfei Gao --- drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 6 ++++-- drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/= net/ethernet/stmicro/stmmac/dwxgmac2_core.c index 0b00d880fd305..65221b4becf51 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c @@ -1563,9 +1563,11 @@ int dw25gmac_setup(struct stmmac_priv *priv) dwxgmac2_common_setup(priv, "DW25GMAC"); =20 mac->link.caps =3D MAC_ASYM_PAUSE | MAC_SYM_PAUSE | - MAC_1000FD | MAC_2500FD | MAC_5000FD | - MAC_10000FD | MAC_25000FD; + MAC_10 | MAC_100 | MAC_1000FD | MAC_2500FD | MAC_5000FD | + MAC_10000FD | MAC_25000FD; mac->link.duplex =3D 0; + mac->link.speed10 =3D XGMAC_CONFIG_SS_10_MII; + mac->link.speed100 =3D XGMAC_CONFIG_SS_100_MII; mac->link.speed1000 =3D XGMAC_CONFIG_SS_1000_GMII; mac->link.speed2500 =3D XGMAC_CONFIG_SS_2500_GMII; mac->link.xgmii.speed2500 =3D XGMAC_CONFIG_SS_2500; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_mdio.c index afe98ff5bdcb0..f20a6e056781f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -552,7 +552,8 @@ static u32 stmmac_clk_csr_set(struct stmmac_priv *priv) rates =3D stmmac_std_csr_to_mdc; if (priv->plat->flags & STMMAC_FLAG_HAS_SUN8I) rates =3D stmmac_sun8i_csr_to_mdc; - if (priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC) + if (priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC || + priv->plat->core_type =3D=3D DWMAC_CORE_25GMAC) rates =3D stmmac_xgmac_csr_to_mdc; =20 for (i =3D 0; rates[i].rate; i++) @@ -619,7 +620,8 @@ int stmmac_mdio_register(struct net_device *ndev) =20 new_bus->name =3D "stmmac"; =20 - if (priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC) { + if (priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC || + priv->plat->core_type =3D=3D DWMAC_CORE_25GMAC) { new_bus->read =3D &stmmac_xgmac2_mdio_read_c22; new_bus->write =3D &stmmac_xgmac2_mdio_write_c22; new_bus->read_c45 =3D &stmmac_xgmac2_mdio_read_c45; @@ -663,7 +665,8 @@ int stmmac_mdio_register(struct net_device *ndev) } =20 /* Looks like we need a dummy read for XGMAC only and C45 PHYs */ - if (priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC) + if (priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC || + priv->plat->core_type =3D=3D DWMAC_CORE_25GMAC) stmmac_xgmac2_mdio_read_c45(new_bus, 0, 0, 0); =20 /* If fixed-link is set, skip PHY scanning */ --=20 2.43.0