aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorMarko Ratkaj <marko.ratkaj@sartura.hr>2017-04-07 13:58:27 +0200
committerLuka Perkov <luka.perkov@sartura.hr>2017-05-14 00:34:03 +0200
commit1c7b86d57ee6628dd0d447934be4b8e08853b112 (patch)
tree0a7a79c5015468f91cf406c8c63a7042dfb92037 /target/linux
parentee1cee2cac67108194f1496c29fead90afff1763 (diff)
downloadupstream-1c7b86d57ee6628dd0d447934be4b8e08853b112.tar.gz
upstream-1c7b86d57ee6628dd0d447934be4b8e08853b112.tar.bz2
upstream-1c7b86d57ee6628dd0d447934be4b8e08853b112.zip
mvebu: ClearFog Base fix phy init
Fix Marvell PHYs initialization issues and optimize logic for page changing during init Signed-off-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch b/target/linux/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch
new file mode 100644
index 0000000000..8c3089a84e
--- /dev/null
+++ b/target/linux/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch
@@ -0,0 +1,61 @@
+From: Marko Ratkaj <marko.ratkaj@sartura.hr>
+Date: Fri, 7 Apr 2017 13:30:30 +0200
+Subject: [PATCH] fix marvell phy initialization issues
+
+Fix Marvell PHYs initialization issues and optimize
+logic for page changing during init
+
+Board affected with initialization bug:
+ SolidRun ClearFog Base
+
+Signed-off-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
+---
+ drivers/net/phy/marvell.c | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/phy/marvell.c
++++ b/drivers/net/phy/marvell.c
+@@ -361,7 +361,7 @@ static int m88e1111_config_aneg(struct p
+ static int marvell_of_reg_init(struct phy_device *phydev)
+ {
+ const __be32 *paddr;
+- int len, i, saved_page, current_page, page_changed, ret;
++ int len, i, saved_page, current_page, ret;
+
+ if (!phydev->mdio.dev.of_node)
+ return 0;
+@@ -374,7 +374,6 @@ static int marvell_of_reg_init(struct ph
+ saved_page = phy_read(phydev, MII_MARVELL_PHY_PAGE);
+ if (saved_page < 0)
+ return saved_page;
+- page_changed = 0;
+ current_page = saved_page;
+
+ ret = 0;
+@@ -388,7 +387,6 @@ static int marvell_of_reg_init(struct ph
+
+ if (reg_page != current_page) {
+ current_page = reg_page;
+- page_changed = 1;
+ ret = phy_write(phydev, MII_MARVELL_PHY_PAGE, reg_page);
+ if (ret < 0)
+ goto err;
+@@ -411,7 +409,7 @@ static int marvell_of_reg_init(struct ph
+
+ }
+ err:
+- if (page_changed) {
++ if (current_page != saved_page) {
+ i = phy_write(phydev, MII_MARVELL_PHY_PAGE, saved_page);
+ if (ret == 0)
+ ret = i;
+@@ -1192,7 +1190,8 @@ static int marvell_read_status(struct ph
+ int err;
+
+ /* Check the fiber mode first */
+- if (phydev->supported & SUPPORTED_FIBRE) {
++ if (phydev->supported & SUPPORTED_FIBRE &&
++ phydev->interface != PHY_INTERFACE_MODE_SGMII) {
+ err = phy_write(phydev, MII_MARVELL_PHY_PAGE, MII_M1111_FIBER);
+ if (err < 0)
+ goto error;