For DSA support we need to find MAC node by phandle from the switch port node. So, provide of_find_eth_device_by_node() to solve this task. Signed-off-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> --- include/net.h | 1 + net/eth.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/net.h b/include/net.h index ca9b6cd61e..8013f79c2e 100644 --- a/include/net.h +++ b/include/net.h @@ -97,6 +97,7 @@ int eth_open(struct eth_device *edev); void eth_close(struct eth_device *edev); int eth_send(struct eth_device *edev, void *packet, int length); /* Send a packet */ int eth_rx(void); /* Check for received packets */ +struct eth_device *of_find_eth_device_by_node(struct device_node *np); /* associate a MAC address to a ethernet device. Should be called by * board code for boards which store their MAC address at some unusual diff --git a/net/eth.c b/net/eth.c index 762c5dfb8a..06bf5fbe65 100644 --- a/net/eth.c +++ b/net/eth.c @@ -506,6 +506,22 @@ void led_trigger_network(enum led_trigger trigger) led_trigger(LED_TRIGGER_NET_TXRX, TRIGGER_FLASH); } +struct eth_device *of_find_eth_device_by_node(struct device_node *np) +{ + struct eth_device *edev; + int ret; + + ret = of_device_ensure_probed(np); + if (ret) + return NULL; + + list_for_each_entry(edev, &netdev_list, list) + if (edev->parent->device_node == np) + return edev; + return NULL; +} +EXPORT_SYMBOL(of_find_device_by_node); + static int of_populate_ethaddr(void) { char str[sizeof("xx:xx:xx:xx:xx:xx")]; -- 2.30.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox