From patchwork Fri Feb 22 22:49:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1047163 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vOhv1O+8"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 445mnv3J9Nz9sBL for ; Sat, 23 Feb 2019 09:52:51 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726504AbfBVWwu (ORCPT ); Fri, 22 Feb 2019 17:52:50 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:38387 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725821AbfBVWwt (ORCPT ); Fri, 22 Feb 2019 17:52:49 -0500 Received: by mail-wm1-f66.google.com with SMTP id v26so3323563wmh.3 for ; Fri, 22 Feb 2019 14:52:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=xpxDVq+gLNHJ+Yr9i5olpG2bWOgY+GEN+ZhbKexkoxg=; b=vOhv1O+88RMmNqwOKRB5pFWNb00v0qYaiXVpeKCdw887UHtqbdX42tpKqcItBRicMx cl+71mBM+sI+2IIotu/Y0UePFzsVNOw8JaSHOdeonsPLxuIzgFEkJdLO7spUT+Sk8RjA 5a+SCX9dDytJzohk7nqaszDzN82rI7+LQ05NWdSccELZWsvZvmCE4Xo4mSHRxrGiybxt eAktqJUI6XUSdo+GLHTqJaEaTWirlTYfdcY/efbFG5i+ZlV07fK0abARHZd4SrCMPNdu 5oANIPvhJ1bmPsCDE4Qx4mKu/GrNMsDn6l0aVRu5SxY16hV9tcsSR8gKdyN2HA7Al4/H otqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=xpxDVq+gLNHJ+Yr9i5olpG2bWOgY+GEN+ZhbKexkoxg=; b=Xts8e/QEJHQmGOV1yMrPhpn1Xkapjzoz8NEOSG/8Phh8GbVRTjx1t6vyXhhmEmF2Lx 7IeUOiGf2lPqoVCjvI2b+4zPEh9YuYLK+QKNoTu+3wrQg48+UhSCDw9trPZC3BVa2O11 QEuYUhp2GfkS6jRKMaKKaTsL4MTGi0eAhmMdzTe/sWUQsPoIh296x0BUdY5uhfhFR/WE obIzTkbAgbEja9AwHFx81jBYj1TJ1Vt4YOK8s8P6n7iqM32qVYptOT434Bur/NhpN5A4 ksxjf+TnrFuYP4zCViPpCmQok7s1vV2QcX3jNrHZ9mQSbUoN+ipqwLwB7xlgJ3mlTo94 gmZw== X-Gm-Message-State: AHQUAuYvVIYInXhevkces8G+Z92BaMCM5luwrniUyIwOF6/v6jZytZeR ejKZRjvPXEQdXVkYvJp/XtI6Q5ae X-Google-Smtp-Source: AHgI3IYb7P2qJ5ZYeeTQ/YpEsQ4h46KAJDq9yMaYwsAKgj1vZ3CKb/pC833ZOtnk9pcKQI1PaXM8GA== X-Received: by 2002:a1c:4844:: with SMTP id v65mr4112090wma.66.1550875967259; Fri, 22 Feb 2019 14:52:47 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:881a:e62a:a902:5b57? (p200300EA8BF1E200881AE62AA9025B57.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:881a:e62a:a902:5b57]) by smtp.googlemail.com with ESMTPSA id x11sm6977961wrt.27.2019.02.22.14.52.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Feb 2019 14:52:46 -0800 (PST) Subject: [PATCH net-next 2/5] net: phy: aquantia: add support for auto-negotiation configuration From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <4ae20155-367d-4b11-63f9-28580b7cf1cb@gmail.com> Message-ID: <5eab0739-e38c-cb33-9314-881b51edcbf9@gmail.com> Date: Fri, 22 Feb 2019 23:49:54 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <4ae20155-367d-4b11-63f9-28580b7cf1cb@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Andrew Lunn Make use of the generic c45 code, plus code specific to the Aquantia phy for 1000BaseT negotiation. Signed-off-by: Andrew Lunn Signed-off-by: Heiner Kallweit Reviewed-by: Florian Fainelli --- drivers/net/phy/aquantia.c | 40 +++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia.c index 9661ef4b4..a1846daa3 100644 --- a/drivers/net/phy/aquantia.c +++ b/drivers/net/phy/aquantia.c @@ -20,6 +20,10 @@ #define PHY_ID_AQCS109 0x03a1b5c2 #define PHY_ID_AQR405 0x03a1b4b0 +#define MDIO_AN_VEND_PROV 0xc400 +#define MDIO_AN_VEND_PROV_1000BASET_FULL BIT(15) +#define MDIO_AN_VEND_PROV_1000BASET_HALF BIT(14) + #define MDIO_AN_TX_VEND_STATUS1 0xc800 #define MDIO_AN_TX_VEND_STATUS1_10BASET (0x0 << 1) #define MDIO_AN_TX_VEND_STATUS1_100BASETX (0x1 << 1) @@ -64,10 +68,40 @@ static int aqr_config_aneg(struct phy_device *phydev) { - linkmode_copy(phydev->supported, phy_10gbit_features); - linkmode_copy(phydev->advertising, phydev->supported); + bool changed = false; + u16 reg; + int ret; - return 0; + if (phydev->autoneg == AUTONEG_DISABLE) + return genphy_c45_pma_setup_forced(phydev); + + ret = genphy_c45_an_config_aneg(phydev); + if (ret < 0) + return ret; + if (ret > 0) + changed = true; + + /* Clause 45 has no standardized support for 1000BaseT, therefore + * use vendor registers for this mode. + */ + reg = 0; + if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, + phydev->advertising)) + reg |= MDIO_AN_VEND_PROV_1000BASET_FULL; + + if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT, + phydev->advertising)) + reg |= MDIO_AN_VEND_PROV_1000BASET_HALF; + + ret = phy_modify_mmd_changed(phydev, MDIO_MMD_AN, MDIO_AN_VEND_PROV, + MDIO_AN_VEND_PROV_1000BASET_HALF | + MDIO_AN_VEND_PROV_1000BASET_FULL, reg); + if (ret < 0) + return ret; + if (ret > 0) + changed = true; + + return genphy_c45_check_and_restart_aneg(phydev, changed); } static int aqr_config_intr(struct phy_device *phydev)