linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: davem@davemloft.net
Cc: Maxime Chevallier <maxime.chevallier@bootlin.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Andrew Lunn <andrew@lunn.ch>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	linux-arm-kernel@lists.infradead.org,
	Antoine Tenart <antoine.tenart@bootlin.com>,
	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 08/10] net: phy: marvell10g: Force reading of 2.5/5G
Date: Thu,  7 Feb 2019 10:49:37 +0100	[thread overview]
Message-ID: <20190207094939.27369-9-maxime.chevallier@bootlin.com> (raw)
In-Reply-To: <20190207094939.27369-1-maxime.chevallier@bootlin.com>

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 <maxime.chevallier@bootlin.com>
---
V1 -> V2: Use the PMA device id to identify which devices need this
	  quirk, based on Andrew's idea.

 drivers/net/phy/marvell10g.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c
index 581b4b6e31e9..2593db608af7 100644
--- a/drivers/net/phy/marvell10g.c
+++ b/drivers/net/phy/marvell10g.c
@@ -232,6 +232,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] & 0xfffffffe) ==
+	       (MARVELL_PHY_ID_88X3310 & 0xfffffffe);
+}
+
 static int mv3310_config_init(struct phy_device *phydev)
 {
 	int ret, val;
@@ -261,6 +278,20 @@ static int mv3310_config_init(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;
+
+		if (val & MDIO_PMA_NG_EXTABLE_2_5GBT)
+			__set_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT,
+				  phydev->supported);
+		if (val & MDIO_PMA_NG_EXTABLE_5GBT)
+			__set_bit(ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
+				  phydev->supported);
+	}
+
 	return 0;
 }
 
-- 
2.19.2


  parent reply	other threads:[~2019-02-07  9:50 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-07  9:49 [PATCH net-next v2 00/10] net: phy: Add support for 2.5GBASET PHYs Maxime Chevallier
2019-02-07  9:49 ` [PATCH net-next v2 01/10] net: phy: Update PHY linkmodes after config_init Maxime Chevallier
2019-02-07 10:31   ` Maxime Chevallier
2019-02-07 13:48   ` Andrew Lunn
2019-02-07 13:55     ` Maxime Chevallier
2019-02-07 18:21       ` Heiner Kallweit
2019-02-07  9:49 ` [PATCH net-next v2 02/10] net: phy: Mask-out non-compatible modes when setting the max-speed Maxime Chevallier
2019-02-07 13:59   ` Andrew Lunn
2019-02-07  9:49 ` [PATCH net-next v2 03/10] net: phy: Move of_set_phy_eee_broken to phy-core.c Maxime Chevallier
2019-02-07 14:01   ` Andrew Lunn
2019-02-07  9:49 ` [PATCH net-next v2 04/10] net: phy: Automatically fill the generic TP, FIBRE and Backplane modes Maxime Chevallier
2019-02-07 14:09   ` Andrew Lunn
2019-02-07 14:49     ` Maxime Chevallier
2019-02-07  9:49 ` [PATCH net-next v2 05/10] net: phy: Extract genphy_c45_pma_read_abilities from marvell10g Maxime Chevallier
2019-02-07  9:49 ` [PATCH net-next v2 06/10] net: phy: Add generic support for 2.5GBaseT and 5GBaseT Maxime Chevallier
2019-02-07  9:49 ` [PATCH net-next v2 07/10] net: phy: marvell10g: Add support for 2.5GBASET Maxime Chevallier
2019-02-07 14:15   ` Andrew Lunn
2019-02-07 23:48   ` Russell King - ARM Linux admin
2019-02-20 10:54     ` Maxime Chevallier
2019-02-07  9:49 ` Maxime Chevallier [this message]
2019-02-07  9:49 ` [PATCH net-next v2 09/10] net: mvpp2: Add 2.5GBaseT support Maxime Chevallier
2019-02-07 14:17   ` Andrew Lunn
2019-02-07  9:49 ` [PATCH net-next v2 10/10] net: phy: marvell10g: add support for the 88x2110 PHY Maxime Chevallier
2019-02-09 13:22 ` [PATCH net-next v2 00/10] net: phy: Add support for 2.5GBASET PHYs Heiner Kallweit
2019-02-09 16:25   ` Andrew Lunn
2019-02-09 16:28     ` Heiner Kallweit
2019-02-11  7:46   ` Maxime Chevallier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190207094939.27369-9-maxime.chevallier@bootlin.com \
    --to=maxime.chevallier@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=antoine.tenart@bootlin.com \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=gregory.clement@bootlin.com \
    --cc=hkallweit1@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=miquel.raynal@bootlin.com \
    --cc=mw@semihalf.com \
    --cc=nadavh@marvell.com \
    --cc=netdev@vger.kernel.org \
    --cc=stefanc@marvell.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).