[U-Boot] mdio error on ar9344
muaddib
muaddib1981 at mail.ru
Tue Apr 23 11:48:29 UTC 2019
Hi, I am using device based on Atheros AR9344.
When U-Boot initialize net device I get error
mdio_register: non unique device name 'gmac0'
dm tree command shows that eth_ag7xxx is not probed.
ag7xxx_eth_probe -> ag7xxx_mac_probe -> ag933x_phy_setup -> ag933x_phy_setup_reset_set -> ag7xxx_mdio_write -> ag7xxx_mdio_rw
return -ETIMEDOUT
because ag7xxx_switch_reg_read return 0xFFFFFFFF, see below
static int ag7xxx_mdio_rw(struct mii_dev *bus, int addr, int reg, u32 val)
{
u32 data;
unsigned long start;
int ret;
// No idea if this is long enough or too long
int timeout_ms = 1000;
// Dummy read followed by PHY read/write command.
ret = ag7xxx_switch_reg_read(bus, 0x98, &data);
if (ret < 0)
return ret;
data = val | (reg << 16) | (addr << 21) | BIT(30) | BIT(31);
ret = ag7xxx_switch_reg_write(bus, 0x98, data);
if (ret < 0)
return ret;
start = get_timer(0);
// Wait for operation to finish
do {
ret = ag7xxx_switch_reg_read(bus, 0x98, &data);
if (ret < 0)
return ret;
if (get_timer(start) > timeout_ms)
return -ETIMEDOUT;
} while (data & BIT(31));
return data & 0xffff;
}
I use tplink_wdr4320 u-boot profile for my device.
More information about the U-Boot
mailing list