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.karfich@xxxxxxxx> --- 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@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox