diff options
author | Marko Ratkaj <marko.ratkaj@sartura.hr> | 2017-04-07 13:58:27 +0200 |
---|---|---|
committer | Luka Perkov <luka.perkov@sartura.hr> | 2017-05-14 00:34:03 +0200 |
commit | 1c7b86d57ee6628dd0d447934be4b8e08853b112 (patch) | |
tree | 0a7a79c5015468f91cf406c8c63a7042dfb92037 /target/linux/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch | |
parent | ee1cee2cac67108194f1496c29fead90afff1763 (diff) | |
download | upstream-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/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch')
-rw-r--r-- | target/linux/mvebu/patches-4.9/473-fix-marvell-phy-initialization-issues.patch | 61 |
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; |