netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Roese <sr@denx.de>
To: netdev@vger.kernel.org
Cc: Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	"David S . Miller" <davem@davemloft.net>
Subject: [PATCH] net: phy: marvell: Add errata section 5.1 for Alaska PHY
Date: Tue, 15 Mar 2022 08:48:27 +0100	[thread overview]
Message-ID: <20220315074827.1439941-1-sr@denx.de> (raw)

From: Leszek Polak <lpolak@arri.de>

As per Errata Section 5.1, if EEE is intended to be used, some register
writes must be done once after every hardware reset. This patch now adds
the necessary register writes as listed in the Marvell errata.

Without this fix we experience ethernet problems on some of our boards
equipped with a new version of this ethernet PHY (different supplier).

The fix applies to Marvell Alaska 88E1510/88E1518/88E1512/88E1514
Rev. A0.

Signed-off-by: Leszek Polak <lpolak@arri.de>
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: David S. Miller <davem@davemloft.net>
---
 drivers/net/phy/marvell.c | 42 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index 2429db614b59..0f4a3ab4a415 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -1179,6 +1179,48 @@ static int m88e1510_config_init(struct phy_device *phydev)
 {
 	int err;
 
+	/* As per Marvell Release Notes - Alaska 88E1510/88E1518/88E1512/
+	 * 88E1514 Rev A0, Errata Section 5.1:
+	 * If EEE is intended to be used, the following register writes
+	 * must be done once after every hardware reset.
+	 */
+	err = marvell_set_page(phydev, 0x00FF);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 17, 0x214B);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 16, 0x2144);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 17, 0x0C28);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 16, 0x2146);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 17, 0xB233);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 16, 0x214D);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 17, 0xCC0C);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 16, 0x2159);
+	if (err < 0)
+		return err;
+	err = marvell_set_page(phydev, 0x00FB);
+	if (err < 0)
+		return err;
+	err = phy_write(phydev, 07, 0xC00D);
+	if (err < 0)
+		return err;
+	err = marvell_set_page(phydev, MII_MARVELL_COPPER_PAGE);
+	if (err < 0)
+		return err;
+
 	/* SGMII-to-Copper mode initialization */
 	if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
 		/* Select page 18 */
-- 
2.35.1


             reply	other threads:[~2022-03-15  7:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-15  7:48 Stefan Roese [this message]
2022-03-15 14:39 ` [PATCH] net: phy: marvell: Add errata section 5.1 for Alaska PHY Andrew Lunn
2022-03-15 16:09 ` Marek Behún
2022-03-17  6:43   ` Stefan Roese
2022-03-17 12:52     ` Marek Behún

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=20220315074827.1439941-1-sr@denx.de \
    --to=sr@denx.de \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=hkallweit1@gmail.com \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    /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).