From patchwork Thu Sep 28 09:47:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 132107 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DE7884265E; Thu, 28 Sep 2023 11:38:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 273FE40A80; Thu, 28 Sep 2023 11:37:39 +0200 (CEST) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id 7391240EE7 for ; Thu, 28 Sep 2023 11:37:35 +0200 (CEST) X-QQ-mid: bizesmtp74t1695893852tn58oqvk Received: from wxdbg.localdomain.com ( [115.200.229.121]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 28 Sep 2023 17:37:31 +0800 (CST) X-QQ-SSF: 01400000000000K0Z000000A0000000 X-QQ-FEAT: mA5V8Pu2WCFWg9Ofo6iamXHMdjg//pk4QxE+SyKC4eLWaiIDh0F7ONdQZmBGb NYCj5N5KxmlGgh6uemVudBWD21mWzXkNPN3hlAP0G+vZ0IGGdTFhpmEHGKrIO1JxjiLecRw +Ok6bQBs1OhNYSukuIJ4U7OrGCdiu0bzdfmSAhCz6/3uBkMgZyIRgd7U45nSPCswcKRmpnb drVtm4xN3RSBGzcRBHQrjNq0RhlXIjzLouvh47l/ltOLSDKTMzXyehB4PI42eQIM98pf+39 Ezi6EcMuKqRqN+2UYzFTMKyTjKrbZB0UrF/II3e9BrnevK/PTiFeSKvXpLsNLtENsJiWhmZ UPMAJqBPjIB8cm1819WCqYe/H2jYuu9UxTpyG/RVulqS1tsBKK41dUp1jdySfu6vNdbUw+I 5Acq8eI8b4E= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 17392643781201496720 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 11/11] net/ngbe: add YT PHY fiber mode autoneg 100M support Date: Thu, 28 Sep 2023 17:47:58 +0800 Message-Id: <20230928094758.1076236-12-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230928094758.1076236-1-jiawenwu@trustnetic.com> References: <20230928094758.1076236-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Support auto-neg 100M for YT PHY fiber mode. Signed-off-by: Jiawen Wu --- doc/guides/rel_notes/release_23_11.rst | 4 ++ drivers/net/ngbe/base/ngbe_phy_yt.c | 66 +++++++++++++++++++------- 2 files changed, 52 insertions(+), 18 deletions(-) diff --git a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst index 9746809a66..578900f504 100644 --- a/doc/guides/rel_notes/release_23_11.rst +++ b/doc/guides/rel_notes/release_23_11.rst @@ -41,6 +41,10 @@ DPDK Release 23.11 New Features ------------ +* **Updated Wangxun ngbe driver.** + + * Added 100M and auto-neg support in YT PHY fiber mode. + .. This section should contain new features added in this release. Sample format: diff --git a/drivers/net/ngbe/base/ngbe_phy_yt.c b/drivers/net/ngbe/base/ngbe_phy_yt.c index 754faadd6a..ea313cd9a5 100644 --- a/drivers/net/ngbe/base/ngbe_phy_yt.c +++ b/drivers/net/ngbe/base/ngbe_phy_yt.c @@ -205,38 +205,68 @@ s32 ngbe_setup_phy_link_yt(struct ngbe_hw *hw, u32 speed, hw->phy.set_phy_power(hw, true); } else if ((value & YT_CHIP_MODE_MASK) == YT_CHIP_MODE_SEL(1)) { /* fiber to rgmii */ - hw->phy.autoneg_advertised |= NGBE_LINK_SPEED_1GB_FULL; + if (!hw->mac.autoneg) { + switch (speed) { + case NGBE_LINK_SPEED_1GB_FULL: + value = NGBE_LINK_SPEED_1GB_FULL; + break; + case NGBE_LINK_SPEED_100M_FULL: + value = NGBE_LINK_SPEED_100M_FULL; + break; + default: + value = NGBE_LINK_SPEED_1GB_FULL; + break; + } + hw->phy.autoneg_advertised |= value; + goto skip_an_fiber; + } - /* RGMII_Config1 : Config rx and tx training delay */ - value = YT_RGMII_CONF1_RXDELAY | - YT_RGMII_CONF1_TXDELAY_FE | - YT_RGMII_CONF1_TXDELAY; + value = 0; + if (speed & NGBE_LINK_SPEED_1GB_FULL) + hw->phy.autoneg_advertised |= NGBE_LINK_SPEED_1GB_FULL; + if (speed & NGBE_LINK_SPEED_100M_FULL) + hw->phy.autoneg_advertised |= NGBE_LINK_SPEED_100M_FULL; + +skip_an_fiber: rte_spinlock_lock(&hw->phy_lock); - ngbe_write_phy_reg_ext_yt(hw, YT_RGMII_CONF1, 0, value); - value = YT_CHIP_MODE_SEL(1) | - YT_CHIP_SW_LDO_EN | - YT_CHIP_SW_RST; - ngbe_write_phy_reg_ext_yt(hw, YT_CHIP, 0, value); + ngbe_read_phy_reg_ext_yt(hw, YT_MISC, 0, &value); + if (hw->phy.autoneg_advertised & NGBE_LINK_SPEED_1GB_FULL) + value |= YT_MISC_RESV; + else if (hw->phy.autoneg_advertised & NGBE_LINK_SPEED_100M_FULL) + value &= ~YT_MISC_RESV; + ngbe_write_phy_reg_ext_yt(hw, YT_MISC, 0, value); + /* close auto sensing */ ngbe_read_phy_reg_sds_ext_yt(hw, YT_AUTO, 0, &value); value &= ~YT_AUTO_SENSING; ngbe_write_phy_reg_sds_ext_yt(hw, YT_AUTO, 0, value); - ngbe_read_phy_reg_ext_yt(hw, YT_MISC, 0, &value); - value |= YT_MISC_RESV; - ngbe_write_phy_reg_ext_yt(hw, YT_MISC, 0, value); - ngbe_read_phy_reg_ext_yt(hw, YT_CHIP, 0, &value); value &= ~YT_CHIP_SW_RST; ngbe_write_phy_reg_ext_yt(hw, YT_CHIP, 0, value); + /* RGMII_Config1 : Config rx and tx training delay */ + value = YT_RGMII_CONF1_RXDELAY | + YT_RGMII_CONF1_TXDELAY_FE | + YT_RGMII_CONF1_TXDELAY; + + ngbe_write_phy_reg_ext_yt(hw, YT_RGMII_CONF1, 0, value); + value = YT_CHIP_MODE_SEL(1) | + YT_CHIP_SW_LDO_EN | + YT_CHIP_SW_RST; + ngbe_write_phy_reg_ext_yt(hw, YT_CHIP, 0, value); + /* software reset */ - if (hw->mac.autoneg) + if (hw->mac.autoneg) { value = YT_BCR_RESET | YT_BCR_ANE | YT_BCR_RESTART_AN | YT_BCR_DUPLEX | YT_BCR_SPEED_SELECT1; - else - value = YT_BCR_RESET | YT_BCR_DUPLEX | - YT_BCR_SPEED_SELECT1; + } else { + value = YT_BCR_RESET | YT_BCR_DUPLEX; + if (speed & NGBE_LINK_SPEED_1GB_FULL) + value |= YT_BCR_SPEED_SELECT1; + if (speed & NGBE_LINK_SPEED_100M_FULL) + value |= YT_BCR_SPEED_SELECT0; + } hw->phy.write_reg(hw, YT_BCR, 0, value); rte_spinlock_unlock(&hw->phy_lock);