From c342b103ad9eba6e274a277bd1dcb6629ce303ec Mon Sep 17 00:00:00 2001 From: Sham Muthayyan Date: Thu, 27 Jun 2019 13:05:56 +0530 Subject: [PATCH] ipq806x: Reset all PHYs and wait for settling down Allow some time for the phy reset to finish and ready for link negotiation. Change-Id: I72474b7e55ed0d8a091b2b454fe9c3d24c80786b Signed-off-by: Sham Muthayyan --- drivers/net/ipq806x/ipq_gmac_eth.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/ipq806x/ipq_gmac_eth.c b/drivers/net/ipq806x/ipq_gmac_eth.c index ade6092b5b..877d9be6b4 100644 --- a/drivers/net/ipq806x/ipq_gmac_eth.c +++ b/drivers/net/ipq806x/ipq_gmac_eth.c @@ -725,7 +725,7 @@ int ipq_gmac_init(ipq_gmac_board_cfg_t *gmac_cfg) uchar *mac_addr; char ethaddr[32] = "ethaddr"; char mac[64]; - int i; + int i, phy_idx; int ret; int gmac_gpio_node = 0, ar8033_gpio_node = 0, offset = 0; memset(enet_addr, 0, sizeof(enet_addr)); @@ -867,9 +867,12 @@ int ipq_gmac_init(ipq_gmac_board_cfg_t *gmac_cfg) strncpy(bb_miiphy_buses[i].name, gmac_cfg->phy_name, sizeof(bb_miiphy_buses[i].name)); miiphy_register(bb_miiphy_buses[i].name, bb_miiphy_read, bb_miiphy_write); - miiphy_write(bb_miiphy_buses[i].name, - (uintptr_t)ipq_gmac_macs[i]->phy_address, PHY_CONTROL_REG, - BMCR_RESET | AUTO_NEG_ENABLE); + for (phy_idx = 0; phy_idx < ipq_gmac_macs[i]->no_of_phys; phy_idx++) { + miiphy_write(bb_miiphy_buses[i].name, + ipq_gmac_macs[i]->phy_address[phy_idx], PHY_CONTROL_REG, + BMCR_RESET | AUTO_NEG_ENABLE); + mdelay(100); + } } eth_register(dev[i]);