summaryrefslogtreecommitdiff
path: root/board/ti/ti816x
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2017-05-10 12:01:02 -0400
committerTom Rini <trini@konsulko.com>2017-06-28 11:43:39 -0400
commitde8203653f80eb77dc446dd3c67de2269ed03516 (patch)
tree3bb7486db5d2a2c863d4c11b08f5c7145545d903 /board/ti/ti816x
parent08546df976b79b1694af3ff12b26baf2931f371a (diff)
ti816x: Enable ethernet support
The ti816x SoC revision of the ethernet IP block is handled by the "davinci_emac" driver, rather than the "cpsw" driver as done by later members of the family. Enable the relevant plumbing. Signed-off-by: Sriramakrishnan <srk@ti.com> Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com> Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'board/ti/ti816x')
-rw-r--r--board/ti/ti816x/evm.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/board/ti/ti816x/evm.c b/board/ti/ti816x/evm.c
index 577e60f875..9d6c3d6b5d 100644
--- a/board/ti/ti816x/evm.c
+++ b/board/ti/ti816x/evm.c
@@ -9,6 +9,7 @@
#include <common.h>
#include <spl.h>
+#include <netdev.h>
#include <asm/cache.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
@@ -31,6 +32,33 @@ int board_init(void)
return 0;
}
+int board_eth_init(bd_t *bis)
+{
+ uint8_t mac_addr[6];
+ uint32_t mac_hi, mac_lo;
+ struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
+
+ if (!eth_getenv_enetaddr("ethaddr", mac_addr)) {
+ printf("<ethaddr> not set. Reading from E-fuse\n");
+ /* try reading mac address from efuse */
+ mac_lo = readl(&cdev->macid0l);
+ mac_hi = readl(&cdev->macid0h);
+ mac_addr[0] = mac_hi & 0xFF;
+ mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+ mac_addr[2] = (mac_hi & 0xFF0000) >> 16;
+ mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
+ mac_addr[4] = mac_lo & 0xFF;
+ mac_addr[5] = (mac_lo & 0xFF00) >> 8;
+
+ if (is_valid_ethaddr(mac_addr))
+ eth_setenv_enetaddr("ethaddr", mac_addr);
+ else
+ printf("Unable to read MAC address. Set <ethaddr>\n");
+ }
+
+ return davinci_emac_initialize();
+}
+
#ifdef CONFIG_SPL_BUILD
static struct module_pin_mux mmc_pin_mux[] = {
{ OFFSET(pincntl157), PULLDOWN_EN | PULLUDDIS | MODE(0x0) },