|
@@ -571,6 +571,23 @@ static void zynq_gem_halt(struct udevice *dev)
|
|
|
ZYNQ_GEM_NWCTRL_TXEN_MASK, 0);
|
|
|
}
|
|
|
|
|
|
+__weak int zynq_board_read_rom_ethaddr(unsigned char *ethaddr)
|
|
|
+{
|
|
|
+ return -ENOSYS;
|
|
|
+}
|
|
|
+
|
|
|
+static int zynq_gem_read_rom_mac(struct udevice *dev)
|
|
|
+{
|
|
|
+ int retval;
|
|
|
+ struct eth_pdata *pdata = dev_get_platdata(dev);
|
|
|
+
|
|
|
+ retval = zynq_board_read_rom_ethaddr(pdata->enetaddr);
|
|
|
+ if (retval == -ENOSYS)
|
|
|
+ retval = 0;
|
|
|
+
|
|
|
+ return retval;
|
|
|
+}
|
|
|
+
|
|
|
static int zynq_gem_miiphy_read(struct mii_dev *bus, int addr,
|
|
|
int devad, int reg)
|
|
|
{
|
|
@@ -644,6 +661,7 @@ static const struct eth_ops zynq_gem_ops = {
|
|
|
.free_pkt = zynq_gem_free_pkt,
|
|
|
.stop = zynq_gem_halt,
|
|
|
.write_hwaddr = zynq_gem_setup_mac,
|
|
|
+ .read_rom_hwaddr = zynq_gem_read_rom_mac,
|
|
|
};
|
|
|
|
|
|
static int zynq_gem_ofdata_to_platdata(struct udevice *dev)
|