diff options
author | Tom Rini <trini@konsulko.com> | 2017-05-10 16:01:02 (GMT) |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-06-28 15:43:39 (GMT) |
commit | de8203653f80eb77dc446dd3c67de2269ed03516 (patch) | |
tree | 3bb7486db5d2a2c863d4c11b08f5c7145545d903 /board | |
parent | 08546df976b79b1694af3ff12b26baf2931f371a (diff) | |
download | u-boot-de8203653f80eb77dc446dd3c67de2269ed03516.tar.xz |
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')
-rw-r--r-- | board/ti/ti816x/evm.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/board/ti/ti816x/evm.c b/board/ti/ti816x/evm.c index 577e60f..9d6c3d6 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) }, |