imx: ventana: add dt fixup for eth1 mac-address

Ventana boards with a PCI Marvell Sky2 GigE MAC require the MAC address to
be placed in a DT node in order for the mainline linux driver to obtain it.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
This commit is contained in:
Tim Harvey 2016-06-17 06:10:42 -07:00 committed by Stefano Babic
parent 5a08ad6fdc
commit 5c34c2abb8

View File

@ -995,6 +995,32 @@ int fdt_fixup_gw16082(void *blob, int np, struct pci_dev *dev)
return 0; return 0;
} }
/* The sky2 GigE MAC obtains it's MAC addr from device-tree by default */
int fdt_fixup_sky2(void *blob, int np, struct pci_dev *dev)
{
char *tmp, *end;
char mac[16];
unsigned char mac_addr[6];
int j;
sprintf(mac, "eth1addr");
tmp = getenv(mac);
if (tmp) {
for (j = 0; j < 6; j++) {
mac_addr[j] = tmp ?
simple_strtoul(tmp, &end,16) : 0;
if (tmp)
tmp = (*end) ? end+1 : end;
}
fdt_setprop(blob, np, "local-mac-address", mac_addr,
sizeof(mac_addr));
printf(" Added mac addr for eth1\n");
return 0;
}
return -1;
}
/* /*
* PCI DT nodes must be nested therefore if we need to apply a DT fixup * PCI DT nodes must be nested therefore if we need to apply a DT fixup
* we will walk the PCI bus and add bridge nodes up to the device receiving * we will walk the PCI bus and add bridge nodes up to the device receiving
@ -1021,6 +1047,15 @@ void ft_board_pci_fixup(void *blob, bd_t *bd)
if (np > 0) if (np > 0)
fdt_fixup_gw16082(blob, np, dev); fdt_fixup_gw16082(blob, np, dev);
} }
/* ethernet1 mac address */
else if ((dev->vendor == PCI_VENDOR_ID_MARVELL) &&
(dev->device == 0x4380))
{
np = fdt_add_pci_path(blob, dev);
if (np > 0)
fdt_fixup_sky2(blob, np, dev);
}
} }
} }
#endif /* if defined(CONFIG_CMD_PCI) */ #endif /* if defined(CONFIG_CMD_PCI) */