[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