From 7fe0940c6976209b7860b1824d817f04f0ce4969 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Mon, 26 Oct 2015 10:39:53 +0000
Subject: [PATCH] generic: fix adm6996 init

Kernel 3.14 added aditional genphy_soft_reset phy reset to phy_init_hw in drivers/net/phy/phy_device.c
Since adm6996 does in driver soft reset and doesn't use BMCR_RESET for soft reset
add dummy soft_reset callback to adm6996 driver, like it is done in ar8216.

This fixes ticket #20147

Signed-off-by: Andrej Vlasic <andrej.vlasic0@gmail.com>

SVN-Revision: 47272
---
 target/linux/generic/files/drivers/net/phy/adm6996.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/target/linux/generic/files/drivers/net/phy/adm6996.c b/target/linux/generic/files/drivers/net/phy/adm6996.c
index bf5ed15933..cada4aa5db 100644
--- a/target/linux/generic/files/drivers/net/phy/adm6996.c
+++ b/target/linux/generic/files/drivers/net/phy/adm6996.c
@@ -1099,6 +1099,11 @@ static void adm6996_remove(struct phy_device *pdev)
 		unregister_switch(&priv->dev);
 }
 
+static int adm6996_soft_reset(struct phy_device *phydev)
+{
+	/* we don't need an extra reset */
+	return 0;
+}
 
 static struct phy_driver adm6996_phy_driver = {
 	.name		= "Infineon ADM6996",
@@ -1110,6 +1115,7 @@ static struct phy_driver adm6996_phy_driver = {
 	.config_init	= &adm6996_config_init,
 	.config_aneg	= &adm6996_config_aneg,
 	.read_status	= &adm6996_read_status,
+	.soft_reset	= adm6996_soft_reset,
 	.driver		= { .owner = THIS_MODULE,},
 };
 
-- 
2.30.2