From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 3302243B4B3; Fri, 9 Oct 2026 17:12:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791565947; cv=none; b=IYd49EqYWKr4I8DyuvZTOpEf/Kk6mm+8TNWE/FZrhES7sXCIHZEYLZDU0kAGJBixp/GZCVC8H64PLvRN33Y60kXBaz79G9IaJMiWLMMMadl9SOQ4RedRfWtobhufwXsxwKQMBUjTDql9k+croSZoGQ9M1WAp+g5IjFC9tnLXD20= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791565947; c=relaxed/simple; bh=xLOyAlcL9ljrqkKalVxI3Yt5LtVg5EwHAtoaGy8RgIk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oEScuvY1y7wzWOLxhq+qNwrl6vHZismGdW+WoWCIJuj1sIlQPNxMr4q5E30/x1M4FHQGemfXFNozyz7SAWd5ds6ynhQEs1dY8r9kaaH9drw59BPU1dbFZnqRgguLzTfRdHTPbIn2V+M+d1Dq46E11CV5pQfAAw7lPpK5zdM3HUk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JCFIiH/+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JCFIiH/+" Received: by smtp.kernel.org (Postfix) with ESMTPS id BCA0FC4DE07; Fri, 9 Oct 2026 17:12:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1791565946; bh=xLOyAlcL9ljrqkKalVxI3Yt5LtVg5EwHAtoaGy8RgIk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=JCFIiH/+KNb/IJmvV3HcXKFzr0ZU9DMMH2DxPpXp+fOeFrkRGubveNixHXcIWaUzD YTdbFa8he+Wi1QOD7NBCC0SAU1+tpQkX3+KR2dfI6XUSM6dmRFbxftZvHCk/l31d30 drzzq5BAEWVopt/DzZS2qGbkJocf97mp9EqFu0b5l1rdaaMzF05zwNZyzy0CW/wPe6 7B6KqKFzhRIrxqBZKmgyBMiQytPvRo+bCkDx19g+LyahOK+Y+bAWCtF0BBWOLHkGiu ncf528ADR4JfM1uKJn9zh5nKKpZbv081jTzLSkZ0uUO87E8chnBzVqET1jOTI1NqTC BzqiKE0OHkipg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6147CA9EC0; Fri, 9 Oct 2026 17:12:26 +0000 (UTC) From: Selvamani Rajagopal via B4 Relay Date: Fri, 09 Oct 2026 10:12:30 -0700 Subject: [PATCH net-next v9 10/11] net: phy: ncn26000: Support for onsemi's S2500 internal phy Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261009-s2500-mac-phy-support-v9-10-dcefe1d0bf0d@onsemi.com> References: <20261009-s2500-mac-phy-support-v9-0-dcefe1d0bf0d@onsemi.com> In-Reply-To: <20261009-s2500-mac-phy-support-v9-0-dcefe1d0bf0d@onsemi.com> To: Selva Rajagopal , Andrew Lunn , "David S. Miller" , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Parthiban Veerasooran , Simon Horman , Jonathan Corbet , Shuah Khan , Randy Dunlap , Richard Cochran , Andrew Lunn , Heiner Kallweit , Russell King , Eric Dumazet , Piergiorgio Beruto , Eric Dumazet Cc: Selva Rajagopal , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Jerry Ray , Ciprian Regus X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1791565943; l=4621; i=Selvamani.Rajagopal@onsemi.com; s=20260531; h=from:subject:message-id; bh=3LOaLPONPbYt7Y1q6R7XN2pFxvx/9qTw91BGMExNzLM=; b=7KzbDWyf73EKdOEjdmvWaq91Ju/lk21recUabW6xd01z+8/hAPnB3kci6yFWjYAN9Pe3dh3KZ mN/KW8JBIC0Afk0cXZTiJkqoxbhhGt8MGFnQWOHHqLU+sBDQP84mtlo X-Developer-Key: i=Selvamani.Rajagopal@onsemi.com; a=ed25519; pk=5QRdM0HS/LGWWcUZZ9hVfZ+qbPQGZCumcTXOiN7Fyug= X-Endpoint-Received: by B4 Relay for Selvamani.Rajagopal@onsemi.com/20260531 with auth_id=803 X-Original-From: Selvamani Rajagopal Reply-To: Selvamani.Rajagopal@onsemi.com From: Selvamani Rajagopal Adding support for internal PHY of the integrated media access controller S2500. PLCA tx opportunity timer's default value is correct in this device, compared to the currently supported PHY NCN26000. Reviewed-by: Andrew Lunn Signed-off-by: Selvamani Rajagopal --- changes in v9 - Added Reviewed tag changes in v8 - changes to use newer API for read/write_mmd callback changes in v7 - No change changes in v6 - No change changes in v5 - No change changes in v4 - no change changes in v3 added new PHY support separate patch changed model comparison to use phy_id_compare_model changes in v2 Removed bug fixes. Retained only S2500 specific changes changes in v1 Added support for an internal PHY of onsemi's MAC-PHY S2500 --- MAINTAINERS | 1 + drivers/net/phy/ncn26000.c | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 4e122a5eefa1..c114be851607 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20435,6 +20435,7 @@ F: arch/mips/boot/dts/ralink/omega2p.dts ONSEMI ETHERNET PHY DRIVERS M: Piergiorgio Beruto +M: Selva Rajagopal L: netdev@vger.kernel.org S: Supported W: http://www.onsemi.com diff --git a/drivers/net/phy/ncn26000.c b/drivers/net/phy/ncn26000.c index 6d433f4e2c45..a33ebb2a7ece 100644 --- a/drivers/net/phy/ncn26000.c +++ b/drivers/net/phy/ncn26000.c @@ -2,7 +2,7 @@ /* * Driver for the onsemi 10BASE-T1S NCN26000 PHYs family. * - * Copyright 2022 onsemi + * Copyright 2026 onsemi */ #include #include @@ -14,6 +14,7 @@ #include "mdio-open-alliance.h" +#define PHY_ID_S2500 0x180FF411 #define PHY_ID_NCN26000 0x180FF5A1 #define NCN26000_REG_IRQ_CTL 16 @@ -41,13 +42,18 @@ static int ncn26000_config_init(struct phy_device *phydev) { + int ret = 0; + /* HW bug workaround: the default value of the PLCA TO_TIMER should be * 32, where the current version of NCN26000 reports 24. This will be * fixed in future PHY versions. For the time being, we force the * correct default here. */ - return phy_write_mmd(phydev, MDIO_MMD_VEND2, MDIO_OATC14_PLCA_TOTMR, - TO_TMR_DEFAULT); + if (phy_id_compare_model(phydev->drv->phy_id, PHY_ID_NCN26000)) + ret = phy_write_mmd(phydev, MDIO_MMD_VEND2, + MDIO_OATC14_PLCA_TOTMR, + TO_TMR_DEFAULT); + return ret; } static int ncn26000_config_aneg(struct phy_device *phydev) @@ -139,8 +145,8 @@ static irqreturn_t ncn26000_handle_interrupt(struct phy_device *phydev) static int ncn26000_config_intr(struct phy_device *phydev) { - int ret; u16 irqe; + int ret; if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { // acknowledge IRQs @@ -163,6 +169,26 @@ static int ncn26000_config_intr(struct phy_device *phydev) } static struct phy_driver ncn26000_driver[] = { + { + PHY_ID_MATCH_MODEL(PHY_ID_S2500), + .name = "S2500", + .features = PHY_BASIC_T1S_P2MP_FEATURES, + .config_init = ncn26000_config_init, + .config_intr = ncn26000_config_intr, + .config_aneg = ncn26000_config_aneg, + .read_status = ncn26000_read_status, + .handle_interrupt = ncn26000_handle_interrupt, + .set_plca_cfg = ncn26000_c45_plca_set_cfg, + .get_plca_cfg = genphy_c45_plca_get_cfg, + .get_plca_status = genphy_c45_plca_get_status, + .soft_reset = genphy_soft_reset, + .get_sqi = genphy_c45_oatc14_get_sqi, + .get_sqi_max = genphy_c45_oatc14_get_sqi_max, + .read_mmd = genphy_read_mmd_c45, + .write_mmd = genphy_write_mmd_c45, + .cable_test_get_status = genphy_c45_oatc14_cable_test_get_status, + .cable_test_start = genphy_c45_oatc14_cable_test_start, + }, { PHY_ID_MATCH_MODEL(PHY_ID_NCN26000), .name = "NCN26000", @@ -183,11 +209,13 @@ module_phy_driver(ncn26000_driver); static const struct mdio_device_id __maybe_unused ncn26000_tbl[] = { { PHY_ID_MATCH_MODEL(PHY_ID_NCN26000) }, + { PHY_ID_MATCH_MODEL(PHY_ID_S2500) }, { } }; MODULE_DEVICE_TABLE(mdio, ncn26000_tbl); +MODULE_AUTHOR("Selva Rajagopal "); MODULE_AUTHOR("Piergiorgio Beruto"); MODULE_DESCRIPTION("onsemi 10BASE-T1S PHY driver"); MODULE_LICENSE("Dual BSD/GPL"); -- 2.43.0