From 6536b9bb769fe764f4793a1b37a2619391bb2482 Mon Sep 17 00:00:00 2001 From: Joe Hershberger Date: Sun, 22 Mar 2015 17:09:17 -0500 Subject: dm: eth: Add support for ethprime env var The ethprime env var is used to indicate the starting device if none is specified in ethact. Also support aliases specified in the ethprime var. Signed-off-by: Joe Hershberger Reviewed-by: Simon Glass --- net/eth.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'net') diff --git a/net/eth.c b/net/eth.c index a2e6f34..b6c2af3 100644 --- a/net/eth.c +++ b/net/eth.c @@ -360,6 +360,18 @@ int eth_initialize(void) printf("No ethernet found.\n"); bootstage_error(BOOTSTAGE_ID_NET_ETH_START); } else { + char *ethprime = getenv("ethprime"); + struct udevice *prime_dev = NULL; + + if (ethprime) + prime_dev = eth_get_dev_by_name(ethprime); + if (prime_dev) { + eth_set_dev(prime_dev); + eth_current_changed(); + } else { + eth_set_dev(NULL); + } + bootstage_mark(BOOTSTAGE_ID_NET_ETH_INIT); do { if (num_devices) @@ -367,6 +379,9 @@ int eth_initialize(void) printf("eth%d: %s", dev->seq, dev->name); + if (ethprime && dev == prime_dev) + printf(" [PRIME]"); + eth_write_hwaddr(dev); uclass_next_device(&dev); @@ -915,8 +930,20 @@ void eth_set_current(void) act = getenv("ethact"); env_changed_id = env_id; } - if (act != NULL) + + if (act == NULL) { + char *ethprime = getenv("ethprime"); + void *dev = NULL; + + if (ethprime) + dev = eth_get_dev_by_name(ethprime); + if (dev) + eth_set_dev(dev); + else + eth_set_dev(NULL); + } else { eth_set_dev(eth_get_dev_by_name(act)); + } eth_current_changed(); } -- cgit v1.1