Message ID | 20231208062502.13124-1-quic_snehshah@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp5274044vqy; Thu, 7 Dec 2023 22:26:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IHMrCphGlMxpQRxu7Z1KxaJ0JqxcPLH1TtsNC5X1G/WrCeahaA3IS8X3qmK+sAoTSGiowwj X-Received: by 2002:a05:6358:718d:b0:16e:102e:b67d with SMTP id t13-20020a056358718d00b0016e102eb67dmr4535454rwt.11.1702016778655; Thu, 07 Dec 2023 22:26:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702016778; cv=none; d=google.com; s=arc-20160816; b=iOjnLeh3fiIBvIpCNk5+GO330gzODai1Bt+Ny8FfgrGlOG+6ilnFToAq3Vlh51TdTt WMFl8Vx8I2YaIwS23fRdNK3LKW7/kosCMIEFlP7KtcROyaW1nQ33RfRRUvj+fAZFYL1v oFtiU58Dj2sUtI0AMdQMRkGi1/UqoqLsXD8BHq/NSreJt0rc/0xJfHkDXuWUK1NK5Gyu Ot92kusg/2G9LZr9pPk/ribf2223Qni+UuOeXHHeWcbsdB1NFQ9CUDtS4iJc+qP83/GJ PmFzhu+5WFkyUSTkXt5yR9H5DmB5iMAzRLxFgSi3JRzVkZdolXrEolwaOYvnccyqTzGt cocA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=kHS3iDkjfDGySwPowkkkoMU4rcVuWKrEPEnZpFHvaHU=; fh=1Jy5qpJ7e4FuBmQkVP0GCA4F+wDSel+w4r34NwoYij8=; b=rPmyna+Z9Ukdwfq3lzzAkctizqqHOLX9kZBn8oSVP6WisG83KfVZTKqCe1/VOBwm9d lq9GJog12VYB4xqukDm9VUrMemF16qrXds+h/96bHNngViKXymvP4X/v4DfFc4ROKW56 DbQzfjWVlJVjlZxdNnPnaVIloMfHDIit+D4+NWei9LWKx58cUa3Q1TlQi47gcsJCONtQ L7M3GK7o44NXt9Wnf89fpDNFmQq5dVu3VGsJSpxcHyAjFWenQ/eBvhbUBFOO2U7rFMCO Kg3OVBeaEzzAwMqiRE0fSXO+zPtQn6it+e7IeAAo1s016VcV+PgHWoT6gJfajMtDaSyf VRVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b="XLqX4/W2"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id k82-20020a628455000000b006ce97669ffcsi1004511pfd.387.2023.12.07.22.26.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Dec 2023 22:26:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b="XLqX4/W2"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id A1228808D48A; Thu, 7 Dec 2023 22:25:39 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233173AbjLHGZ3 (ORCPT <rfc822;chrisfriedt@gmail.com> + 99 others); Fri, 8 Dec 2023 01:25:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229531AbjLHGZW (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 8 Dec 2023 01:25:22 -0500 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07C8BC6; Thu, 7 Dec 2023 22:25:27 -0800 (PST) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3B85rbG6020850; Fri, 8 Dec 2023 06:25:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id; s=qcppdkim1; bh=kHS3iDkjfDGySwPowkkkoMU4rcVuWKrEPEnZpFHvaHU=; b=XLqX4/W20VM42GYeHY6LoRLFShRcgXKBswjf7CoWd57+2gr+tm7Swruv2BKGnXDgA0E0 WG8Ygg08wPkbBJL7X/GoQ/I7f9IT1Yn4HqvPUW6KEWvuxa+VZuPAWdBEZ/E7Bk0+1leB wIDVrceVi1368gNnZiVAS7bvypT80A1DNEKTZ8e2EcTRj9wagQzaOBFFQy3xzHaZ0yvr o8Hwg0nOySE8DKGnjdTKXk79zyBW1U7DaW20ShiyySUtr7h7bsfN/4CNe+5KFMo4CATv 7pUCRXFOwMY8uBMJqOQIvzlW8i4v+24ZX5qiMU2zYkpqLmRdZSTUC3W/wO5F3Ki8+SgJ dw== Received: from apblrppmta02.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3uu2trkpa9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 08 Dec 2023 06:25:09 +0000 Received: from pps.filterd (APBLRPPMTA02.qualcomm.com [127.0.0.1]) by APBLRPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTP id 3B86P4BP025384; Fri, 8 Dec 2023 06:25:04 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA02.qualcomm.com (PPS) with ESMTPS id 3uqwnm042e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 08 Dec 2023 06:25:04 +0000 Received: from APBLRPPMTA02.qualcomm.com (APBLRPPMTA02.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 3B86P4ca025377; Fri, 8 Dec 2023 06:25:04 GMT Received: from hu-maiyas-hyd.qualcomm.com (hu-snehshah-hyd.qualcomm.com [10.147.246.35]) by APBLRPPMTA02.qualcomm.com (PPS) with ESMTP id 3B86P4ZX025376; Fri, 08 Dec 2023 06:25:04 +0000 Received: by hu-maiyas-hyd.qualcomm.com (Postfix, from userid 2319345) id 9E89F5001C6; Fri, 8 Dec 2023 11:55:03 +0530 (+0530) From: Sneh Shah <quic_snehshah@quicinc.com> To: Vinod Koul <vkoul@kernel.org>, Bhupesh Sharma <bhupesh.sharma@linaro.org>, Alexandre Torgue <alexandre.torgue@foss.st.com>, Jose Abreu <joabreu@synopsys.com>, "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>, netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Sneh Shah <quic_snehshah@quicinc.com>, kernel@quicinc.com, Andrew Halaney <ahalaney@redhat.com> Subject: [PATCH net v3] net: stmmac: update Rx clk divider for 10M SGMII Date: Fri, 8 Dec 2023 11:55:02 +0530 Message-Id: <20231208062502.13124-1-quic_snehshah@quicinc.com> X-Mailer: git-send-email 2.17.1 X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: 7SyVwrW3062--thdidHXDeUqdsxn5TST X-Proofpoint-ORIG-GUID: 7SyVwrW3062--thdidHXDeUqdsxn5TST X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-08_02,2023-12-07_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 mlxscore=0 adultscore=0 priorityscore=1501 mlxlogscore=844 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2312080049 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 07 Dec 2023 22:25:39 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784693945612546764 X-GMAIL-MSGID: 1784693945612546764 |
Series |
[net,v3] net: stmmac: update Rx clk divider for 10M SGMII
|
|
Commit Message
Sneh Shah
Dec. 8, 2023, 6:25 a.m. UTC
SGMII 10MBPS mode needs RX clock divider to avoid drops in Rx.
Update configure SGMII function with rx clk divider programming.
Fixes: 463120c31c58 ("net: stmmac: dwmac-qcom-ethqos: add support for SGMII")
Signed-off-by: Sneh Shah <quic_snehshah@quicinc.com>
---
v3 changelog:
- Added comment to explain why MAC needs to be reconfigured for SGMII
v2 changelog:
- Use FIELD_PREP to prepare bifield values in place of GENMASK
- Add fixes tag
---
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 7 +++++++
1 file changed, 7 insertions(+)
Comments
On Fri, Dec 08, 2023 at 11:55:02AM +0530, Sneh Shah wrote: > SGMII 10MBPS mode needs RX clock divider to avoid drops in Rx. > Update configure SGMII function with rx clk divider programming. > > Fixes: 463120c31c58 ("net: stmmac: dwmac-qcom-ethqos: add support for SGMII") You didn't add my: Tested-by: Andrew Halaney <ahalaney@redhat.com> from the last version. Typically that's fine to do even if you post a new version as long as the changes are minor (in your case it's just the comment that was added since I tested, so definitely fine to do). > Signed-off-by: Sneh Shah <quic_snehshah@quicinc.com> > --- > v3 changelog: > - Added comment to explain why MAC needs to be reconfigured for SGMII > v2 changelog: > - Use FIELD_PREP to prepare bifield values in place of GENMASK > - Add fixes tag > --- > drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > index d3bf42d0fceb..ab2245995bc6 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > @@ -34,6 +34,7 @@ > #define RGMII_CONFIG_LOOPBACK_EN BIT(2) > #define RGMII_CONFIG_PROG_SWAP BIT(1) > #define RGMII_CONFIG_DDR_MODE BIT(0) > +#define RGMII_CONFIG_SGMII_CLK_DVDR GENMASK(18, 10) > > /* SDCC_HC_REG_DLL_CONFIG fields */ > #define SDCC_DLL_CONFIG_DLL_RST BIT(30) > @@ -598,6 +599,9 @@ static int ethqos_configure_rgmii(struct qcom_ethqos *ethqos) > return 0; > } > > +/* On interface toggle MAC registetrs gets reset. > + * Configure MAC block for SGMII on ethernet phy link up > + */ s/registetrs/registers/ > static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) > { > int val; > @@ -617,6 +621,9 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) > case SPEED_10: > val |= ETHQOS_MAC_CTRL_PORT_SEL; > val &= ~ETHQOS_MAC_CTRL_SPEED_MODE; > + rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR, > + FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR, 0x31), > + RGMII_IO_MACRO_CONFIG); > break; > } > > -- > 2.17.1 >
On Fri, Dec 08, 2023 at 11:55:02AM +0530, Sneh Shah wrote: > SGMII 10MBPS mode needs RX clock divider to avoid drops in Rx. > Update configure SGMII function with rx clk divider programming. Are you trying saying that the RX clock is completely wrong in 10MBps mode? Or is the RX clock good, but without some division of some other clock signal you loose some packets now and then? Please write your commit message such that it describe the actual problem you're having. This will help others to know if this fix is applicable to some issue they are seeing on their hardware, now and in the future. > > Fixes: 463120c31c58 ("net: stmmac: dwmac-qcom-ethqos: add support for SGMII") > Signed-off-by: Sneh Shah <quic_snehshah@quicinc.com> > --- > v3 changelog: > - Added comment to explain why MAC needs to be reconfigured for SGMII > v2 changelog: > - Use FIELD_PREP to prepare bifield values in place of GENMASK > - Add fixes tag > --- > drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > index d3bf42d0fceb..ab2245995bc6 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > @@ -34,6 +34,7 @@ > #define RGMII_CONFIG_LOOPBACK_EN BIT(2) > #define RGMII_CONFIG_PROG_SWAP BIT(1) > #define RGMII_CONFIG_DDR_MODE BIT(0) > +#define RGMII_CONFIG_SGMII_CLK_DVDR GENMASK(18, 10) This new bitfield overlaps with existing fields, is it the same register? Did the fields move? Is it applicable to all versions? What will existing writes to RGMII_IO_MACRO_CONFIG do to this new layout? What will the new write do to hardware with the existing field layout? > > /* SDCC_HC_REG_DLL_CONFIG fields */ > #define SDCC_DLL_CONFIG_DLL_RST BIT(30) > @@ -598,6 +599,9 @@ static int ethqos_configure_rgmii(struct qcom_ethqos *ethqos) > return 0; > } > > +/* On interface toggle MAC registetrs gets reset. > + * Configure MAC block for SGMII on ethernet phy link up > + */ > static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) > { > int val; > @@ -617,6 +621,9 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) > case SPEED_10: > val |= ETHQOS_MAC_CTRL_PORT_SEL; > val &= ~ETHQOS_MAC_CTRL_SPEED_MODE; > + rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR, > + FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR, 0x31), Is this just a magic constant, or does 0x31 of some convenient unit? Could we give it name/define? Regards, Bjorn > + RGMII_IO_MACRO_CONFIG); > break; > } > > -- > 2.17.1 > >
On 12/9/2023 9:54 AM, Bjorn Andersson wrote: > On Fri, Dec 08, 2023 at 11:55:02AM +0530, Sneh Shah wrote: >> SGMII 10MBPS mode needs RX clock divider to avoid drops in Rx. >> Update configure SGMII function with rx clk divider programming. > > Are you trying saying that the RX clock is completely wrong in 10MBps > mode? Or is the RX clock good, but without some division of some other > clock signal you loose some packets now and then? Without the divider, Rx clock is completely wrong. All the packets will dropped. > > Please write your commit message such that it describe the actual > problem you're having. This will help others to know if this fix is > applicable to some issue they are seeing on their hardware, now and in > the future. > Rx clock divider is must for 10M SGMII to work for my hardware. Hence, It was mentioned that SGMII needs Rx clock divider for 10MBPS to work. Will update the commit message to emphasize on how rx clock is completely wrong without this. >> >> Fixes: 463120c31c58 ("net: stmmac: dwmac-qcom-ethqos: add support for SGMII") >> Signed-off-by: Sneh Shah <quic_snehshah@quicinc.com> >> --- >> v3 changelog: >> - Added comment to explain why MAC needs to be reconfigured for SGMII >> v2 changelog: >> - Use FIELD_PREP to prepare bifield values in place of GENMASK >> - Add fixes tag >> --- >> drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c >> index d3bf42d0fceb..ab2245995bc6 100644 >> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c >> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c >> @@ -34,6 +34,7 @@ >> #define RGMII_CONFIG_LOOPBACK_EN BIT(2) >> #define RGMII_CONFIG_PROG_SWAP BIT(1) >> #define RGMII_CONFIG_DDR_MODE BIT(0) >> +#define RGMII_CONFIG_SGMII_CLK_DVDR GENMASK(18, 10) > > This new bitfield overlaps with existing fields, is it the same > register? Did the fields move? Is it applicable to all versions? > It is same register but bitfield is moved for new SGMII based HW version. Not applicable to older version. few bitfields of older HW version's RGMII register are repurposed in the new hw version for SGMII config. > What will existing writes to RGMII_IO_MACRO_CONFIG do to this new > layout? What will the new write do to hardware with the existing field > layout? > we have two functions to configure MAC IOMACRO interface. 1. ethqos_configure_sgmii( this used this new bifield) 2. ethqos_configure_rgmii ( this used old layout) Old HW version uses ethqos_configure_rgmii only. New HW version used ethqos_configure_sgmii only. Old HW version is not going to use this new layout. New HW version is not going to use old layout configuration. >> >> /* SDCC_HC_REG_DLL_CONFIG fields */ >> #define SDCC_DLL_CONFIG_DLL_RST BIT(30) >> @@ -598,6 +599,9 @@ static int ethqos_configure_rgmii(struct qcom_ethqos *ethqos) >> return 0; >> } >> >> +/* On interface toggle MAC registetrs gets reset. >> + * Configure MAC block for SGMII on ethernet phy link up >> + */ >> static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) >> { >> int val; >> @@ -617,6 +621,9 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) >> case SPEED_10: >> val |= ETHQOS_MAC_CTRL_PORT_SEL; >> val &= ~ETHQOS_MAC_CTRL_SPEED_MODE; >> + rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR, >> + FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR, 0x31), > > Is this just a magic constant, or does 0x31 of some convenient unit? > Could we give it name/define? > It is just a constant based on programming guide of HW. Will add a #define for it. > Regards, > Bjorn > >> + RGMII_IO_MACRO_CONFIG); >> break; >> } >> >> -- >> 2.17.1 >> >>
On Fri, Dec 08, 2023 at 11:55:02AM +0530, Sneh Shah wrote: > SGMII 10MBPS mode needs RX clock divider to avoid drops in Rx. > Update configure SGMII function with rx clk divider programming. One more time: > [PATCH v3] net: stmmac: update Rx clk divider for 10M SGMII It would be better to add "dwmac-qcom-ethqos" prefix to the subject since the patch concerns the Qualcomm Eth MAC only. This time don't forget to do that on v4. -Serge(y) > > Fixes: 463120c31c58 ("net: stmmac: dwmac-qcom-ethqos: add support for SGMII") > Signed-off-by: Sneh Shah <quic_snehshah@quicinc.com> > --- > v3 changelog: > - Added comment to explain why MAC needs to be reconfigured for SGMII > v2 changelog: > - Use FIELD_PREP to prepare bifield values in place of GENMASK > - Add fixes tag > --- > drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > index d3bf42d0fceb..ab2245995bc6 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c > @@ -34,6 +34,7 @@ > #define RGMII_CONFIG_LOOPBACK_EN BIT(2) > #define RGMII_CONFIG_PROG_SWAP BIT(1) > #define RGMII_CONFIG_DDR_MODE BIT(0) > +#define RGMII_CONFIG_SGMII_CLK_DVDR GENMASK(18, 10) > > /* SDCC_HC_REG_DLL_CONFIG fields */ > #define SDCC_DLL_CONFIG_DLL_RST BIT(30) > @@ -598,6 +599,9 @@ static int ethqos_configure_rgmii(struct qcom_ethqos *ethqos) > return 0; > } > > +/* On interface toggle MAC registetrs gets reset. > + * Configure MAC block for SGMII on ethernet phy link up > + */ > static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) > { > int val; > @@ -617,6 +621,9 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) > case SPEED_10: > val |= ETHQOS_MAC_CTRL_PORT_SEL; > val &= ~ETHQOS_MAC_CTRL_SPEED_MODE; > + rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR, > + FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR, 0x31), > + RGMII_IO_MACRO_CONFIG); > break; > } > > -- > 2.17.1 > >
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c index d3bf42d0fceb..ab2245995bc6 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c @@ -34,6 +34,7 @@ #define RGMII_CONFIG_LOOPBACK_EN BIT(2) #define RGMII_CONFIG_PROG_SWAP BIT(1) #define RGMII_CONFIG_DDR_MODE BIT(0) +#define RGMII_CONFIG_SGMII_CLK_DVDR GENMASK(18, 10) /* SDCC_HC_REG_DLL_CONFIG fields */ #define SDCC_DLL_CONFIG_DLL_RST BIT(30) @@ -598,6 +599,9 @@ static int ethqos_configure_rgmii(struct qcom_ethqos *ethqos) return 0; } +/* On interface toggle MAC registetrs gets reset. + * Configure MAC block for SGMII on ethernet phy link up + */ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) { int val; @@ -617,6 +621,9 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos) case SPEED_10: val |= ETHQOS_MAC_CTRL_PORT_SEL; val &= ~ETHQOS_MAC_CTRL_SPEED_MODE; + rgmii_updatel(ethqos, RGMII_CONFIG_SGMII_CLK_DVDR, + FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR, 0x31), + RGMII_IO_MACRO_CONFIG); break; }