From patchwork Wed Oct 11 12:38:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 151416 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp507950vqb; Wed, 11 Oct 2023 05:39:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGEk1F+UoS87eKMk6SS/wkCwIYe0Qbb8kx1cWCVo40JHLrIbAw9PHWKRDcUeQOQiL/KmXek X-Received: by 2002:a17:902:dacd:b0:1b3:d8ac:8db3 with SMTP id q13-20020a170902dacd00b001b3d8ac8db3mr23458521plx.6.1697027981406; Wed, 11 Oct 2023 05:39:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697027981; cv=none; d=google.com; s=arc-20160816; b=L7v6BWyT6I7x1U1q0fCk4xwGgz6s2sQPY+WGwIsUGGXzyxhLLOInG57f56HJYfCT9x 7TzjM37kz0a8+j+DETpXOSuO/Z8bqZAChfsqh4KGnGFLzXJ09P496KOD6dwA6iV33jlF PMtMoit+S38ysRxucbUeWMRG0k526F+tPUb6htpoKngDv35BqEDXKNi8dBwIZVbVJYT/ ohw8DHFCCiC9UrP8uJ72aLDBqZbqR3jtoywW2UuuvEnzyQzmhmv2b2Mdx+qf2k5u69eg pKcQkTkCnA9lSfOPETHddgkpJEwECo9fu7OEpl6szUxNpTTzoncpl7KC9Z9ge4+5D7MX XWxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=AJ014EwSTfbgy2TWMzgbdlD3STyGBX0T2t13tK2rALI=; fh=j9s5hIO3Bp22eL5GiD7sdOL2eTdxGeOXyUDoEydDNo0=; b=c9VdyI5s9jCyfuXVG6tC2BNwZVibyR/wzfd9asCJn/hxVGcQ22sCGEtzECb50sXAL4 Sg1BaJOwln2CnUpy6qiKAA9wdQisaUlKiMWrWbbQUnZRMVQRy8a1XU9fDhwz93p52R2V gW4AyAtIhhW2uWPoaKmCHp4FhxL7+Xy5WIfNZ6EH/rSoFgv39cAWMgWsOUgK5w8PPcgR 3NIbErGsccfKwP65bG60uJ8ptxkN7vVYnrxCUuH35YJCPBVsCVDBc/UVhCJyG+hFca9o UatLCVrafiwbsBjb29ejTGxAEGNmxYzU23u7KP3ZzINKZnv+xrsi4kAu5cdpBni/gGP6 doAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id d14-20020a170903230e00b001bc079974dbsi15494912plh.355.2023.10.11.05.39.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Oct 2023 05:39:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id E2364801BC86; Wed, 11 Oct 2023 05:39:34 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346422AbjJKMjS (ORCPT + 18 others); Wed, 11 Oct 2023 08:39:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234885AbjJKMjR (ORCPT ); Wed, 11 Oct 2023 08:39:17 -0400 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [IPv6:2a0a:edc0:2:b01:1d::104]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7FC0DA4 for ; Wed, 11 Oct 2023 05:39:15 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qqYUN-0006sa-DI; Wed, 11 Oct 2023 14:38:59 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqYUM-000uOA-6s; Wed, 11 Oct 2023 14:38:58 +0200 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1qqYUM-0063TX-0S; Wed, 11 Oct 2023 14:38:58 +0200 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, Russell King , netdev@vger.kernel.org Subject: [PATCH net-next v1 1/3] net: phy: micrel: Extend KSZ886X PHY Special Ctrl/Status Reg definitions Date: Wed, 11 Oct 2023 14:38:54 +0200 Message-Id: <20231011123856.1443308-1-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=2.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Wed, 11 Oct 2023 05:39:35 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779462812659892217 X-GMAIL-MSGID: 1779462812659892217 Extend 'micrel_phy.h' with additional definitions for KSZ886X PHY Special Control/Status Register (Reg 31), for upcoming usage in subsequent patches. Signed-off-by: Oleksij Rempel --- include/linux/micrel_phy.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/micrel_phy.h b/include/linux/micrel_phy.h index 4e27ca7c49de..591bf5b5e8dc 100644 --- a/include/linux/micrel_phy.h +++ b/include/linux/micrel_phy.h @@ -64,6 +64,10 @@ #define KSZ886X_BMCR_DISABLE_TRANSMIT BIT(1) #define KSZ886X_BMCR_DISABLE_LED BIT(0) +/* PHY Special Control/Status Register (Reg 31) */ #define KSZ886X_CTRL_MDIX_STAT BIT(4) +#define KSZ886X_CTRL_FORCE_LINK BIT(3) +#define KSZ886X_CTRL_PWRSAVE BIT(2) +#define KSZ886X_CTRL_REMOTE_LOOPBACK BIT(1) #endif /* _MICREL_PHY_H */ From patchwork Wed Oct 11 12:38:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 151414 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp507770vqb; Wed, 11 Oct 2023 05:39:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH9rHblJv4wpJIMO4kcmbb24eMaWKV4K1OGuufST++kevuInETL2HzDuqNhvwfugjKb2Bz+ X-Received: by 2002:a17:90b:4d86:b0:27c:fd8d:164a with SMTP id oj6-20020a17090b4d8600b0027cfd8d164amr2575592pjb.1.1697027961499; Wed, 11 Oct 2023 05:39:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697027961; cv=none; d=google.com; s=arc-20160816; b=H/9CCUrcR4ucETjzyArtvdwM682b2Z70XRc5uwmGy0M/33sbUwDEtwN6vNtTXZxTpX a7jdFstTjInSGaeTKAgDJnrvDhthrK25axPHrBfsSJ0VIIpHVoEtBWTi+c0WMMX+bky0 NAFwklEilEo/reE48ukpj1QN/IQ68mCWrUTAdsgJWXnNr0gq4mzRZtwpb96DJ5UuEBzn RKTOld34cTUWx+9kkxRladLXaMPbPGCEWx3+GKFZOSaE3AuQcKkRgQ21mwpnuS9s3HkW follCI+zzrd4YPNoxdXg3dqnHlFUCdxSCdWxBES9nlAMRD0GUx0/QzgP6dz5DQJnxG40 6/jQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=bLg2fZOlqaMVgdPqeCdkR85hbHj4E4vJ2jgDxpR442g=; fh=j9s5hIO3Bp22eL5GiD7sdOL2eTdxGeOXyUDoEydDNo0=; b=F7ncthhQllgfvo/g3bSkGANNCIuiHpqrdX8Mzdlx9kulq6M8UOmyrp+ESZmgnA2Gjh 4F4V+s3TR3gf8aaHW+KSATfaRqeVLvL3CHGlA292yZA5XzT9XMYdfC3VkkscWXqt3f6s wcSmquW6TS+17+xs8kTukoNffOI0mx1pjmTKQoQRYGGsO1N7jEDLmiiGYFXmnqqbown8 Zf7lCTd9tmv4e1fHwc1oNuXH2gyNNdRvdhWce/WuW/D7Ij+JRekZXWK9yUgyEgkhklkO /hQ3VJjl0jFPGZbt0927mXDHjoQBAB/bOTNCzLtnFPGzyturFyhJAGi+8Cdqe7vW+Nc2 Xp3w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id il8-20020a17090b164800b00263c4af31f2si460060pjb.157.2023.10.11.05.39.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Oct 2023 05:39:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 57E2781BEEB6; Wed, 11 Oct 2023 05:39:20 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346153AbjJKMjR (ORCPT + 18 others); Wed, 11 Oct 2023 08:39:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234888AbjJKMjQ (ORCPT ); Wed, 11 Oct 2023 08:39:16 -0400 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [IPv6:2a0a:edc0:2:b01:1d::104]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1447692 for ; Wed, 11 Oct 2023 05:39:14 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qqYUN-0006sb-DJ; Wed, 11 Oct 2023 14:38:59 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqYUM-000uOB-7K; Wed, 11 Oct 2023 14:38:58 +0200 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1qqYUM-0063Th-0X; Wed, 11 Oct 2023 14:38:58 +0200 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, Russell King , netdev@vger.kernel.org Subject: [PATCH net-next v1 2/3] net: dsa: microchip: ksz8: Enable MIIM PHY Control reg access Date: Wed, 11 Oct 2023 14:38:55 +0200 Message-Id: <20231011123856.1443308-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231011123856.1443308-1-o.rempel@pengutronix.de> References: <20231011123856.1443308-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 11 Oct 2023 05:39:20 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779462791982013092 X-GMAIL-MSGID: 1779462791982013092 Provide access to MIIM PHY Control register (Reg. 31) through ksz8_r_phy_ctrl() and ksz8_w_phy_ctrl() functions. Necessary for upcoming micrel.c patch to address forced link mode configuration. Signed-off-by: Oleksij Rempel --- drivers/net/dsa/microchip/ksz8795.c | 81 +++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 91aba470fb2f..11cb054cb54f 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -632,6 +632,47 @@ static void ksz8_w_vlan_table(struct ksz_device *dev, u16 vid, u16 vlan) ksz8_w_table(dev, TABLE_VLAN, addr, buf); } +/** + * ksz8_r_phy_ctrl - Translates and reads from the SMI interface to a MIIM PHY + * Control register (Reg. 31). + * @dev: The KSZ device instance. + * @port: The port number to be read. + * + * This function reads the SMI interface and translates the hardware register + * bit values into their corresponding control settings for a MIIM PHY Control + * register. + */ +static int ksz8_r_phy_ctrl(struct ksz_device *dev, int port, u16 *val) +{ + const u16 *regs = dev->info->regs; + u8 reg_val; + int ret; + + *val = 0; + + ret = ksz_pread8(dev, port, regs[P_LINK_STATUS], ®_val); + if (ret < 0) + return ret; + + if (reg_val & PORT_MDIX_STATUS) + *val |= KSZ886X_CTRL_MDIX_STAT; + + ret = ksz_pread8(dev, port, REG_PORT_LINK_MD_CTRL, ®_val); + if (ret < 0) + return ret; + + if (reg_val & PORT_FORCE_LINK) + *val |= KSZ886X_CTRL_FORCE_LINK; + + if (reg_val & PORT_POWER_SAVING) + *val |= KSZ886X_CTRL_PWRSAVE; + + if (reg_val & PORT_PHY_REMOTE_LOOPBACK) + *val |= KSZ886X_CTRL_REMOTE_LOOPBACK; + + return 0; +} + int ksz8_r_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 *val) { u8 restart, speed, ctrl, link; @@ -769,12 +810,10 @@ int ksz8_r_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 *val) FIELD_GET(PORT_CABLE_FAULT_COUNTER_L, val2)); break; case PHY_REG_PHY_CTRL: - ret = ksz_pread8(dev, p, regs[P_LINK_STATUS], &link); + ret = ksz8_r_phy_ctrl(dev, p, &data); if (ret) return ret; - if (link & PORT_MDIX_STATUS) - data |= KSZ886X_CTRL_MDIX_STAT; break; default: processed = false; @@ -786,6 +825,36 @@ int ksz8_r_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 *val) return 0; } +/** + * ksz8_w_phy_ctrl - Translates and writes to the SMI interface from a MIIM PHY + * Control register (Reg. 31). + * @dev: The KSZ device instance. + * @port: The port number to be configured. + * @val: The register value to be written. + * + * This function translates control settings from a MIIM PHY Control register + * into their corresponding hardware register bit values for the SMI + * interface. + */ +static int ksz8_w_phy_ctrl(struct ksz_device *dev, int port, u16 val) +{ + u8 reg_val = 0; + int ret; + + if (val & KSZ886X_CTRL_FORCE_LINK) + reg_val |= PORT_FORCE_LINK; + + if (val & KSZ886X_CTRL_PWRSAVE) + reg_val |= PORT_POWER_SAVING; + + if (val & KSZ886X_CTRL_REMOTE_LOOPBACK) + reg_val |= PORT_PHY_REMOTE_LOOPBACK; + + ret = ksz_prmw8(dev, port, REG_PORT_LINK_MD_CTRL, PORT_FORCE_LINK | + PORT_POWER_SAVING | PORT_PHY_REMOTE_LOOPBACK, reg_val); + return ret; +} + int ksz8_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val) { u8 restart, speed, ctrl, data; @@ -926,6 +995,12 @@ int ksz8_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val) if (val & PHY_START_CABLE_DIAG) ksz_port_cfg(dev, p, REG_PORT_LINK_MD_CTRL, PORT_START_CABLE_DIAG, true); break; + + case PHY_REG_PHY_CTRL: + ret = ksz8_w_phy_ctrl(dev, p, val); + if (ret) + return ret; + break; default: break; } From patchwork Wed Oct 11 12:38:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 151415 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp507829vqb; Wed, 11 Oct 2023 05:39:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGoXOpeiEBfzdmeYeomizKQHzyYiEonr9glSyx3yniV8c4/yZ4Zv2smGQRFxxDFSOgMfKyT X-Received: by 2002:a17:902:d2c1:b0:1c1:fbec:bc32 with SMTP id n1-20020a170902d2c100b001c1fbecbc32mr23546598plc.6.1697027968626; Wed, 11 Oct 2023 05:39:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697027968; cv=none; d=google.com; s=arc-20160816; b=BhXsXqOWF0GitdAPSIq7g7daZf2a0eWvbWwe7boqRJjLvRGoPuQvO5cEa/YcXxEbri ZVs2GRS0Dt2l3eBcyO62CI8b152oKNpinHQxVm+vy5NsOZidAFgf4gwC18nfuictAU8h mQSl1zHoosUjL3/Zyyz2ct/lFbaNUSuuUOkzabnRWky8Un9QbyEgg51sFzzeYJLZl08D Di7JLtQzzq4/tafTJPPEWV1fEgWYx1SllSCqVX/d1nJvu1+GKMXnfN7VdawMoAfxViIx E41BN0xX5Fq12UioPHUMd+QXVFwT9ZzDesGqq+yGy8jLvNlmkF8rJGsyG20n0Zx5cjgO Yf8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=YH+C0R/4uk7mf/L8Qu3igoomq/cRFXzgiwxRZ+spcEM=; fh=j9s5hIO3Bp22eL5GiD7sdOL2eTdxGeOXyUDoEydDNo0=; b=k73xIa9C1+2hRNZBVLxKiSF9CdvE9qPuH1utxcoL3oGYs8pu6hKUj5/jwERzMt9xGc kOg/GMkOp+pnGv2wYklPBbM7bsQiZYL+mDe4eTGjX8JVZemN1RS3CiChFa6sdfgzKzpZ IYL48sOImclxi6ejvCBXbjGN1Z13HI5KdsyXlorMqQDlzojNsR6QBXl6ljuwZFKBC+pH fsAt/+qiY614UdrqAq7P5k7sTGd23ofFDsmtKS5aJ7jaoC8wcu87vXweVsak2ywvzX2Z 64SxFGt7gg661mF3+RA7ILNt6XYvSdp0DS2K0DTnIqSRlUi4WIF5MkiBy8ACiUitfpXW L0iw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id l4-20020a170902f68400b001c9d4d2460fsi581080plg.30.2023.10.11.05.39.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Oct 2023 05:39:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id D32DD81CE10A; Wed, 11 Oct 2023 05:39:27 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346827AbjJKMjT (ORCPT + 18 others); Wed, 11 Oct 2023 08:39:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345956AbjJKMjR (ORCPT ); Wed, 11 Oct 2023 08:39:17 -0400 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [IPv6:2a0a:edc0:2:b01:1d::104]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 125DE8F for ; Wed, 11 Oct 2023 05:39:16 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qqYUN-0006sc-DJ; Wed, 11 Oct 2023 14:38:59 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qqYUM-000uOC-8G; Wed, 11 Oct 2023 14:38:58 +0200 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1qqYUM-0063Tr-0c; Wed, 11 Oct 2023 14:38:58 +0200 From: Oleksij Rempel To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Heiner Kallweit Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, Russell King , netdev@vger.kernel.org Subject: [PATCH net-next v1 3/3] net: phy: micrel: Fix forced link mode for KSZ886X switches Date: Wed, 11 Oct 2023 14:38:56 +0200 Message-Id: <20231011123856.1443308-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231011123856.1443308-1-o.rempel@pengutronix.de> References: <20231011123856.1443308-1-o.rempel@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 11 Oct 2023 05:39:27 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779462799296614472 X-GMAIL-MSGID: 1779462799296614472 Address a link speed detection issue in KSZ886X PHY driver when in forced link mode. Previously, link partners like "ASIX AX88772B" with KSZ8873 could fall back to 10Mbit instead of configured 100Mbit. The issue arises as KSZ886X PHY continues sending Fast Link Pulses (FLPs) even with autonegotiation off, misleading link partners in autoneg mode, leading to incorrect link speed detection. Now, when autonegotiation is disabled, the driver sets the link state forcefully using KSZ886X_CTRL_FORCE_LINK bit. This action, beyond just disabling autonegotiation, makes the PHY state more reliably detected by link partners using parallel detection, thus fixing the link speed misconfiguration. With autonegotiation enabled, link state is not forced, allowing proper autonegotiation process participation. Signed-off-by: Oleksij Rempel --- drivers/net/phy/micrel.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 927d3d54658e..12f093aed4ff 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1729,9 +1729,35 @@ static int ksz886x_config_aneg(struct phy_device *phydev) { int ret; - ret = genphy_config_aneg(phydev); - if (ret) - return ret; + if (phydev->autoneg != AUTONEG_ENABLE) { + ret = genphy_setup_forced(phydev); + if (ret) + return ret; + + /* When autonegotation is disabled, we need to manually force + * the link state. If we don't do this, the PHY will keep + * sending Fast Link Pulses (FLPs) which are part of the + * autonegotiation process. This is not desired when + * autonegotiation is off. + */ + ret = phy_set_bits(phydev, MII_KSZPHY_CTRL, + KSZ886X_CTRL_FORCE_LINK); + if (ret) + return ret; + } else { + /* Make sure, the link state is not forced. + * Otherwise, the PHY we create a link by skipping the + * autonegotiation process. + */ + ret = phy_clear_bits(phydev, MII_KSZPHY_CTRL, + KSZ886X_CTRL_FORCE_LINK); + if (ret) + return ret; + + ret = genphy_config_aneg(phydev); + if (ret) + return ret; + } /* The MDI-X configuration is automatically changed by the PHY after * switching from autoneg off to on. So, take MDI-X configuration under