In case of a fixed-link phy the cpsw_adjust_link() function is
called directly in phy_device_attach() and configures the MACCONTROL
register. Right after this configuration cpsw_init() is called and
resets the MACCONTROL register.
Fix this by initializing the slave before connecting the phy device in
cpsw_open().

Signed-off-by: Oleg Karfich <oleg.karf...@wago.com>
---
 drivers/net/cpsw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index b01e7ac..4a8f9e6 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -901,13 +901,13 @@ static int cpsw_open(struct eth_device *edev)
 
        dev_dbg(&slave->dev, "* %s\n", __func__);
 
+       cpsw_slave_init(slave, priv);
+
        ret = phy_device_connect(edev, NULL, slave->phy_id,
                                 cpsw_adjust_link, 0, slave->phy_if);
        if (ret)
                return ret;
 
-       cpsw_slave_init(slave, priv);
-
        return 0;
 }
 
-- 
2.7.4

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to