| Message ID | 20260311-qcom-sa8255p-emac-v8-2-58227bcf1018@oss.qualcomm.com (mailing list archive) |
|---|---|
| State | New |
| Headers |
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 F12FE3E277A
for <imx@lists.linux.dev>; Wed, 11 Mar 2026 17:04:06 +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=1773248649; cv=none;
b=HhFkUasAHwZrhMHaWgecjtNMM6HuK2M1QGH5jb/UXXnc9zjXM8Lp03sQ0oT+X1UiGdAol3taA19uo3CFthgPzx3FMI8RZRKTb8DgnNFzjCF+1jNLDadAWKU8MS3CpeYxsZQ6ViRzgtJ+q2d0IuKeFZFjyurpjDyKsMenxLecJvU=
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1773248649; c=relaxed/simple;
bh=jarMP2kx4omN4KmFez4/RzYUXczgrQKSOEW4KJFpBFg=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc;
b=uWZzOLP3AS/WXiYH6vNoczdh0A6l/JL505BAfF27nKj+YCCHCp1TN5X98Qpb33V+TDgGkch846oGIxajG6oVen5+pumxmaVxuyPQlTCs81XEI56Tk2s0Dm5DFPlTtEIb83E3XdC+tSCBujQ703JgS78IshFsVSeQVgUyhZXcXyU=
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=bv83wDQy;
dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com
header.b=bqHUttBn; 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="bv83wDQy";
dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com
header.b="bqHUttBn"
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
62BD844Z4032762
for <imx@lists.linux.dev>; Wed, 11 Mar 2026 17:04:06 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
gdxx6+E9Nzo1SIEzhKmedbjW3ho5UzPgZIwDTMk23Hk=; b=bv83wDQy2b/EsaRU
eJyfDUe27dHZSKDxXetxfX6xMwAnt4QbesB4mvz+7iHrdwV1rvKptFYh6B1krTjR
ICyvXoN67ke/klwfb1MvrYNu6wLFzqLBF4Cc74CqjSdJf8TNVUwc4A76ywj0JFj6
fD1eXV9P42pNfMu9GoKWgcnjfkMXw61dpW8ggeyyMJ5FSJF5mXTRQmXS6iggjwiI
DwS1jKyz2hHSGa/xLJqyW3/WQxBXvW7hgdGZxpl1qvXByMxQOO+/wew+3VtWM+C3
t5dvguiGQLTrmYnth6uLCo1Vs/ynkR6dpc36U4b36pMRUl11mwog7Ee1chminHMz
KFriPA==
Received: from mail-vs1-f70.google.com (mail-vs1-f70.google.com
[209.85.217.70])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cu90t8y1r-1
(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)
for <imx@lists.linux.dev>; Wed, 11 Mar 2026 17:04:06 +0000 (GMT)
Received: by mail-vs1-f70.google.com with SMTP id
ada2fe7eead31-5ffd5dd4c75so164503137.3
for <imx@lists.linux.dev>; Wed, 11 Mar 2026 10:04:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=oss.qualcomm.com; s=google; t=1773248645; x=1773853445;
darn=lists.linux.dev;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:mime-version:subject:date:from:from:to:cc:subject:date:message-id
:reply-to;
bh=gdxx6+E9Nzo1SIEzhKmedbjW3ho5UzPgZIwDTMk23Hk=;
b=bqHUttBnm+qL7M5rSgJaGgn6OG6KwQGQ/hzDSIWwCz+HAgLKp9QhhnZ6JUsISqIJJL
vWzemkLCe15U2+2qcx9QwPSSCpQ41jDx22cCYrRnfuoY7pu4RHoOa0aF6Gf/xfJ6bqjb
kgRrRlwUQaFFi7gPFrPRrrmSyDGIf4ZyOEvV3j12vzDEFOwQz8G6U+OYIghyiFBvdUH2
eXbUpkJ18wFjkUHysV6yUL0SHtsM6kF76g2sMVkO450hXDs0+c9sP9nhXW9tSPdHd0a3
ZWtI4NsnNUTxLeTf+fXs7nb/Wpm5aYGw4us+/EjTQE4xKRlVIaLVt+KqGBdWSc6A5zk6
sf+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1773248645; x=1773853445;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to
:cc:subject:date:message-id:reply-to;
bh=gdxx6+E9Nzo1SIEzhKmedbjW3ho5UzPgZIwDTMk23Hk=;
b=CDzCw9QJSUcTSZdPwZYlcsf6zmmhcm3/QiwFUo75+hQOnS1UcSDKx33TfUoXjMWPYZ
1xit3P0Bb8BQcvOwLx2J2fipqE7Wuo3biqSLtSGlkMwvWElQR8ntfrww12zBinIjtBF2
nNsnhorPUQ1OawLsXCBUF7HIQFOyH2nK8lJpEEAWPBTaHNXgL5Eq318Y6R4hAt510pS4
yAH+Dnfr9uAOg+IjsIpMsVjpCppziI/DVphXJH9KnxO2HQ8Yo8x1uxZ6KJfpzXQ/wLJm
xZGwZTbpDWdY6Ia3gVjw0M6eUWVK7JMlx9izHx+DhMujU6vgvqfwO2MI0tUH4YAvbSCL
VSpg==
X-Forwarded-Encrypted: i=1;
AJvYcCURMv+lxj2dAMPMo3ajb8J+q6AVWg8YpjvG1zW/GjT37FNcHhTAqE1dS80VUX/O345h7hQ=@lists.linux.dev
X-Gm-Message-State: AOJu0Yy3//2KyDhOBs02Ts/wdIjDnwQhsxw0jx4hS4bcKm1oauIh0fnO
eOrypCTEUpS9zErsN7b9xMQI/TUsDkHB+SitwR+vIUmu39ZAOWhML6K9WIfSyMO7s02k5jSNuJZ
FabWU+ZZD04J9ohDXFwByWtbOAIy6UbdoRW0Jo98/GwA+CufsmgxJZ0E=
X-Gm-Gg: ATEYQzyT8OvgJMp1y1UoZE8ypsLrVmFH4AvCodUVGvooLgY1J2ySPC/URUGRlhYzQDL
1w/LNdM1bhw5xoDWY0Sw2a7udjkVQgNCzt564AHpakxIadmzyBXY7fe+wRZgz2ZJ10KYuQHLY5z
hr7e7p2iP5TEY8TeTYaI/EB1zlbrVDxpgRNeFJPJFoKEICfXlbIaO/T6shIeMFJTo08g3sGCQ/l
/swBX6DLwXLiX7dYFUYSWrVnp2nbTtg1zyr1xh/12EzyCLJIr+fdmLyZ+ZpBIokG2Q1Y8yrmFbX
/k5udl7cSlkb2825cPMRVaJSfcpzM1WUgm4mFYQiElPQeD5IeRWelXnyjLZcUumQIYKXW5n1/A+
mTZHDA4UDAgLKWp20vlFhLWXJiyx5+DjMbPEnWhc+k+pkwESvyIpV
X-Received: by 2002:a05:6102:cc6:b0:5ff:cb2c:a013 with SMTP id
ada2fe7eead31-601def2ae84mr1132907137.29.1773248645261;
Wed, 11 Mar 2026 10:04:05 -0700 (PDT)
X-Received: by 2002:a05:6102:cc6:b0:5ff:cb2c:a013 with SMTP id
ada2fe7eead31-601def2ae84mr1132877137.29.1773248644707;
Wed, 11 Mar 2026 10:04:04 -0700 (PDT)
Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:3a92:6740:d71b:5056])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-48541ad1e4esm167993075e9.8.2026.03.11.10.04.01
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Wed, 11 Mar 2026 10:04:03 -0700 (PDT)
From: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Date: Wed, 11 Mar 2026 18:03:37 +0100
Subject: [PATCH net-next v8 2/6] net: stmmac: qcom-ethqos: use generic
device properties
Precedence: bulk
X-Mailing-List: imx@lists.linux.dev
List-Id: <imx.lists.linux.dev>
List-Subscribe: <mailto:imx+subscribe@lists.linux.dev>
List-Unsubscribe: <mailto:imx+unsubscribe@lists.linux.dev>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20260311-qcom-sa8255p-emac-v8-2-58227bcf1018@oss.qualcomm.com>
References: <20260311-qcom-sa8255p-emac-v8-0-58227bcf1018@oss.qualcomm.com>
In-Reply-To: <20260311-qcom-sa8255p-emac-v8-0-58227bcf1018@oss.qualcomm.com>
To: Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Vinod Koul <vkoul@kernel.org>,
Giuseppe Cavallaro <peppe.cavallaro@st.com>,
Chen-Yu Tsai <wens@kernel.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Kevin Hilman <khilman@baylibre.com>,
Jerome Brunet <jbrunet@baylibre.com>, Shawn Guo <shawnguo@kernel.org>,
Fabio Estevam <festevam@gmail.com>,
Jan Petrous <jan.petrous@oss.nxp.com>, s32@nxp.com,
Romain Gantois <romain.gantois@bootlin.com>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Magnus Damm <magnus.damm@gmail.com>,
Maxime Ripard <mripard@kernel.org>,
Christophe Roullier <christophe.roullier@foss.st.com>,
Bartosz Golaszewski <brgl@kernel.org>,
Radu Rendec <rrendec@redhat.com>
Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
Drew Fustini <dfustini@tenstorrent.com>, linux-sunxi@lists.linux.dev,
linux-amlogic@lists.infradead.org, linux-mips@vger.kernel.org,
imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org,
linux-rockchip@lists.infradead.org, sophgo@lists.linux.dev,
linux-riscv@lists.infradead.org, brgl@kernel.org,
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=openpgp-sha256; l=3058;
i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id;
bh=N+dHjWXfvXJHTEYUAiwtkC+XoS225MOcRMNA92C/Jpw=;
b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpsaB0v3Sl4/sp56iDGfrn63MUk6MjZIiJTzfXf
w26BYwssyCJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCabGgdAAKCRAFnS7L/zaE
w7sdEACZsFXM7p//CfitX5UqpB/btkY4zsW5EXkhS9yfGCgabSgfoTX9DsKhv6sX1pJTctxW2Jj
WdJ4s1IX9/7vW+acevWWapCmtarWxZ+FS9/DUks7wrNii8FysLTpAIkKe0yb5Vqb4aazorFJepZ
QMklj/TPR9rnPTjYCcYpO3JXPhxHVcWSGGj1T008VYY+H1g7HC3FLiYH6OztIN8m28UXC2wXXjm
jjH4O2G4j9lQU6G0SgnnRbMSc5bzei51WxJdkBgnWXq6cFPr/qoGF+qKHbhvXfX8uR1zt6xjh7E
rK3dnLYpwERUGOXR3HeSSv94sEOlLLtSb4ASnlh5jiCiXX/7RsM6KJkqmVNBo9jNfKUBNTFEc2E
Rk5QW+Q6QSiC8UUdHRgwzNOArdNWh7pg26eWfgQ/vMR8QPG57IiUS6TCQS79ajOAwN2OR3aEsAy
4xwbeUPCe6I7NV3ncRMyuLsaW9Jx02+kDJTSurrKERfV9cqSnWxe8/3veaJ6cZIoqd/BwOgrRyp
bPAoDz1Bk3cC3oqL5IKaxnXwFO/vosOgfVJsMn49Mio14B/mDN3if30VdgPxYKQzrF26XeCHPTe
StSJ5KHRTqpETm5niQmB6XFjjOYPG1MCZFbE57IaXGvRChr4mErCe6uLSs6x3CR+iLYfB2jRfnB
5p7afV75hsIVjkA==
X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp;
fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772
X-Proofpoint-ORIG-GUID: LUH6eXmFroiOZdfQ4kOMcJPpdEIyLAt3
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDE0NCBTYWx0ZWRfX/91n239sc0b3
t01cROHWw1LUPg69udOvXgIOyRh0cq8SJMa3SYza+cFpQBPGKU5yaYkwlR7chJChXIsm6OL/ri8
uQZw0heefebb2qyU/eI6AG0Du87lXUNVBpp9VPbFx23eqDzDWn8MxDJmfL5EdPa260NawpnjLc+
yyENaop1EfwCOZ2tnAHS83GCWBIpKJzdAZNb6++SJH+ihP59PzwX2A1FS4Et+Y2O2CavKSEL8db
N8kKLFujnTUmUrfJqDj5pO2FSzin0K/t/XZpuhsPnNhZ3DScKJZC7KIg5l94DtNrcMwwx8LcjnU
mqOeMhr6+DcSaU+cvu6g3NLtV8VTHDk3e/acBXBTjtU3wpvycF4m7iCeBhvkrcMTlusNyoiR6vJ
/bHoU29jUQGZrkXiR/8jE/ZbG4J3P43nevHYSy+g6eTa2JTD7qFWxa2b1isUZeWS1+LmDuv2I6u
9Vw0TF5hGGEJ1eRkxAA==
X-Authority-Analysis: v=2.4 cv=DfEaa/tW c=1 sm=1 tr=0 ts=69b1a086 cx=c_pps
a=N1BjEkVkxJi3uNfLdpvX3g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10
a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22
a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=KKAkSRfTAAAA:8
a=EUspDBNiAAAA:8 a=AGkLNbZTeN-MX8W9OO4A:9 a=QEXdDO2ut3YA:10
a=crWF4MFLhNY0qMRaF8an:22 a=cvBusfyB2V15izCimMoJ:22
X-Proofpoint-GUID: LUH6eXmFroiOZdfQ4kOMcJPpdEIyLAt3
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49
definitions=2026-03-11_02,2026-03-09_02,2025-10-01_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
clxscore=1015 priorityscore=1501 impostorscore=0 bulkscore=0
lowpriorityscore=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0
adultscore=0 classifier=typeunknown authscore=0 authtc= authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000
definitions=main-2603110144
Status: O
|
| Series |
net: stmmac: qcom-ethqos: add support for SCMI power domains
|
|
Commit Message
Bartosz Golaszewski
March 11, 2026, 5:03 p.m. UTC
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> In order to drop the dependency on CONFIG_OF, convert all device property getters from OF-specific to generic device properties and stop pulling in any linux/of.h symbols. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> --- drivers/net/ethernet/stmicro/stmmac/Kconfig | 2 +- drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-)
Comments
On Wed, Mar 11, 2026 at 06:03:37PM +0100, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > > In order to drop the dependency on CONFIG_OF, convert all device property > getters from OF-specific to generic device properties and stop pulling > in any linux/of.h symbols. > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Please postpone this for the time being - I'm trying to get stmmac's pain-in-the-arse PCS support sorted, and I've patch series out there and pending that make a large number of changes to this driver. This is likely to conflict with my work. I'm limited by the rate at which patches can be applied to net-next and the rate at which Mohd can provide me feedback. On that, I notice you haven't Cc'd Mohd who is now in MAINTAINERS for qcom-ethqos. Thanks.
On Wed, Mar 11, 2026 at 6:14 PM Russell King (Oracle) <linux@armlinux.org.uk> wrote: > > On Wed, Mar 11, 2026 at 06:03:37PM +0100, Bartosz Golaszewski wrote: > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > > > > In order to drop the dependency on CONFIG_OF, convert all device property > > getters from OF-specific to generic device properties and stop pulling > > in any linux/of.h symbols. > > > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> > > Please postpone this for the time being - I'm trying to get stmmac's > pain-in-the-arse PCS support sorted, and I've patch series out there > and pending that make a large number of changes to this driver. This > is likely to conflict with my work. > > I'm limited by the rate at which patches can be applied to net-next > and the rate at which Mohd can provide me feedback. On that, I notice > you haven't Cc'd Mohd who is now in MAINTAINERS for qcom-ethqos. > Do these two changesets interact with each other a lot? Do you have a WIP branch I could take a look at? This has been post-poned several times already, there always seem to be some new changes coming in. :/ Bart
On Wed, Mar 11, 2026 at 06:18:00PM +0100, Bartosz Golaszewski wrote: > On Wed, Mar 11, 2026 at 6:14 PM Russell King (Oracle) > <linux@armlinux.org.uk> wrote: > > > > On Wed, Mar 11, 2026 at 06:03:37PM +0100, Bartosz Golaszewski wrote: > > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > > > > > > In order to drop the dependency on CONFIG_OF, convert all device property > > > getters from OF-specific to generic device properties and stop pulling > > > in any linux/of.h symbols. > > > > > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> > > > > Please postpone this for the time being - I'm trying to get stmmac's > > pain-in-the-arse PCS support sorted, and I've patch series out there > > and pending that make a large number of changes to this driver. This > > is likely to conflict with my work. > > > > I'm limited by the rate at which patches can be applied to net-next > > and the rate at which Mohd can provide me feedback. On that, I notice > > you haven't Cc'd Mohd who is now in MAINTAINERS for qcom-ethqos. > > > > Do these two changesets interact with each other a lot? Do you have a > WIP branch I could take a look at? This has been post-poned several > times already, there always seem to be some new changes coming in. :/ I don't have a public branch because this work is subject to rework depending on the feedback I receive. Mohd has another version of the series that I'm waiting for feedback for. As soon as I hear that it's fine, I will be sending it. The problem I refer to has been a pain point for phylink since stmmac was converted in 2019, which pre-dates qcom-ethqos, the merging of which has made solving sthis much more painful as qcom-ethqos completely bypasses phylink by forcing the PCS inband state behind phylink's back. Honestly, over recent months, I've been washing that I'd NACK'd the merging of dwmac-qcom-ethqos at the time over this, but I didn't have any solution for stmmac at that point (it wasn't my responsibility, the broken phylink conversion of stmmac was merged without my knowledge, without even a Cc to me.) One of the biggest changes that will definitely conflict with your changes is the move of qcom-ethqos' SerDes support into stmmac core code - because the stmmac PCS code needs to know whether the SerDes can support 2.5Gbps speed. I got the changes for the generic PHY part of that merged last week. Another change that will conflict is your patch 3, where masses of changes in qcom_ethqos_probe() which will conflict with my "net: stmmac: qcom-ethqos: enable 2500BASE-X" patch. I've posted patches for that a couple of weeks ago, but Mohd reported problems, so I've had to rework the series - and now those patches are part of a follow-on series after sorting the bulk of the stmmac PCS mess. I'm currently waiting for Mohd's feedback on the reworked series. https://lore.kernel.org/r/aZ7ggfQanc8jeCb9@shell.armlinux.org.uk https://lore.kernel.org/r/aafxqCvJ_XY4YbWw@shell.armlinux.org.uk Latest version waiting for Mohd's feedback: https://lore.kernel.org/r/aa6sofjFxyi2nkpr@shell.armlinux.org.uk Below are the two patches which add and convert qcom-ethqos serdes support. Note that these two depend on other patches. From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk> Subject: [PATCH net-next] net: stmmac: add stmmac core serdes support Rather than having platform glue implement SerDes PHY support, add it to the core driver, specifically to the stmmac integrated PCS driver as the SerDes is connected to the integrated PCS. Platforms using external PCS can also populate plat->serdes, and the core driver will call phy_init() and phy_exit() when the administrative state of the interface changes, but the other phy methods will not be called. Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> -- rfc->v1: avoid calling phy_get_mode() with NULL serdes PHY v2: add cleanup when dwmac_serdes_set_mode() fails, so that failure at any point in the internal PCS enable method leaves the overall state unchanged. v3: in a pending change to generic PHY documentation indicated by Vinod recently, calling phy_set_mode(_ext)() before phy_power_on() will be preferred, so re-organise to use that ordering. v4: move phy_set_mode() into .mac_finish(), add dwmac_has_serdes() to make serdes calls conditional on dwmac's active phy interface, with the exception of phy_init()/phy_exit() calls. --- drivers/net/ethernet/stmicro/stmmac/Makefile | 2 +- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 37 +++++++- .../net/ethernet/stmicro/stmmac/stmmac_pcs.c | 44 +++++++-- .../ethernet/stmicro/stmmac/stmmac_serdes.c | 92 +++++++++++++++++++ .../ethernet/stmicro/stmmac/stmmac_serdes.h | 15 +++ include/linux/stmmac.h | 2 + 6 files changed, 181 insertions(+), 11 deletions(-) create mode 100644 drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.c create mode 100644 drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.h diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile index c9263987ef8d..a3c2cd5d0c91 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -7,7 +7,7 @@ stmmac-objs:= stmmac_main.o stmmac_ethtool.o stmmac_mdio.o ring_mode.o \ dwmac4_dma.o dwmac4_lib.o dwmac4_core.o dwmac5.o hwif.o \ stmmac_tc.o dwxgmac2_core.o dwxgmac2_dma.o dwxgmac2_descs.o \ stmmac_xdp.o stmmac_est.o stmmac_fpe.o stmmac_vlan.o \ - stmmac_pcs.o $(stmmac-y) + stmmac_pcs.o stmmac_serdes.o $(stmmac-y) stmmac-$(CONFIG_STMMAC_SELFTESTS) += stmmac_selftests.o diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 37f6ee7566be..428b2e5bb4c4 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -49,6 +49,7 @@ #include "stmmac_fpe.h" #include "stmmac.h" #include "stmmac_pcs.h" +#include "stmmac_serdes.h" #include "stmmac_xdp.h" #include <linux/reset.h> #include <linux/of_mdio.h> @@ -969,7 +970,7 @@ static int stmmac_mac_finish(struct phylink_config *config, unsigned int mode, priv->plat->mac_finish(ndev, priv->plat->bsp_priv, mode, interface); - return 0; + return dwmac_serdes_set_mode(priv, interface); } static void stmmac_mac_link_down(struct phylink_config *config, @@ -3592,12 +3593,14 @@ static void stmmac_safety_feat_configuration(struct stmmac_priv *priv) static void stmmac_clk_rx_i_require(struct stmmac_priv *priv) { + dwmac_serdes_power_on(priv); phylink_rx_clk_stop_block(priv->phylink); } static void stmmac_clk_rx_i_release(struct stmmac_priv *priv) { phylink_rx_clk_stop_unblock(priv->phylink); + dwmac_serdes_power_off(priv); } /** @@ -4153,6 +4156,10 @@ static int stmmac_open(struct net_device *dev) if (ret) goto err_runtime_pm; + ret = dwmac_serdes_init(priv); + if (ret < 0) + goto err_disconnect_phy; + if (!(priv->plat->flags & STMMAC_FLAG_SERDES_UP_AFTER_PHY_LINKUP)) { ret = stmmac_legacy_serdes_power_up(priv); if (ret < 0) @@ -4172,6 +4179,7 @@ static int stmmac_open(struct net_device *dev) err_serdes: stmmac_legacy_serdes_power_down(priv); + dwmac_serdes_exit(priv); err_disconnect_phy: phylink_disconnect_phy(priv->phylink); err_runtime_pm: @@ -4232,6 +4240,7 @@ static int stmmac_release(struct net_device *dev) __stmmac_release(dev); stmmac_legacy_serdes_power_down(priv); + dwmac_serdes_exit(priv); phylink_disconnect_phy(priv->phylink); pm_runtime_put(priv->device); @@ -7781,6 +7790,13 @@ static int __stmmac_dvr_probe(struct device *device, return -EINVAL; } + if (plat_dat->serdes && + (plat_dat->serdes_powerup || plat_dat->serdes_powerdown)) { + dev_err(device, + "generic PHY and SerDes platform callbacks are incompatible\n"); + return -EINVAL; + } + ndev = devm_alloc_etherdev_mqs(device, sizeof(struct stmmac_priv), MTL_MAX_TX_QUEUES, MTL_MAX_RX_QUEUES); if (!ndev) @@ -8194,6 +8210,15 @@ int stmmac_suspend(struct device *dev) rtnl_lock(); phylink_suspend(priv->phylink, !!priv->wolopts); + + /* If the MAC has WoL enabled, the SerDes needs to remain active. + * Otherwise, phylink will have stopped the MAC and the PCS will + * have been disabled, meaning the SerDes is already powered off. + * Call its exit function so we can call init during resume. + */ + if (!priv->wolopts) + dwmac_serdes_exit(priv); + rtnl_unlock(); if (stmmac_fpe_supported(priv)) @@ -8290,6 +8315,15 @@ int stmmac_resume(struct device *dev) rtnl_lock(); + /* If the MAC has WoL enabled, the SerDes was left active */ + if (!priv->wolopts) { + ret = dwmac_serdes_init(priv); + if (ret) { + rtnl_unlock(); + return ret; + } + } + /* Prepare the PHY to resume, ensuring that its clocks which are * necessary for the MAC DMA reset to complete are running */ @@ -8307,6 +8341,7 @@ int stmmac_resume(struct device *dev) netdev_err(priv->dev, "%s: Hw setup failed\n", __func__); stmmac_legacy_serdes_power_down(priv); mutex_unlock(&priv->lock); + dwmac_serdes_exit(priv); rtnl_unlock(); return ret; } diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.c index 0c0eb9e30b95..298d3c00b2fa 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only #include "stmmac.h" #include "stmmac_pcs.h" +#include "stmmac_serdes.h" /* * GMAC_AN_STATUS is equivalent to MII_BMSR @@ -60,8 +61,14 @@ static unsigned int dwmac_integrated_pcs_inband_caps(struct phylink_pcs *pcs, static int dwmac_integrated_pcs_enable(struct phylink_pcs *pcs) { struct stmmac_pcs *spcs = phylink_pcs_to_stmmac_pcs(pcs); + struct stmmac_priv *priv = spcs->priv; + int ret; - stmmac_mac_irq_modify(spcs->priv, 0, spcs->int_mask); + ret = dwmac_serdes_power_on(priv); + if (ret) + return ret; + + stmmac_mac_irq_modify(priv, 0, spcs->int_mask); return 0; } @@ -69,8 +76,11 @@ static int dwmac_integrated_pcs_enable(struct phylink_pcs *pcs) static void dwmac_integrated_pcs_disable(struct phylink_pcs *pcs) { struct stmmac_pcs *spcs = phylink_pcs_to_stmmac_pcs(pcs); + struct stmmac_priv *priv = spcs->priv; + + stmmac_mac_irq_modify(priv, spcs->int_mask, 0); - stmmac_mac_irq_modify(spcs->priv, spcs->int_mask, 0); + dwmac_serdes_power_off(priv); } static void dwmac_integrated_pcs_get_state(struct phylink_pcs *pcs, @@ -220,6 +230,22 @@ int stmmac_integrated_pcs_get_phy_intf_sel(struct phylink_pcs *pcs, return -EINVAL; } +static void stmmac_integrated_pcs_check_support(struct stmmac_priv *priv, + struct stmmac_pcs *spcs, + phy_interface_t interface, + unsigned int flag) +{ + bool supported; + + if (priv->plat->serdes) + supported = dwmac_serdes_validate(priv, interface) == 0; + else + supported = !flag || priv->plat->flags & flag; + + if (supported) + __set_bit(interface, spcs->pcs.supported_interfaces); +} + int stmmac_integrated_pcs_init(struct stmmac_priv *priv, const struct stmmac_pcs_info *pcs_info) { @@ -243,13 +269,13 @@ int stmmac_integrated_pcs_init(struct stmmac_priv *priv, if (readl(spcs->base + GMAC_AN_STATUS) & BMSR_ESTATEN) spcs->support_tbi_rtbi = true; - __set_bit(PHY_INTERFACE_MODE_SGMII, spcs->pcs.supported_interfaces); - __set_bit(PHY_INTERFACE_MODE_1000BASEX, spcs->pcs.supported_interfaces); - - /* Only allow 2500BASE-X if the SerDes has support. */ - if (priv->plat->flags & STMMAC_FLAG_SERDES_SUPPORTS_2500M) - __set_bit(PHY_INTERFACE_MODE_2500BASEX, - spcs->pcs.supported_interfaces); + stmmac_integrated_pcs_check_support(priv, spcs, + PHY_INTERFACE_MODE_SGMII, 0); + stmmac_integrated_pcs_check_support(priv, spcs, + PHY_INTERFACE_MODE_1000BASEX, 0); + stmmac_integrated_pcs_check_support(priv, spcs, + PHY_INTERFACE_MODE_2500BASEX, + STMMAC_FLAG_SERDES_SUPPORTS_2500M); priv->integrated_pcs = spcs; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.c new file mode 100644 index 000000000000..a767c0553604 --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.c @@ -0,0 +1,92 @@ +#include <linux/phy/phy.h> + +#include "stmmac.h" +#include "stmmac_serdes.h" + +static bool dwmac_has_serdes(struct stmmac_priv *priv) +{ + if (priv->plat->core_type == DWMAC_CORE_XGMAC) + return false; + + return priv->dma_cap.actphyif == PHY_INTF_SEL_SGMII || + priv->dma_cap.actphyif == PHY_INTF_SEL_TBI || + priv->dma_cap.actphyif == PHY_INTF_SEL_RTBI; +} + +int dwmac_serdes_validate(struct stmmac_priv *priv, phy_interface_t interface) +{ + struct phy *serdes = priv->plat->serdes; + + return phy_validate(serdes, PHY_MODE_ETHERNET, interface, NULL); +} + +int dwmac_serdes_init(struct stmmac_priv *priv) +{ + struct phy *serdes = priv->plat->serdes; + int ret; + + ret = phy_init(serdes); + if (ret) + dev_err(priv->device, "failed to initialize SerDes: %pe\n", + ERR_PTR(ret)); + + return ret; +} + +int dwmac_serdes_power_on(struct stmmac_priv *priv) +{ + struct phy *serdes = priv->plat->serdes; + int ret; + + if (!dwmac_has_serdes(priv)) + return 0; + + ret = phy_power_on(serdes); + if (ret) + dev_err(priv->device, "failed to power on SerDes: %pe\n", + ERR_PTR(ret)); + + return ret; +} + +int dwmac_serdes_set_mode(struct stmmac_priv *priv, phy_interface_t interface) +{ + struct phy *serdes = priv->plat->serdes; + int ret; + + if (!dwmac_has_serdes(priv)) + return 0; + + ret = phy_set_mode_ext(serdes, PHY_MODE_ETHERNET, interface); + if (ret) + dev_err(priv->device, + "failed to set SerDes mode %s: %pe\n", + phy_modes(interface), ERR_PTR(ret)); + + return ret; +} + +void dwmac_serdes_power_off(struct stmmac_priv *priv) +{ + struct phy *serdes = priv->plat->serdes; + int ret; + + if (!dwmac_has_serdes(priv)) + return; + + ret = phy_power_off(serdes); + if (ret) + dev_err(priv->device, "failed to power off SerDes: %pe\n", + ERR_PTR(ret)); +} + +void dwmac_serdes_exit(struct stmmac_priv *priv) +{ + struct phy *serdes = priv->plat->serdes; + int ret; + + ret = phy_exit(serdes); + if (ret) + dev_err(priv->device, "failed to shutdown SerDes: %pe\n", + ERR_PTR(ret)); +} diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.h b/drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.h new file mode 100644 index 000000000000..2ca37a7d0fde --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_serdes.h @@ -0,0 +1,15 @@ +#ifndef STMMAC_SERDES_H +#define STMMAC_SERDES_H + +#include <linux/phy.h> + +struct stmmac_priv; + +int dwmac_serdes_validate(struct stmmac_priv *priv, phy_interface_t interface); +int dwmac_serdes_init(struct stmmac_priv *priv); +int dwmac_serdes_power_on(struct stmmac_priv *priv); +int dwmac_serdes_set_mode(struct stmmac_priv *priv, phy_interface_t interface); +void dwmac_serdes_power_off(struct stmmac_priv *priv); +void dwmac_serdes_exit(struct stmmac_priv *priv); + +#endif diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index a8e9b5d3289f..bedba4e23088 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -216,6 +216,7 @@ enum dwmac_core_type { #define STMMAC_FLAG_SERDES_SUPPORTS_2500M BIT(15) struct mac_device_info; +struct phy; struct plat_stmmacenet_data { enum dwmac_core_type core_type; @@ -245,6 +246,7 @@ struct plat_stmmacenet_data { * that phylink uses. */ phy_interface_t phy_interface; + struct phy *serdes; struct stmmac_mdio_bus_data *mdio_bus_data; struct device_node *phy_node; struct device_node *mdio_node;
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig index 07088d03dbab5bd1abf66e9460613b839c1d565e..e2af4fdd654340d618477ed87d3889dbb9aab456 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig @@ -135,7 +135,7 @@ config DWMAC_MESON config DWMAC_QCOM_ETHQOS tristate "Qualcomm ETHQOS support" default ARCH_QCOM - depends on OF && (ARCH_QCOM || COMPILE_TEST) + depends on ARCH_QCOM || COMPILE_TEST help Support for the Qualcomm ETHQOS core. diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index cb1c074c205307bca556192584fb0a4a10eecd47..fb4ffd0d5360d091bf0192740b8a4a8d2c66e09e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -1,8 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2018-19, Linaro Limited +#include <linux/mod_devicetable.h> #include <linux/module.h> -#include <linux/of.h> #include <linux/of_net.h> #include <linux/platform_device.h> #include <linux/phy.h> @@ -728,7 +728,6 @@ static void ethqos_ptp_clk_freq_config(struct stmmac_priv *priv) static int qcom_ethqos_probe(struct platform_device *pdev) { - struct device_node *np = pdev->dev.of_node; const struct ethqos_emac_driver_data *data; struct plat_stmmacenet_data *plat_dat; struct stmmac_resources stmmac_res; @@ -778,7 +777,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev) return dev_err_probe(dev, PTR_ERR(ethqos->rgmii_base), "Failed to map rgmii resource\n"); - data = of_device_get_match_data(dev); + data = device_get_match_data(dev); ethqos->rgmii_por = data->rgmii_por; ethqos->num_rgmii_por = data->num_rgmii_por; ethqos->rgmii_config_loopback_en = data->rgmii_config_loopback_en; @@ -818,9 +817,9 @@ static int qcom_ethqos_probe(struct platform_device *pdev) if (ethqos->has_emac_ge_3) plat_dat->dwmac4_addrs = &data->dwmac4_addrs; plat_dat->pmt = 1; - if (of_property_read_bool(np, "snps,tso")) + if (device_property_present(dev, "snps,tso")) plat_dat->flags |= STMMAC_FLAG_TSO_EN; - if (of_device_is_compatible(np, "qcom,qcs404-ethqos")) + if (device_is_compatible(dev, "qcom,qcs404-ethqos")) plat_dat->flags |= STMMAC_FLAG_RX_CLK_RUNS_IN_LPI; if (data->dma_addr_width) plat_dat->host_dma_width = data->dma_addr_width;