diff mbox series

net: phy: micrel: ksz8061 implement errata 80000688A fix

Message ID 20200326035401.594802-1-bod@denx.de
State Accepted
Commit baafd99d13931312ff3e2c1c75922d8a46222f7f
Headers show
Series net: phy: micrel: ksz8061 implement errata 80000688A fix | expand

Commit Message

Bryan O'Donoghue March 26, 2020, 3:54 a.m. UTC
Linux commit 232ba3a51cc2 ('net: phy: Micrel KSZ8061: link failure after
cable connect') implements a fix for the above errata.

This patch replicates that errata fix in an ksz8061 specific init routine.

Signed-off-by: Bryan O'Donoghue <bod at denx.de>
---
 drivers/net/phy/micrel_ksz8xxx.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Joe Hershberger March 30, 2020, 8:10 p.m. UTC | #1
On Thu, Mar 26, 2020 at 6:25 AM Bryan O'Donoghue <bod at denx.de> wrote:
>
> Linux commit 232ba3a51cc2 ('net: phy: Micrel KSZ8061: link failure after
> cable connect') implements a fix for the above errata.
>
> This patch replicates that errata fix in an ksz8061 specific init routine.
>
> Signed-off-by: Bryan O'Donoghue <bod at denx.de>

Acked-by: Joe Hershberger <joe.hershberger at ni.com>
diff mbox series

Patch

diff --git a/drivers/net/phy/micrel_ksz8xxx.c b/drivers/net/phy/micrel_ksz8xxx.c
index e27fc45a28..a96813fcfe 100644
--- a/drivers/net/phy/micrel_ksz8xxx.c
+++ b/drivers/net/phy/micrel_ksz8xxx.c
@@ -81,6 +81,21 @@  static struct phy_driver KSZ8051_driver = {
 	.shutdown = &genphy_shutdown,
 };
 
+static int ksz8061_config(struct phy_device *phydev)
+{
+	return phy_write(phydev, MDIO_MMD_PMAPMD, MDIO_DEVID1, 0xB61A);
+}
+
+static struct phy_driver KSZ8061_driver = {
+	.name = "Micrel KSZ8061",
+	.uid = 0x00221570,
+	.mask = 0xfffff0,
+	.features = PHY_BASIC_FEATURES,
+	.config = &ksz8061_config,
+	.startup = &genphy_startup,
+	.shutdown = &genphy_shutdown,
+};
+
 static int ksz8081_config(struct phy_device *phydev)
 {
 	int ret;
@@ -209,6 +224,7 @@  int phy_micrel_ksz8xxx_init(void)
 	phy_register(&KSZ804_driver);
 	phy_register(&KSZ8031_driver);
 	phy_register(&KSZ8051_driver);
+	phy_register(&KSZ8061_driver);
 	phy_register(&KSZ8081_driver);
 	phy_register(&KS8721_driver);
 	phy_register(&ksz8895_driver);