Received: by 2002:ac0:b08d:0:0:0:0:0 with SMTP id l13csp2001156imc; Fri, 22 Feb 2019 15:39:14 -0800 (PST) X-Google-Smtp-Source: AHgI3IaWy0evuCdl5TOVJJBpAeKksDkKkLg3MjDiJyytqXXEXoBIAP74npUYBEmYxSgn6CNbdRaW X-Received: by 2002:a63:d64:: with SMTP id 36mr6207269pgn.360.1550878754505; Fri, 22 Feb 2019 15:39:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550878754; cv=none; d=google.com; s=arc-20160816; b=SoyZd9HoC8rEIH3bvchoWPa35rL8LDLxDOPvMFCxtFDnBOIeBqq5Ga2ebkwZrjuagv KfX1pUGxg54Ct8Ibn5nljIkJ3nCthZ0izSW7TiNA+UhMoVkzMRpN9xhRguhqs3rXNOJ3 nhL2z0r2yRMM/SCF+puMjzo08ssfKGziyeUmMMPbhi7Fj3n39olHfW48Q77BC/bm6yVc D6Lu3P40K1UbWNsCIM2OBLE6rVrx5C1audDbnh0rw/ypmphFkQpcaPYuDstlX5JW9Dgk QEbOu1aQXgfsNSJRXTamqU2o2qLtnX8N92jKPRewRCGMyB0CZXsnTob2US+b/QP3gfvP 3OBA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=fJowgaJBiz43bEimvm+vhiBpuYS1n99CigVVIRoHwls=; b=R4joOnxp8j5RilB4Mz6ydWnR1zUbZgCZpAvTAOb/Gkw+gwl7wUM2go6vp287+hS+X5 gJtrSs+k1jw/CiC9CZZ5S00246JBa/H+SIS58q/HyT9z427XUQP36B/CkEP7cQ6gGveP jmY68y/NgduXzN/spBAgQcVrBCRZfWG4Md/OjatBgozEuGkrEf/6e3JUjM2lzu03xdUU PQ0/NInynUwf0sl8v99zGdFDSDvkjUxglp2eJAThIouLag16b7raluo3ZRlEiicgblGk hw4h4mSadIPEZCCPYRAUNMH/lZicFXIg0bdqzvbcXAxlOA3kqzByrZTb3CL6mPHyfbke CQXA== ARC-Authentication-Results: i=1; mx.google.com; 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 31si2533791plz.263.2019.02.22.15.38.59; Fri, 22 Feb 2019 15:39:14 -0800 (PST) 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; 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 S1727705AbfBVXiT (ORCPT + 99 others); Fri, 22 Feb 2019 18:38:19 -0500 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:58745 "EHLO relay3-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725774AbfBVXiS (ORCPT ); Fri, 22 Feb 2019 18:38:18 -0500 X-Originating-IP: 86.201.231.99 Received: from mc-bl-xps13.lan (lfbn-tou-1-149-99.w86-201.abo.wanadoo.fr [86.201.231.99]) (Authenticated sender: maxime.chevallier@bootlin.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id C1C2B6000D; Fri, 22 Feb 2019 23:38:12 +0000 (UTC) From: Maxime Chevallier To: davem@davemloft.net Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Andrew Lunn , Florian Fainelli , Heiner Kallweit , Russell King , linux-arm-kernel@lists.infradead.org, Antoine Tenart , thomas.petazzoni@bootlin.com, gregory.clement@bootlin.com, miquel.raynal@bootlin.com, nadavh@marvell.com, stefanc@marvell.com, mw@semihalf.com Subject: [PATCH net-next v2 5/7] net: phy: marvell10g: Force reading of 2.5/5G Date: Sat, 23 Feb 2019 00:37:42 +0100 Message-Id: <20190222233744.25735-6-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190222233744.25735-1-maxime.chevallier@bootlin.com> References: <20190222233744.25735-1-maxime.chevallier@bootlin.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As per 802.3bz, if bit 14 of (1.11) "PMA Extended Abilities" indicates whether or not we should read register (1.21) "2.52/5G PMA Extended Abilities", which contains information on the support of 2.5GBASET and 5GBASET. After testing on several variants of PHYS of this family, it appears that bit 14 in (1.11) isn't always set when it should be. PHYs 88X3310 (on MacchiatoBin) and 88E2010 do support 2.5G and 5GBASET, but don't have 1.11.14 set. Their register 1.21 is filled with the correct values, indicating 2.5G and 5G support. PHYs 88E2110 do have their 1.11.14 bit set, as it should. Signed-off-by: Maxime Chevallier --- drivers/net/phy/marvell10g.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c index 9c0b8f16cec5..8f354c3f3876 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -27,6 +27,9 @@ #include #include +#define MV_PHY_ALASKA_NBT_QUIRK_MASK 0xfffffffe +#define MV_PHY_ALASKA_NBT_QUIRK_REV (MARVELL_PHY_ID_88X3310 | 0xa) + enum { MV_PCS_BASE_T = 0x0000, MV_PCS_BASE_R = 0x1000, @@ -231,6 +234,23 @@ static int mv3310_resume(struct phy_device *phydev) return mv3310_hwmon_config(phydev, true); } +/* Some PHYs in the Alaska family such as the 88X3310 and the 88E2010 + * don't set bit 14 in PMA Extended Abilities (1.11), although they do + * support 2.5GBASET and 5GBASET. For these models, we can still read their + * 2.5G/5G extended abilities register (1.21). We detect these models based on + * the PMA device identifier, with a mask matching models known to have this + * issue + */ +static bool mv3310_has_pma_ngbaset_quirk(struct phy_device *phydev) +{ + if (!(phydev->c45_ids.devices_in_package & MDIO_DEVS_PMAPMD)) + return false; + + /* Only some revisions of the 88X3310 family PMA seem to be impacted */ + return (phydev->c45_ids.device_ids[MDIO_MMD_PMAPMD] & + MV_PHY_ALASKA_NBT_QUIRK_MASK) == MV_PHY_ALASKA_NBT_QUIRK_REV; +} + static int mv3310_config_init(struct phy_device *phydev) { /* Check that the PHY interface type is compatible */ @@ -262,6 +282,21 @@ static int mv3310_get_features(struct phy_device *phydev) if (ret) return ret; + if (mv3310_has_pma_ngbaset_quirk(phydev)) { + val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, + MDIO_PMA_NG_EXTABLE); + if (val < 0) + return val; + + linkmode_mod_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, + phydev->supported, + val & MDIO_PMA_NG_EXTABLE_2_5GBT); + + linkmode_mod_bit(ETHTOOL_LINK_MODE_5000baseT_Full_BIT, + phydev->supported, + val & MDIO_PMA_NG_EXTABLE_5GBT); + } + return 0; } -- 2.19.2