Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp308331ybi; Wed, 29 May 2019 21:58:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqyk4F3yuK+lHHCZGmSvq8CqEjPRZER0kl/Ie+3nU6V+N3oRfibGHN9E99+IAt7n1oIB9puT X-Received: by 2002:a63:4813:: with SMTP id v19mr2061262pga.406.1559192286649; Wed, 29 May 2019 21:58:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559192286; cv=none; d=google.com; s=arc-20160816; b=sGNGyvgF77A3ooqFUXZYljg3ClVkPeDIhKmAO83H+uMZPLVTrDFTfAiV8zalMDlGZQ xW3DBfdjOEvWrPOXeGQF3YG5p9RqrINw8eU9P/G2kCbYdSYdjI2D3p1w7KeHmcUi/6MX ts+7yj1UyZzza9mB01LIjHBm1NOa1wrZBATzjh7RNdnKG8oBohJhSwEpyKalOwvVMEMn xKDjU+ZfnG1llIBPuIH3XJ2MfZaQ0ci+UW1UmAlkHkAW7uQJqOe10Wv8woLYID13eyQp 5ec5uTZaOnGg9Hk8JqVIwKvdA36bYY6TRUgauB+9sIvvTZoGVD4bElFLmX7vzZHABsqD Bw6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=FyrBkmVImYRnZhX88yeN9KPEiyd8Bcjn32IIS/ulNHU=; b=oeO/ZzA4tCltHsviEKiC12TnD9ACw4CxD0gXWkdsikfDvHnsZkF0+EYYnyJBLiRLUp ZXuL/rrqmi2n8+KJG29YgKqR0ZYsvjeHA3d66X/UghLPkDVjHkblyOHCGOCWtMVSS6kv RmlmJOMHvdbPjrkZ2j88AuD2Y8AfHM3tEYOpMyfsiCnK/PP2CuNTv2BkD77oTW9hyYWV 4fS2+DVYlIGL5BQ6jRpMZbsT5Nxbyc+YiK+Hw/RVLzTUwF+3PkL7/iDmEJEuvswEZNBI 86UZLjY2lnPR1PRz2lN0ypbZm2UO83kT+VD27ojbvKuSLDMUqu4seUt5jvkJOdH0doVA RQAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=H79yEwZj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6si2191467pgu.383.2019.05.29.21.57.51; Wed, 29 May 2019 21:58:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=H79yEwZj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389148AbfE3EzR (ORCPT + 99 others); Thu, 30 May 2019 00:55:17 -0400 Received: from mail.kernel.org ([198.145.29.99]:46954 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728022AbfE3DKR (ORCPT ); Wed, 29 May 2019 23:10:17 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DF4BE2449D; Thu, 30 May 2019 03:10:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559185816; bh=Hx/9KAYVK97mnvSDuNU+dPrOJ3A2j8SqY9kszNUgStI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H79yEwZjXE0cIjprwvR8nMvGscsywJ7wMNPkmLQp7ie4J9aWAbNicxTMn9whmns5D kpEDPzNWqLF+p1w2f57gwnIpS79AmMAEBL2XrpjgwtDxxr0akOJ15fMhZfE7Y8j61Y 7enJTay/6PtBr4Lr4Kq48hUZEhHC/ZGrdNVOLyxs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Heiner Kallweit , "David S. Miller" , Sasha Levin Subject: [PATCH 5.1 110/405] net: phy: improve genphy_soft_reset Date: Wed, 29 May 2019 20:01:48 -0700 Message-Id: <20190530030546.569711943@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030540.291644921@linuxfoundation.org> References: <20190530030540.291644921@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 8c90b795e90f7753d23c18e8b95dd71b4a18c5d9 ] PHY's behave differently when being reset. Some reset registers to defaults, some don't. Some trigger an autoneg restart, some don't. So let's also set the autoneg restart bit when resetting. Then PHY behavior should be more consistent. Clearing BMCR_ISOLATE serves the same purpose and is borrowed from genphy_restart_aneg. BMCR holds the speed / duplex settings in fixed mode. Therefore we may have an issue if a soft reset resets BMCR to its default. So better call genphy_setup_forced() afterwards in fixed mode. We've seen no related complaint in the last >10 yrs, so let's treat it as an improvement. Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/phy/phy_device.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index cd5966b0db571..f6a6cc5bf118d 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1829,13 +1829,25 @@ EXPORT_SYMBOL(genphy_read_status); */ int genphy_soft_reset(struct phy_device *phydev) { + u16 res = BMCR_RESET; int ret; - ret = phy_set_bits(phydev, MII_BMCR, BMCR_RESET); + if (phydev->autoneg == AUTONEG_ENABLE) + res |= BMCR_ANRESTART; + + ret = phy_modify(phydev, MII_BMCR, BMCR_ISOLATE, res); if (ret < 0) return ret; - return phy_poll_reset(phydev); + ret = phy_poll_reset(phydev); + if (ret) + return ret; + + /* BMCR may be reset to defaults */ + if (phydev->autoneg == AUTONEG_DISABLE) + ret = genphy_setup_forced(phydev); + + return ret; } EXPORT_SYMBOL(genphy_soft_reset); -- 2.20.1