From patchwork Mon Jul 10 17:56:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmVzYSBKw6TDpHNrZWzDpGluZW4=?= X-Patchwork-Id: 701295 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83E34C0015E for ; Mon, 10 Jul 2023 18:04:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233116AbjGJSEi (ORCPT ); Mon, 10 Jul 2023 14:04:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231637AbjGJSEh (ORCPT ); Mon, 10 Jul 2023 14:04:37 -0400 Received: from hel-mailgw-01.vaisala.com (hel-mailgw-01.vaisala.com [193.143.230.17]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97DFC189 for ; Mon, 10 Jul 2023 11:04:30 -0700 (PDT) Received: from HEL-SMTP.corp.vaisala.com (HEL-SMTP.corp.vaisala.com [172.24.1.225]) by hel-mailgw-01.vaisala.com (Postfix) with ESMTP id A4A34601F18C; Mon, 10 Jul 2023 20:58:20 +0300 (EEST) Received: from yocto-vm.localdomain ([172.24.253.44]) by HEL-SMTP.corp.vaisala.com over TLS secured channel with Microsoft SMTPSVC(8.5.9600.16384); Mon, 10 Jul 2023 20:58:20 +0300 From: =?utf-8?b?VmVzYSBKw6TDpHNrZWzDpGluZW4=?= Cc: vesa.jaaskelainen@vaisala.com, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , Heiner Kallweit , Russell King , Andrew Davis , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] net: phy: dp83822: Add support for line class driver configuration Date: Mon, 10 Jul 2023 20:56:20 +0300 Message-Id: <20230710175621.8612-3-vesa.jaaskelainen@vaisala.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230710175621.8612-1-vesa.jaaskelainen@vaisala.com> References: <20230710175621.8612-1-vesa.jaaskelainen@vaisala.com> MIME-Version: 1.0 X-OriginalArrivalTime: 10 Jul 2023 17:58:20.0539 (UTC) FILETIME=[1CC644B0:01D9B358] To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Line driver can be configured either in Class A or in Class B modes. By default the PHY is in Class B mode. Signed-off-by: Vesa Jääskeläinen --- drivers/net/phy/dp83822.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c index b7cb71817780..5c144d22b64e 100644 --- a/drivers/net/phy/dp83822.c +++ b/drivers/net/phy/dp83822.c @@ -31,12 +31,17 @@ #define MII_DP83822_FCSCR 0x14 #define MII_DP83822_RCSR 0x17 #define MII_DP83822_RESET_CTRL 0x1f +#define MII_DP83822_LDCSEL 0x404 #define MII_DP83822_GENCFG 0x465 #define MII_DP83822_SOR1 0x467 /* GENCFG */ #define DP83822_SIG_DET_LOW BIT(0) +/* Line Driver Class Selection (LDCSEL) */ +#define DP83822_LDCSEL_CLASS_A 0x24 +#define DP83822_LDCSEL_CLASS_B 0x20 + /* Control Register 2 bits */ #define DP83822_FX_ENABLE BIT(14) @@ -118,6 +123,7 @@ struct dp83822_private { bool fx_signal_det_low; int fx_enabled; u16 fx_sd_enable; + bool line_driver_class_a; }; static int dp83822_set_wol(struct phy_device *phydev, @@ -416,6 +422,16 @@ static int dp83822_config_init(struct phy_device *phydev) MII_DP83822_RCSR, DP83822_RGMII_MODE_EN); } + /* Configure line driver class */ + if (dp83822->line_driver_class_a) + /* full MLT-3 on both Tx+ and Tx–.*/ + phy_write_mmd(phydev, DP83822_DEVADDR, MII_DP83822_LDCSEL, + DP83822_LDCSEL_CLASS_A); + else + /* reduced MLT-3 */ + phy_write_mmd(phydev, DP83822_DEVADDR, MII_DP83822_LDCSEL, + DP83822_LDCSEL_CLASS_B); + if (dp83822->fx_enabled) { err = phy_modify(phydev, MII_DP83822_CTRL_2, DP83822_FX_ENABLE, 1); @@ -507,6 +523,12 @@ static int dp83822_of_init(struct phy_device *phydev) dp83822->fx_enabled = device_property_present(dev, "ti,fiber-mode"); + /* DP83822 defaults to line driver class B - enable configuration for + * class A + */ + dp83822->line_driver_class_a = device_property_present(dev, + "ti,line-driver-class-a"); + return 0; } #else